Thanks to visit codestin.com
Credit goes to Github.com

Skip to content

TomoeMami/bangumi.el

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 

Repository files navigation

bangumi.el

Emacs Org-mode 与 bangumi.tv / bgm.tv 联动工具

简介

bangumi.el 是一个 Emacs 插件,旨在将您的 Bangumi.tv (BGM) 追番进度与 Org Mode 文件同步。通过这个插件,您可以在 Org Mode 中直接更新您在 Bangumi 上的动画、书籍等条目的观看/阅读状态和进度。

本插件主要提供以下功能:

  • 状态同步: 根据 Org Mode 标题的 TODO 关键字(如 TODO, DONE, HOLD 等)自动更新对应 Bangumi 条目的收藏状态(在看、看过、想看、搁置、抛弃)。
  • 进度同步: 自动将 Org Mode 中标题内记录的 [已看集数/总集数] 格式的进度同步到 Bangumi,标记对应集数为已看。
  • 异步执行: 进度更新是异步执行的,避免在操作过程中卡顿 Emacs。
  • 代理支持: 支持通过代理访问 Bangumi API。

依赖

本插件需要以下依赖:

plz: 一个 Emacs 的 HTTP 客户端库。

请确保在您的 Emacs 配置中已经安装并加载了这些包。

安装与配置

将 bangumi.el 文件放置到您的 Emacs load-path 中。

在您的 Emacs 配置文件 (如 init.el) 中添加以下代码:

(use-package plz :ensure t)
(require 'bangumi)

或者在31之后的Emacs中,通过内置的vc方式下载:

(use-package bangumi :demand t
  :vc (:url "[email protected]:TomoeMami/bangumi.el"
            :rev :newest))

Bangumi Access Token

您需要从 Bangumi 开发者后台获取您的 Access Token。访问 https://bgm.tv/dev/app/create 创建一个新应用以获取 Token。

设置 Token 变量

在您的配置文件中设置 my/bgm-token 变量:

(setq my/bgm-token "YOUR_BANGUMI_ACCESS_TOKEN")

代理设置

默认不开启代理。如果您需要开启代理,可如下修改变量 my/bgm-plz-proxy

(setq my/bgm-plz-proxy "--proxy" "http://YOUR_PROXY_ADDRESS:PORT")

使用方法

在 Org Mode 中关联 Bangumi 条目

在一个 Org Mode 标题下,添加一个名为 BGM 的属性,其值为对应 Bangumi 条目的 subject ID。

* TODO [1/12] 某某动画
  :PROPERTIES:
  :BGM:      123456
  :END:

这里的 123456 就是该动画在 Bangumi 上的 subject ID

更新观看状态

通过更改 Org 标题的 TODO 关键字来更新 Bangumi 上的收藏状态。这会通过 my/bgm-update-subject 函数实现。

TODO在看
DONE看过
HOLD想看
XXXX抛弃
无TODO关键字搁置

您可以将 my/bgm-update-subject 函数添加到一个 hook 中,例如 org-trigger-hook ,以便在状态变更后自动触发。

(add-hook 'org-trigger-hook #'my/bgm-update-subject)

更新观看进度

在带有 BGM 属性的标题中,使用 [已看集数/总集数] 的格式来记录进度,例如 [3/12] 。当这个数字发生变化时, my/bgm-update-episodes 函数会被触发,自动将前 3 集在 Bangumi 上标记为已看。

为了实现自动化,可以将 my/bgm-update-episodes 添加到合适的 hook 中,例如在 checkbox 状态变化时触发。

;; 这是一个示例,您可能需要根据您的工作流进行调整
(add-hook 'org-checkbox-statistics-hook #'my/bgm-update-episodes)

函数说明

my/bgm-mark-read-episodes

my/bgm-mark-read-episodes SUBJECT READCOUNT

更新指定 subject 的观看进度。它会获取未读的章节,并标记 readcount 数量的章节为已读。

my/bgm-update-episodes

my/bgm-update-episodes 

一个交互式函数,设计用于在 Org Mode 的 hook 中异步调用。它会解析标题中的进度 [X/Y] ,并调用 my/bgm-mark-read-episodes 来在后台更新 Bangumi 上的进度。

my/bgm-update-subject

my/bgm-update-subject CHANGE-PLIST

一个交互式函数,用于同步 Bangumi 条目的收藏状态。它会根据 Org 标题的 TODO 关键字来发送更新请求。

条件判断函数

my/bgm-update-subject-conditions
my/bgm-update-episodes-conditions

两个条件判断函数,单独提取出来以便用户覆盖式自定义

About

bangumi.tv or bgm.tv in emacs org-mode

Resources

Stars

Watchers

Forks

Packages

No packages published