通过Webhook调用 Bangumi Api,实现在客户端看完后自动同步打格子。
已适配Plex、Emby、Jellyfin。
请保证Python版本3.7以上,并安装以下依赖
pip install requests fastapi pydantic uvicorn[standard]
下载 zip并解压到任意文件夹。 发布页
双击 start.bat
,无报错即可
如果你希望修改默认端口号,可以用文本编辑器打开start.bat
,修改--port 8000
为--port 你的自定义端口号
调试中,后续支持
username
、access_token
、single_username
三项bangumi-mapping
根据实际匹配情况自行配置,如果没有发现匹配失败的条目则无需填写运行Bangumi-syncer
在观看平台完成播放后,构建以下json格式的Webhook
{
"media_type": 媒体类型(目前写死episode),
"title": 中文名,
"ori_title": 原名(取不到就给空),
"season": 季度,
"episode": 集数,
"release_date": 发布日期(取不到第一集的给当前集数的也行,格式YYYY-MM-DD),
"user_name": 用户名(同步发起方的用户名)
}
比如
{
"media_type": "episode",
"title": "我心里危险的东西",
"ori_title": "僕の心のヤバイやつ",
"season": 2,
"episode": 12,
"release_date": "2023-04-01",
"user_name": "SanaeMio"
}
将以上json发送到http://{ip}:8000/Custom
,ip根据本机情况填写
播放完成后,查看控制台日志
或log.txt
是否同步成功
(默认您已将Plex与Tautulli绑定完成,以下内容只需要设置一次)
运行Bangumi-syncer
打开Tautulli控制面板,右上角Settings
-> Notification Agents
-> Add a new notification agent
-> 选择Webhook
在弹出页面的Configuration
中的Webhook URL
填写http://{ip}:8000/Custom
,ip根据本机情况填写
Triggers
勾选Watched
Conditions
建议填写,以减少Webhook请求次数。这里我限制了用户名和单集的时候才会触发Webhook。
第一个条件是限制用户名,改成自己的。第二个条件是限制媒体类型为单集,写死为episode
。Condition Logic
填写为{1} and {2}
,表示两个条件同时满足时才触发。
Data
中展开Watched
,在JSON Data
中填写如下通知模版,然后点击右下角Save
保存设置
{"media_type": "{media_type}", "title": "{show_name}", "ori_title": " ", "season": "{season_num}", "episode": "{episode_num}", "release_date": "{air_date}", "user_name": "{username}"}
控制台日志
或log.txt
是否同步成功(默认您的账号已拥有Plex Pass,以下内容只需要设置一次)
运行Bangumi-syncer
打开Plex控制面板,右上角设置
-> Webhooks
-> 添加 Webhook
填写网址为http://{ip}:8000/Plex
,ip根据本机情况填写,点击保存修改
在Plex播放完成后,查看控制台日志
或log.txt
是否同步成功
应用程序设置
-> 通知
-> 添加通知
-> 选择Webhooks
http://{ip}:8000/Emby
,ip根据本机情况填写,请求内容类型选择application/json
,Events里勾选播放-停止
和用户-标记为已播放
,将媒体库事件限制为
根据自己情况,建议只勾选包含动画的库,最后点击储存
控制台日志
或log.txt
是否同步成功插件
-> 目录
-> 拉到最下面找到点进Webhook
-> 选择8.0.0.0
版本,点击Install
安装此插件然后 重启服务器
插件
-> 我的插件
-> 点进Webhook
。Server Url
里输入你的Jellyfin地址,点击Add Generic Destination
Generic
,Webhook Name
随便填,Webhook Url
输入http://{ip}:8000/Jellyfin
,ip根据本机情况填写。
Notification Type
只选中Playback Stop
,Item Type
只选中Episodes
。Template
填写如下模版,然后点击Save
保存设置{"media_type": "{{{ItemType}}}","title": "{{{SeriesName}}}","ori_title": " ","season": {{{SeasonNumber}}},"episode": {{{EpisodeNumber}}},"release_date": "{{{Year}}}-01-01","user_name": "{{{NotificationUsername}}}","NotificationType": "{{{NotificationType}}}","PlayedToCompletion": "{{{PlayedToCompletion}}}"}
控制台日志
或log.txt
是否同步成功✅ 支持自定义Webhook同步标记
✅ 支持Plex(Tautulli)同步标记
✅ 支持指定单用户同步
✅ 适配Plex原生Webhook(需要Plex Pass)
✅ 适配Emby通知
✅ 适配Jellyfin(需要jellyfin-plugin-webhook插件)
⬜️ 支持Docker部署
⬜️ 支持多账号同步
⬜️ 支持 剧场版动画/电影 同步标记
⬜️ ……
因为我不是专业python开发者,纯兴趣,代码比较垃圾请见谅
如果存在bug或想增加功能,欢迎 提一个 Issue 或者提交一个 Pull Request
MIT © SanaeMio