Skip to content

通过Webhook调用Bangumi Api,实现在客户端看完后自动同步打格子。适配Plex、Emby、Jellyfin等。

License

Notifications You must be signed in to change notification settings

SanaeMio/Bangumi-syncer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bangumi-syncer Logo

languages release license

🔖目录

🌟 简介

通过Webhook调用 Bangumi Api,实现在客户端看完后自动同步打格子。

已适配Plex、Emby、Jellyfin。

QQ%E5%9B%BE%E7%89%8720240319171758.png

🧰 安装

Windows

  1. 请保证Python版本3.7以上,并安装以下依赖
pip install requests fastapi pydantic uvicorn[standard]
  1. 下载 zip并解压到任意文件夹。 发布页

  2. 双击 start.bat,无报错即可

  3. 如果你希望修改默认端口号,可以用文本编辑器打开start.bat,修改--port 8000--port 你的自定义端口号

Docker

调试中,后续支持

🔧 配置

  1. 修改config.ini,根据注释说明,填写usernameaccess_tokensingle_username三项
  2. config.ini中的bangumi-mapping根据实际匹配情况自行配置,如果没有发现匹配失败的条目则无需填写

🥰 使用

自定义Webhook

  1. 运行Bangumi-syncer
  2. 在观看平台完成播放后,构建以下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"
}
  1. 将以上json发送到http://{ip}:8000/Custom,ip根据本机情况填写

  2. 播放完成后,查看控制台日志log.txt是否同步成功

Tautulli

(默认您已将Plex与Tautulli绑定完成,以下内容只需要设置一次)

  1. 运行Bangumi-syncer

  2. 打开Tautulli控制面板,右上角Settings -> Notification Agents -> Add a new notification agent -> 选择Webhook

  3. 在弹出页面的Configuration中的Webhook URL填写http://{ip}:8000/Custom,ip根据本机情况填写

  4. Triggers勾选Watched

  5. Conditions建议填写,以减少Webhook请求次数。这里我限制了用户名和单集的时候才会触发Webhook。 第一个条件是限制用户名,改成自己的。第二个条件是限制媒体类型为单集,写死为episodeCondition Logic填写为{1} and {2},表示两个条件同时满足时才触发。

  6. 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}"}

  1. 在Plex播放完成后,观察控制台日志log.txt是否同步成功

Plex Webhooks

(默认您的账号已拥有Plex Pass,以下内容只需要设置一次)

  1. 运行Bangumi-syncer

  2. 打开Plex控制面板,右上角设置 -> Webhooks -> 添加 Webhook

  3. 填写网址为http://{ip}:8000/Plex,ip根据本机情况填写,点击保存修改

  4. 在Plex播放完成后,查看控制台日志log.txt是否同步成功

Emby通知

  1. 运行Bangumi-syncer
  2. 打开Emby控制面板 -> 应用程序设置 -> 通知 -> 添加通知 -> 选择Webhooks
  3. 名称随意填写,URL填写http://{ip}:8000/Emby,ip根据本机情况填写,请求内容类型选择application/json,Events里勾选播放-停止用户-标记为已播放将媒体库事件限制为根据自己情况,建议只勾选包含动画的库,最后点击储存
  4. 在Emby播放完成 或 手动标记为已播放后,查看控制台日志log.txt是否同步成功

Jellyfin插件

  1. 运行Bangumi-syncer
  2. 打开Jellyfin控制台 -> 插件 -> 目录 -> 拉到最下面找到点进Webhook -> 选择8.0.0.0版本,点击Install安装此插件然后 重启服务器
  3. 打开Jellyfin控制台 -> 插件 -> 我的插件 -> 点进WebhookServer Url里输入你的Jellyfin地址,点击Add Generic Destination
  4. 展开下方的Generic,Webhook Name随便填,Webhook Url输入http://{ip}:8000/Jellyfin,ip根据本机情况填写。 Notification Type只选中Playback StopItem Type只选中EpisodesTemplate填写如下模版,然后点击Save保存设置
{"media_type": "{{{ItemType}}}","title": "{{{SeriesName}}}","ori_title": " ","season": {{{SeasonNumber}}},"episode": {{{EpisodeNumber}}},"release_date": "{{{Year}}}-01-01","user_name": "{{{NotificationUsername}}}","NotificationType": "{{{NotificationType}}}","PlayedToCompletion": "{{{PlayedToCompletion}}}"}
  1. 在Jellyfin播放完成后,查看控制台日志log.txt是否同步成功

📖 计划

✅ 支持自定义Webhook同步标记

✅ 支持Plex(Tautulli)同步标记

✅ 支持指定单用户同步

✅ 适配Plex原生Webhook(需要Plex Pass)

✅ 适配Emby通知

✅ 适配Jellyfin(需要jellyfin-plugin-webhook插件)

⬜️ 支持Docker部署

⬜️ 支持多账号同步

⬜️ 支持 剧场版动画/电影 同步标记

⬜️ ……

😘 贡献

因为我不是专业python开发者,纯兴趣,代码比较垃圾请见谅

如果存在bug或想增加功能,欢迎 提一个 Issue 或者提交一个 Pull Request

👏 鸣谢

📄 许可

MIT © SanaeMio

About

通过Webhook调用Bangumi Api,实现在客户端看完后自动同步打格子。适配Plex、Emby、Jellyfin等。

Resources

License

Stars

Watchers

Forks

Packages

No packages published