net: 笔记系统构建

起因

为了将之前无聊搞出来的博客网站融入到我的整个笔记管理之中,实现笔记管理与博客推送的结合。我对原有的笔记结构进行了改进,想能更加便捷的发布博客。后来又想着一不做二不休,干脆自己再写个简单的脚本实现博客的一键推送。于是,我就写了这篇文章记录我的实现过程。

自动推送前准备

主要是在obsidian上做修改,因为我之前就是用obsidian做笔记的。
你可以了解一下obsidain,比如观看这个视频

obsidian设置修改

1. 修改了笔记模板

  • 在笔记模板前加入了yml头,因为没有yml头的md文件是无法作为博客发出的
    • 不知道yml头的可以看我之前发的文章或者直接百度。
    • net一栏是我管理本地笔记的方法,不属于yml头,不用在意。

2. 将obsidian的wiki链接关掉

  • obsidian作为一款markdown编辑器,其特色之一就是支持wiki链接,但是我们的博客指认传统的markdown语法
    • 强烈推荐使用obsidian作为你的笔记管理软件,真的非常强大。
  • 还有就是记得将内部链接类型改为“基于当前笔记的相对路径”

3. obsidian指定附件文件夹为images

笔记仓库与博客仓库结构

原来的笔记仓库结构

  • 大概是这样的

    顾名思义,分别存放着日记、图片(附件)、参考资料、笔记模板、周记与zk笔记。
    关于zk笔记的部分我是参考的这个视频有兴趣可以看一下。

后来的笔记仓库结构

  • 就是这样的

    对,只是将zk笔记分了一下类而已,其中post是我要发布为博客的笔记。

  • 至于为什么要这样做,给你们看看blog仓库的构造应该就知道了。

    其他的不用管,只看 source 文件夹里面的_post 与 images,这两个就是博客文章及其图片的存放文件夹。

也就是说,我们只要在笔记仓库里写好文章,将文章放入 post 文件夹,其中插入的图片会默认放在images文件夹中,然后将笔记仓库里的 post 与 images 和blog仓库里的_post 与images进行同步再输入hexo命令三连就可以实现博客的上传。所以现在我们只要解决同步问题就可以了

freefilesync——文件同步备份软件

  • 为了实现两个文件夹的同步,可以下载freefilesync软件(这个软件我在以前一直用于文件备份,没想到还能用在这)
  • 它的使用也非常简单,在两侧分别选择你要同步的文件夹,点击比较就会显示两个文件夹的差别,确认后点击同步就可以是两侧文件同步。
  • 于是利用这一点,我实现了笔记仓库里的 post 与 images 和blog仓库里的_post 与images的同步。

自动推送的实现

脚本设计

由于需求很简单,只要两侧文件夹同步,然后再用hexo命令三连推送即可,问题是如何不打开freefilesync,只靠命令就可以调用freefilesync进行文件的同步。

好巧不巧的是,freefilesync自带将配置保存为批处理作业文件的功能,,这个文件可以直接被windows的命令调用,只要我们将同步任务配置好,将其保存为批处理作业文件即可。

比如实现post与_post的同步

  1. 在两侧分别选择post和_post文件夹
  2. 点击右上角的另存为的两个图标的右边的那个,就可以将当前配置存在文件中
  3. 去一个易于区分的名字比如 post_sync
  4. 在命令台输入以下命令即可使文件同步
    1
    call post_sync.ffs_batch

    images的同步同理

脚本实现

接下来只需要将命令写在一个.bat文件里即可,下面就是最终的代码。

1
2
3
4
5
6
7
@echo on

call images_sync.ffs_batch

call post_sync.ffs_batch

hexo clean && hexo g && hexo d && start https://wocaodiande.github.io/ && pause
  • @echo on 是指打开回显,即运行过程会以命令台上显示在窗口,不想看到可以将“on”改成“off”
  • call images_sync.ffs_batch 和 call post_sync.ffs_batch 是调用软件同步图片和博文
  • hexo clean && hexo g && hexo d 就是我提到的 hexo 三连,将博文推送到网站
  • start https://wocaodiande.github.io/ 就是打开默认浏览器访问我的博客网站,检查是否有异常
  • pause 是指脚本运行完后,命令台不会自动关闭,要让其自动关闭可以不写

注意!!

  • images_sync.ffs_batch、 call post_sync.ffs_batch 和 .bat 脚本文件最好都放在blog文件夹的根目录里
    • 否则调用images_sync.ffs_batch和 call post_sync.ffs_batch时要补全其地址
    • 在使用hexo三连前,使用 cd 命令跳转到 blog 的根目录上
  • 使用 call images_sync.ffs_batch 或 call post_sync.ffs_batch 时,不能直接调起freefilesync进行同步,很有可能是你动了这个软件的地址,建议卸了重装
    • 所以一定不要手贱去改软件安装文件夹的名字,血泪的教训。
  • hexo 的命令之后的语句最好用&&连接都写在一行,不然的话可能会运行完hexo clean 脚本就自动停止了
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #错误示范
    @echo on
    call images_sync.ffs_batch
    call post_sync.ffs_batch
    hexo clean
    hexo g
    hexo d
    start https://wocaodiande.github.io/
    pause
    #这样写的话可能连hexo clean都没运行完就把脚本给你掐了,我也不知道为啥,你可以试试
    #没出错的话务必和我联系

顺嘴提一句

可以在桌面上建个bat脚本的快捷方式,这样只要编辑完了一篇文章就可以在桌面直接双击推送了。

你能看到这篇文章就说明我的脚本有效了,否则你就看不到这篇文章(废话)。

顺便再推荐一下 obsidian,就是单纯的作为笔记软件,真的很好用(赞赏)。


References