emacs-org-mode中同步bangumi的收看进度
(部分)同步Bangumi的观看进度。
完全同步内容:某一条目的观看情况(在看、看过、抛弃)。
部分同步内容:某一条目章节的观看情况,只能增不能减。
1. 基础配置
需要安装 plz
包以处理HTTP请求。
后面的具体配置细则请直接复制粘贴即可
;; 在这里 https://next.bgm.tv/demo/access-token 申请token,然后取消下一行的注释并填入你的TOKEN
;; (setq my/bgm-token "YOUR-BANGUMI-ACCESS-TOKEN")
(require 'bangumi)
(defun my/bgm-update-subject-conditions (subject todo)
"将条件判断单独提取出来,便于用户自定义"
(and subject
(not (and (org-entry-get nil "RESCHEDULE_CRON") (or (string-equal todo "DONE") (string-equal todo "TODO"))))))
(setq my/bgm-plz-proxy '("--proxy" "http://127.0.0.1:7890"))
;; 在TODO关键字变化时触发更新subject
(add-hook 'org-after-todo-state-change-hook #'my/bgm-update-subject)
;; 在checkbox统计数字变化时触发更新episode
(add-hook 'org-checkbox-statistics-hook #'my/bgm-async-update-episodes)
my/bgm-update-subject-conditions
函数,以便用org-reschedule-by-rule包重复,参见emacs-使用cron风格设置任务重复。
2. 使用方法
首先是创建一个不含TODO关键字的heading,然后按 C-c C-x p
为其输入 BGM
的属性,具体值为Bangumi网站上的对应值(如该条目的页面网址为 https://bgm.tv/subject/454684 ,则应输入 454684。
\*** AveMujica
:PROPERTIES:
:BGM: 454684
:END:
然后变更其TODO状态,如果变成TODO,则Bangumi网站上会同步变为在看;变到DONE,则同步变为看过;变到XXXX,则同步变为抛弃。
\*** TODO AveMujica
:PROPERTIES:
:BGM: 454684
:END:
最后,为其添加checkbox以及checkbox的统计。
\*** AveMujica[0/12]
:PROPERTIES:
:BGM: 454684
:END:
1. [ ]
2. [ ]
3. [ ]
4. [ ]
5. [ ]
6. [ ]
7. [ ]
8. [ ]
9. [ ]
10. [ ]
11. [ ]
12. [ ]
当你调整一个checkbox之后,进度统计变成 [N/12]
,则会将Bangumi网站上前 N
章的观看进度设置为已看。
3. 注意事项
注意,这里我偷了一个懒,观看进度是根据 [0/12]
的前面数字判断的。如果你跳跃式观看,比如只看了第2、3、4集,checkbox统计数据会变成 [3/12]
,则以上代码依然会自动标记前3集为已读。
所以说是(部分)同步,实际上只有TODO关键词可以完全同步,观看进度只能增不能减(心虚)。