沧州网站设计多少钱,电脑网站建设在哪里,网站开发自学还是培训,阿里邮箱登录文章目录 往期效果将文章信息导出适配 hexo 的文章模板导出的文章路径问题终端控制执行脚本代码整理结尾 往期
Puppeteer 使用实战#xff1a;如何将自己的 CSDN 专栏文章导出并用于 Hexo 博客#xff08;二#xff09; 效果 写了一个 node 脚本用来批量处理 md 文件 本期… 文章目录 往期效果将文章信息导出适配 hexo 的文章模板导出的文章路径问题终端控制执行脚本代码整理结尾 往期
Puppeteer 使用实战如何将自己的 CSDN 专栏文章导出并用于 Hexo 博客二 效果 写了一个 node 脚本用来批量处理 md 文件 本期用的基本上是 node 添加终端控制
将文章信息导出
首先在爬取专栏页数的时候就收集好了信息我们把信息导出到外部 json 然后再脚本里引入 就可以使用这个 json 了
const id2info JSON.parse(await fs.readFileSync(${__dirname}\\id2info.json, utf-8)
);适配 hexo 的文章模板
我们可以看到 hexo 的每一个 page 是有一些配置的我也想给导出的这些文章批量设置一下 观察一下导出的文件可以得出一些规律
文章开头有 toc[] 或者 toc[](文字)然而 hexo 并不支持需要替换掉有些文章没有这些就可以在内容开头直接添加即可 这里我是使用正则直接匹配分割
const reg /\\[toc\]\(.*?\)|\\[toc\]/i;
// ....
const content fs.readFileSync(eachArticlePath, utf8);
/*** 拼接文章内容文章分两种情况* - 一种是头部有 [toc]()之类的* - 另一种是什么都没有的*/
if (content.match(reg) ! null) {const splitContent content.split(reg)[1];afterContent ${replaceContent}\n${splitContent};
} else {afterContent ${replaceContent}\n${content};
}导出的文章路径问题
通过 csdn 导出的文章如果 title 中有一些特殊符号的那么导出的时候会帮你替换成 _因为 Windows 中不允许特殊字符在路径中 为了不改变之前的 title我又写了一个 filePath 专门用来读文章
终端控制执行脚本
这里写了个终端的函数如果选择 y那么就执行脚本 需要引入 readline 以及 exec 简单的使用逻辑可以看一下我写的
import readline from readline;
import { exec } from node:child_process;
// ...
const rl readline.createInterface({input: process.stdin,output: process.stdout,
});
rl.question(是否立即处理成 hexo 文章? y/n, (answer) {if (answer y) {// 执行 npm run build 命令exec(modify.cmd, (err, stdout, stderr) {if (err) {console.error(err);return;}console.log(处理完成);rl.close();});} else {rl.close();}
});其中的 cmd 命令很简单就是 node 脚本.js 即可运行
代码整理
花了点时间抽离了一下代码这样入口文件更简洁了每个功能也都独立出来方便修改和查错欢迎使用并 start ~代码仓库 结尾
基本上文章已经批量处理好了可以放到 hexo 里生成了