我的追番方案

星期一, 9月 15, 2025 | 2分钟阅读 | 更新于 星期一, 9月 15, 2025

记录在 macOS 上自动追番的方案。

下载源选择

自动追番需要下载源,我选择的是 蜜柑计划 ,原因如下:

  • 页面交互良好,前端体验好于纯数据库型资源网站。
  • 按季度更新动画信息,每季度动画独立成页,方便检索。
  • 会放出未开播动画页,方便我确定开始扫番的时间节点。
  • 可直观的看到动画海报,快速避开不喜欢的类型。

由于蜜柑计划提供 RSS 订阅服务,所以这里需要一个方案来自动下载 RSS 订阅中的种子。

自动下载种子

这次我选择的是FlexGet + Transmission的方案。

安装 FlexGet

  1. 安装 Homebrew。
  2. 安装 Python3:brew install python
  3. 安装 pipx:brew install pipx
  4. pipx ensurepath
  5. source ~/.zprofile
  6. 安装 FlexGet:pipx install flexget
  7. 进入目录:mkdir -p ~/.flexget
  8. 创建配置文件:nano ~/.flexget/config.yml

接下来只需要在配置文件中填入订阅内容即可,RSS 订阅链接去蜜柑计划里找就行,基本格式如下:

# 不含过滤关键词
download_ANi_我推的孩子:
    rss: https://mikanani.me/RSS/Bangumi?bangumiId=3407&subgroupid=583
    accept_all: yes
    download: /Users/wuzhi/Downloads

# 含过滤关键词
download_MiaoMeng_直至魔女消逝:
    rss: 
    regexp:
      accept:
        - 简
    download: /Users/wuzhi/Downloads

接下来验证一下配置是否成功。

# 验证命令
flexget check

# 若输出如下内容则配置无误
Everything went fine. Ready to start for real.

# 手动运行一次 FlexGet
flexget execute

接下来设置自动运行 FlexGet,实现自动化。

# 创建目录
mkdir -p ~/Library/LaunchAgents

# 创建任务文件
nano ~/Library/LaunchAgents/com.flexget.rss.plist

# 粘贴以下内容到文件(你可以每 30 分钟跑一次任务)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
 "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>com.flexget.rss</string>

  <key>ProgramArguments</key>
  <array>
    <string>/Users/wuzhi/.local/bin/flexget</string>
    <string>execute</string>
  </array>

  <key>StartInterval</key>
  <integer>3600</integer> <!-- 每3600秒 = 每小时运行一次 -->

  <key>RunAtLoad</key>
  <true/>

  <key>StandardOutPath</key>
  <string>/Users/wuzhi/flexget.log</string>
  <key>StandardErrorPath</key>
  <string>/Users/wuzhi/flexget_error.log</string>
</dict>
</plist>

# 加载任务
launchctl load ~/Library/LaunchAgents/com.flexget.rss.plist

# 如果修改过配置,想重新加载
launchctl unload ~/Library/LaunchAgents/com.flexget.rss.plist
launchctl load ~/Library/LaunchAgents/com.flexget.rss.plist

种子自动下载

前面已经通过 FlexGet 将种子自动下载到同一文件夹,接下来需要利用下载器完成种子下载,这里我选择 Transmission

我利用他的原因如下:

  • 占用资源小
  • 可监视文件夹自动下载
  • 可以设置规则自动调整下载位置

Automator

单纯的完成下载并不优雅,所以这里使用 macOS 自带的自动化工具 Automator 对文件进行重命名,大部分刮削器都是以文件名来进行刮削,而直接下载的动画无法自动刮削的原因也在这里。

首先创建一个自动操作文稿,类型选择 文件夹操作,然后文件夹就选择动画下载完最后到的那个文件夹,这里就要求在文件未完成下载的时候文件不能进入该文件夹,否则会先触发改名。

然后设定变量的值,这里创建一个文本变量,名字随意,比如我这里创建的就是 文件信息。接下来运行 Shell 脚本,传递输入选择 做为自变量,这个脚本的目的只是获取文件名并往下传递。

basename "$1"

然后再运行一个 Shell 脚本,同样的传递输入选择 做为自变量,这个脚本的目的是对文件名信息提取并重组。

#!/bin/bash
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

file_name="$1"

# 获取文件基本名称
file_name=$(echo "${file_name%.*}")

# 喵萌奶茶屋定制格式
nekomoe=$(echo $file_name | egrep 'Nekomoe kissaten')

if [[ "$nekomoe" != "" ]]
then
	file_name=$(echo $file_name | sed "s/\[[^][]*]//" | sed "s/\[//" | sed "s/\]//")
fi

# 替换集数格式、清除标签项
file_name=$(echo $file_name | sed -r "s/([0-9][0-9])v[1-9]/\1/" | sed -r "s/\[([0-9][0-9])\]/ - \1/" | sed "s/\[[^][]*]//g")
# 清除首位空格
file_name=$(echo $file_name | sed "s/^ //")

# 季度检测
quarter=$(echo $file_name | grep -E -o 'S[0-9][0-9] |S[0-9] |第[一二三四五六七八九十]季 | Season [0-9] ')

# 定义中文数字映射
declare -A chinese_num_map=(["一"]=1 ["二"]=2 ["三"]=3 ["四"]=4 ["五"]=5 ["六"]=6 ["七"]=7 ["八"]=8 ["九"]=9 ["十"]=10)

if [[ $quarter =~ 第?(.+)]]; then
    # 提取中文数字
    chinese_num=${quarter:1:1}
    num=${chinese_num_map[$chinese_num]}
    # 补零格式化,1-9前面加0
    if (( num < 10 )); then
        num="0$num"
    fi
    # 替换“第X季”为“S0X”
    file_name=$(echo "$file_name" | sed "s/第${chinese_num}季/S$num/")
    quarter="S$num"
fi

if [[ "$quarter" =~ [[:space:]]*Season[[:space:]]*([0-9]+)[[:space:]]* ]]; then
    num=${BASH_REMATCH[1]}
    [[ $num -lt 10 ]] && num="0$num"
    file_name=$(echo "$file_name" | sed -E "s/[[:space:]]*Season[[:space:]]*${BASH_REMATCH[1]}[[:space:]]*/S$num/")
    quarter="S$num"
fi

set_area=$(echo "${file_name##*-}")
set_name=$(echo $set_area | sed "s/[ -]//")

if [[ "$quarter" != "" ]]
then
	file_name=$(echo $file_name | sed "s/ -$set_area/E$set_name/")
else
	file_name=$(echo $file_name | sed "s/ -$set_area/ S01E$set_name/")
fi

echo $file_name

然后再设定变量的值,这次再新建一个文本变量,这个变量用来储存文件名,名字只要和上边的不重复就行,比如我取的名字是 文件名,这样就得到了要重命名的文件名,接下来再回到文件的处理上。新建一个获得变量的值,选择 文件信息 变量,并在选项中 忽略此操作的输入。然后给访达项目重命名,选择 给单个项命名,名称 仅基本名称文件名,这里的 文件名 就是我们之前设定的变量。接下来把重命名结束的文件送到下一个文件夹即可。

这个方法一次只能对一个文件处理,不过这个文件夹是下载后自动送文件进来的,所以一次确实只能进来一个文件。然后就是这个方法对所有内容都用 [] 包围的文件名无效,所以需要针对字幕组制作定制格式,可以参照我代码里的 喵萌奶茶屋定制格式

动画观看

接下来是动画观看环节,需求有两个:刮削器、多端同步。所以我选择用Infuse

这个应用能够实现如下功能

  • 自动对视频文件进行刮削。
  • Apple 全平台客户端。
  • 多端同步观看进度,只需将视频文件放在云盘中。
  • 极佳的观看体验。

infuse追番

logo

教室特色
  • 原创讲义
  • 课后答疑
  • 试卷研判
  • 精品教室
单人课程
年级 价格
高一 340
高二 360
高三 380
双人课程
年级 价格
高一 180
高二 190
高三 200
小型班课
年级 价格
高中 150
年级 时间
高一 14:00-15:30
高二 12:30-14:00
转介绍费
班型 红包
单人 500
双人 500
班课 200

二维码