🚀用脚本助力博客搬家

简介: 🚀用脚本助力博客搬家

image.png

前言

由于某书慢慢变的热门推荐文章标题诡异,内容垃圾,登录麻烦等问题,又由于掘金社区的慢慢壮大,后来就慢慢写文章就主要在掘金社区了,但是在简书上写了好几年的笔记和文章,掘金到目前为止还不支持简书文章直接自动搬运,好在支持通过 Markdown 文件导入的方式搬运,由于之前已经通过脚本下载好了(用js脚本下载某书的所有文章),直接把本地的文章 Markdown 文件导入就行了,没想到,这只是个开始,本地导入后无法直接在线修改文章名称

下载到本地的文章

由于简书是 文集 的方式进行文章的分类,我用脚本下载后文章名称加了一个 文集 并用 - 进行拼接,方便本地浏览分类


image.png


选择文件后如下效果


image.png

发现无法修改要发布文章的名称,手动删除 文集 名称和 - 后发布会把 《》 也带上去,然后根据 文集 类型手动改了一个 文集 中的所有文章,发现手改太痛苦了,由于本地文章和未发布的笔记超过两三百篇,这次要搬运的文章两百多篇,手改好两百个文件名再手动拖上去选择分类和标签岂不是要改死了,要不写个 node 脚本处理一下?

脚本实现的目标

运行脚本,脚本读取某个目录下的 Markdown 文件,然后修改文件名,根据 -《》 来判断,得到导入后发布的文章名称

开始实现

初始化node项目

建立一个 server.js 文件,在同级目录下控制台中执行 npm init 命令,默认一直敲回车 node 项目就初始化好了


image.png


先建一个 test-file 文件,里面放几个 Markdown 文件用来做测试


image.png

安装 pathfs 模块,path 用来读取文件路径, fs 用来修改文件

npm i path fs -D

获取路径

引入 path 模块,使用 path.join 获取 test-file 文件夹路径

const path = require("path");
const url = path.join('C:', 'Users', 'qingy', 'Desktop', '新建文件夹', 'script', 'test-file');
console.log('url: ', url)

image.png

读取路径下的文件并分割

使用 fs.readdir 读取路径下的所有文件,获取文件列表后,循环处理文件,先是将 - 分割文件得到带 《》 文件名的名称数组,再单独分割 就得到了要发布的文章名称,使用 fs.rename 修改原文件名称,这里要注意文件路径的拼接,由于整体逻辑具有关联性,直接把整段代码贴了出来,在代码对应的地方添加注释方便理解,如下

fs.readdir(url, "utf8", (err, fileList) => {
  if (err) throw err;
  console.log(fileList);
  fileList.forEach((item, index) => {
    console.log("index: " + index);
    console.log(item);
    // 第一次分割,得到带《》的文件名称数组
    const arr = item.split(" - ");
    if (arr.length > 1) {
      console.log("arr", arr);
      // 第二次分割《》,得到文章名称和文件后缀名
      const nameArr = arr[1].split("《")[1].split("》");
      console.log("nameArr: ", nameArr);
      // 拼接得到掘金自动导入的文件名称效果
      const fileName = nameArr[0] + nameArr[1];
      console.log("fileName: ", fileName);
      // 更新文件名称
      const old = url + "\\" + item;
      console.log("old: " + old);
      const newName = url + "\\" + fileName;
      console.log("new: ", newName);
      fs.rename(url + "\\" + item, url + "\\" + fileName, (err) => {
        throw err;
      });
    } else {
      console.log("文件名称不符合预期格式");
    }
  });
});

脚本写完后,执行如下命名运行脚本

node server.js

执行脚本后,文件名的效果

image.png


到这里脚本就已经把该做的都做完了,剩下的就是按文集分类导入,这样可以统一选择文章类型和标签

完整代码链接

github.com/gywgithub/F…

文章导入文件失败

在实际操作中发现,如果是一次选择了多篇文章,点击 导入并发布 按钮会出现导入成功 x 篇,失败 x 篇的情况,这部分可能是导入工具的实现没有做相应的优化,继续点击 导入并发布 按钮导入就可以了


image.png

扩展

由于自己日常前端开发为主,node 相关的稍微熟悉一点,脚本以实现目的为主,也有其他的更优雅的实现和思路;关于博客搬家,还有一个 官方协助导入发布,有 JYM 用过这个功能吗?体验如何呢?

image.png

目录
相关文章
|
5月前
|
存储 运维 安全
隐语第二期学习内容随笔
数据要素在采集、存储等环节内外循环,数据持有方需确保内外循环中的数据安全与管控。信任焦虑源于数据权属等问题,依赖技术信任解决。隐私计算原则与开源隐语技术保障隐私安全。数据资产化驱动价值释放,技术信任促进流通,强调数据安全、隐私和信任的核心地位。
41 0
|
2月前
|
缓存 前端开发 Linux
哇塞!NPM 缓存竟成开发拦路虎?快来掌握清空秘籍,开启前端开发逆袭之旅!
【8月更文挑战第20天】NPM是前端开发中管理依赖的关键工具。有时需清空其缓存以解决版本不一致或包损坏等问题,确保使用最新依赖。可通过命令`npm cache clean --force`强制清空全部缓存,或手动删除各系统下的缓存文件夹。注意清空缓存可能延长后续安装时间,建议事先备份依赖或确保可重新安装。正确管理缓存有助于提升开发效率。
39 1
|
3月前
|
分布式计算 数据可视化 大数据
阿里云大牛熬夜整理的Python大数据小抄,GitHub星标125K!
Python 是一种流行的编程语言,在大数据领域有广泛的应用。Python 拥有丰富的库和工具,可用于数据处理、分析和可视化。 在大数据处理方面,Python 可以与 Hadoop、Spark 等大数据框架集成,实现大规模数据的处理和分析。它也适用于数据清洗、数据转换、数据挖掘等任务。 此外,Python 的数据分析库如 Pandas、NumPy 和 Matplotlib 等,提供了强大的数据处理和可视化功能,使得数据分析变得更加简单和高效。
|
5月前
|
前端开发 JavaScript
🚀用脚本助力博客搬家
🚀用脚本助力博客搬家
61 0
|
5月前
|
存储 监控 安全
隐语第一期学习内容随笔
构建基于技术信任的数据可信流通体系,确保数据传输、处理、存储安全可控,防范持有权风险和越权使用导致的数据泄露、篡改。密态数据和密态天空计算强化数据安全,实现跨云互联。内外循环管理数据安全域,全程保障涉及身份确认、利益对齐等环节,依赖先进加密和跨域管控技术。
42 0
|
程序员
在技术社区编写技术博客的一些心得体会
在技术社区编写技术博客的一些心得体会
|
存储 Python
Python3:我只用1行代码就下载全网视频,我被我的才华和颜值征服了!!
Python3:我只用1行代码就下载全网视频,我被我的才华和颜值征服了!!
100 0
下一篇
无影云桌面