毛象书签下载
发布于
# 工具
自用工具。放在这里:
在毛象上看到喜欢的嘟文(toot),有三种行为:
- 转发
- 点赞
- 书签
当我下载毛象的备份,unzip 之后发现里面有 bookmarks.json,文件的结构很简单,里面的 orderedItems 记录了我收藏的一条一条 toot 的链接,如果这个 toot 是公开的话,点击就只能能在浏览器中看到。
有一些 toot 是我收藏的长文,真的很长,我想把他们下载到本地变成 html 或者 pdf 来阅读。就让 Python 来帮我做这件事。
bookmarks.json -> html
主要就三个步骤:
- bookmarks.json → url csv
- url csv -> bookmarks.jsonl
- jsonl -> html
把 bookmarks.json 放到脚本目录下,然后运行:
python mbd_json_to_csv.py bookmarks.json
这个会自动生成 output/bookmarks.csv,并且告知有多少条 url 写到了 output/bookmarks.csv.
然后运行:
python mbd_csv_to_jsonl.py output/bookmarks.csv
这个是抓取 一条一条 url 来写到 jsonl 文件,注意有一个默认的 sleep 0.25s,每次抓取,“给服务器喘口气,也保护你自己不被封。”所以根据你数据的多少可能需要等待足够的时间,你可以让它 run 着,然后做自己的,会每隔 20条打印一下进度
最后运行:
python mbd_jsonl_to_html.py output/bookmarks.jsonl
这样生成 html 文件夹,以及里面的 page.
html -> pdf
html to pdf 有很多选择,但我最喜欢用 Chrome print 的方法。如果页数少可以直接打开 command + P,但是我有很多页,所以我用 Chrome 的打印方法,并且去掉页眉页脚:
mkdir -p pdf
for f in html/page_*.html; do
base=$(basename "$f" .html)
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
--headless \
--disable-gpu \
--print-to-pdf-no-header \
--print-to-pdf="pdf/$base.pdf" \
"$f"
done
这样我就有了 pdf 文件夹和里面的 pdf,最终使用 Automator 合成到一个 pdf,放在电子阅读器上美美的读。当然也可以自己看一下最后的参数,生成一大页的 pdf,然后转 epub 之类的格式。里面可能有一些空白的网页和 pdf,我想大概是需要授权才能抓的 toot ,但已经足够了,我很满意。