Blog

手机上发布文章

聊天时提到这个,目前基于静态站点生成器的博客发布文章动作繁琐,本地打开文件,提交到 GitHub。如果能够降低博客写作的启动成本,可能有助于更高产一点。本篇博客记录如何在手机上写作并且发布博客。

手机上 markdown 写作的软件非常多,无论是免费还是付费都有很多解决方案,例如大名鼎鼎的 Ulysses ,为了不付费,我这里使用免费版本的 Drafts,这段文字就是在 Drafts 中完成的。

解决了写作的问题,还有发布的问题,主要解决如何将文章文件添加到 GitHub Repo 中。通过 Drafts 中的分享目录可以将文章保存到 Dropbox 中,但是重命名需要手动。之后要解决的就是如何触发提交到 GitHub Repo 的动作。没有经过太多思考,直接在本地 homelab 中虚拟机中启用一个常驻进程 auto_make_post,当文件系统监测到 posts 目录发生变化后(可以根据需要监测文件创建、修改、删除等事件),自动执行 make post 命令,主要操作就是 git add . && git commit && git push. 由于都是在本地机器,也不需要考虑鉴权认证的问题。

以上是一个粗糙的方案,主要效果是:手机上使用 Drafts 写作后,保存到 Dropbox 对应 posts 目录,Dropbox 同步到 homelab 上后,触发 auto_make_post,自动将新文章提交到 Github Repo, 后续 CI系统自动发布文章。

用 Calibre 把有趣的博客历史文章转换成电子书

偶尔在网上会碰到有意思的个人博客,欣喜之余第一件事情便是寻找 RSS 链接添加到 miniflux 订阅中,但是对于历史文章怎么解决呢?毕竟 RSS 阅读器一般只会抓取最近几十条。正常情况下,我是一般会翻上个几页看看,把感兴趣的添加到 Instapaper 等服务中稍后阅读,或者直接把网页保存到方便的地方,有空的时候在手机上用浏览器翻阅。但是对于历史文章多的博客,这么操作总会遗漏可能感兴趣的文章。最近又遇到这个问题,便准备找方案将历史博文打包成电子书放到 Kindle 上阅读。依稀记得很久之前看到过类似的需求,但是没有找到,搜索后发现找到的大部分方案都是基于 Calibre 的新闻抓取功能。

Calibre 是知名的电子书管理软件,且有抓取新闻的功能,自带了不少新闻网站,还可以添加自定义的新闻来源。正是利用其自定义新闻来源的功能,我们可以添加自己的 Python 脚本,在 Calibre 中称为 recipe,进去文章的抓取并制作成 mobi 格式的电子书,之后需要 epub 直接利用 Calibre 强大的转换功能即可。

Recipe 的编写主要是编写继承自 BasicNewsRecipe 的类,主要需要修改的函数为 parse_index(),该函数抓取索引页,返回文章的名称及链接,这里用到的主要是 BeautifulSoup 这个类,观察分析网站源码的 html 结构即可自定义出自己需要的 recipe。我将自己抓的两个博客使用的 recipe 放到 Github 上的 blog-to-ebook 仓库了,有兴趣可以参考修改使用。为了方便调试,在上面的代码仓库中还有不依赖 Calibre 函数库的测试文件 test.recipe.py

下面的参考链接包括 Calibre 的文档和 recipe 继承类的源代码,以及其他相关文章,供参考。相似项目是 Github 上其他 recipe 的仓库。

参考链接 #

相似项目 #