已经不在Bilibili追番很多年了,这几年一直是在电脑上用BT下海贼看,上半年整了台homelab之后,通过订阅的RSS在番剧更新的时候复制磁链到qbittorent等下载完在Jellyfin上观看。相比之前需要在电脑上保留做种的同时管理大量的剧集已经简化不少。
但懒惰的人类怎会就此止步,虽比周围人要么忍受B站落后三四集的更新速度和删减,要么忍受其他站点满屏广告要优雅不少,但依旧算不上完美。正当又在生无可恋地复制粘贴磁链,想着该如何进一步优化的时候,随手在搜索栏键入关键词,然后就发现了一个很好用的项目——AutoBangumi
通过监控蜜柑计划的RSS链接,将更新的剧集推送到qbittorrent下载,按照"番剧名称/季/集"的格式保存,方便Jellyfin等程序读取刮削。

也就是说部署成功之后只需在蜜柑计划上订阅,然后等更新通知打开Jellyfin就能看了。废话不多说,直接开整。

1. 部署

还是用傻瓜式的docker-compose

version: "3.8"

services:
  AutoBangumi:
    image: "ghcr.io/estrellaxd/auto_bangumi:latest"
    container_name: AutoBangumi
    volumes:
      - ./config:/app/config
      - ./data:/app/data
    ports:
      - "7892:7892"
    restart: unless-stopped
    dns:
      - 223.5.5.5
    network_mode: bridge
    environment:
      - TZ=Asia/Shanghai
      - PGID=$(id -g)
      - PUID=$(id -u)
      - UMASK=022

Docker Proxy代理加速镜像

国内可能无法顺利拉取镜像,可以用Docker Proxy代理

把YAML里的

    image: "ghcr.io/estrellaxd/auto_bangumi:latest"

替换成

    image: "ghcr.dockerproxy.com/estrellaxd/auto_bangumi:latest"

2. 配置

2.1 获取RSS链接

先从蜜柑计划获取RSS订阅链接(打开第一眼没看到RSS的话点「最近一周」)

格式为

https://mikanani.me/RSS/MyBangumi?token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

这里有个插曲,mikanani.me这个域名已经被墙了,所以如果服务器在国内直接把链接丢到AutoBangumi里是无法成功解析的,而蜜柑早已启用mikanime.tv,所以替换域名即可。

最开始没注意到这个通知,用CloudFlare Workers反代了mikanani.me,虽然现在不需要这一步了,不过以防哪天mikanime.tv也被墙还是写一下反代域名吧。

CloudFlare Workers反代RSS链接

进入CF的Dashboard,创建Workers,一路点击下一步,然后打开刚创建好的Worker

EstrellaXD提供的代码复制替换并保存。

const TELEGRAPH_URL = 'https://mikanani.me';
const MY_DOMAIN = 'https://yourdomain.com'

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request))
})

async function handleRequest(request) {
  const url = new URL(request.url);
  url.host = TELEGRAPH_URL.replace(/^https?:\/\//, '');

  const modifiedRequest = new Request(url.toString(), {
    headers: request.headers,
    method: request.method,
    body: request.body,
    redirect: 'manual'
  });

  const response = await fetch(modifiedRequest);
  const contentType = response.headers.get('Content-Type') || '';

  // 如果内容类型是 RSS,才进行替换操作
  if (contentType.includes('application/xml')) {
    const text = await response.text();
    const replacedText = text.replace(/https?:\/\/mikanani\.me/g, MY_DOMAIN);
    const modifiedResponse = new Response(replacedText, response);

    // 添加允许跨域访问的响应头
    modifiedResponse.headers.set('Access-Control-Allow-Origin', '*');

    return modifiedResponse;
  } else {
    const modifiedResponse = new Response(response.body, response);

    // 添加允许跨域访问的响应头
    modifiedResponse.headers.set('Access-Control-Allow-Origin', '*');

    return modifiedResponse;
  }
}

把RSS链接的域名改成xxx.user.workers.dev

2.2 设置

进入AutoBangumi的web端,修改用户信息

默认用户名: admin ,默认密码: adminadmin

点击右上角的"+"把刚刚的RSS链接丢进去,勾选「聚合RSS」。

然后来到设置界面配置下载器

把设置指向qbittorrent。下载地址建议设置一个独立目录,不会和qbittorrent下的其他任务混在一起,也方便之后设置Jellyfin。

有需要的可以在旁边的通知设置和播放器设置选择用telegram bot或者bark推送番剧信息以及调用Jellyfin。不过我图省事,直接把RSS链接丢到自己之前部署的telegram bot了。

最终效果

都配置好之后就可以通过bot追踪更新状态了。

手头事情忙完之后打开Jellyfin直接开看,舒服