mikan
一个用于下载 Mikan Project(蜜柑计划) 番剧 RSS 订阅的交互式命令行工具。
给它一个订阅链接,它便会引导你挑选剧集,并把它们送到你想要的地方——保存为
.torrent 文件、导出成纯文本的 URL 列表,或者通过 WebUI API 直接添加到
qBittorrent。同时也提供了完全非交互的模式,方便脚本和定时任务使用。
$ mikan "https://mikanani.me/RSS/Bangumi?bangumiId=3950&subgroupid=597"
? Mikan Project - 石纪元 科学与未来 第3部分
> [x] [猎户压制部] 新石纪 第四季 [37] [1080p] [繁日内嵌] (835.0 MiB, 2026-06-28)
[ ] [猎户压制部] 新石纪 第四季 [36] [1080p] [繁日内嵌] (842.1 MiB, 2026-06-21)
...
输入以筛选 · 空格:选中/取消 · →/←:全选/全不选 · 回车:下一步 · Esc:取消
功能特性
| 交互式向导 | 多选剧集列表,显示文件大小与发布日期,随后选择一个或多个导出目标。 |
| 三种导出目标 | 下载 .torrent 文件、写出以换行分隔的 URL 列表,或直接添加到 qBittorrent。 |
| qBittorrent 集成 | 保存具名的连接配置,为每个订阅自动创建分类,通过 WebUI API 上传种子。 |
| 非交互模式 | 全程由命令行参数驱动(--all / --latest / --filter)——无需任何提示,适合定时任务。 |
| 代理支持 | 支持 --proxy、标准代理环境变量,以及 macOS 系统代理——mikanani.me 经常遭到 DNS 污染。 |
| 天然安全 | 剥除订阅文本中的控制字符 / 双向字符 / 零宽字符,清洗文件名,并以仅属主可读写的权限保存配置文件。 |
安装
需要较新的 Rust 工具链(edition 2024,Rust 1.85 及以上)。
从源码构建
这会把名为 mikan 的可执行文件安装到 ~/.cargo/bin。
使用 Nix
仓库提供了 flake:
使用方法
搜索模式
不想手动拼接 RSS 链接时,可以直接搜索:
搜索流程:输入关键词 → 从匹配的番剧中选择一个 → 选择字幕组(仅有一个时自动跳过,
多个时列表顶部提供“全部字幕组”)→ 进入既有的剧集多选与导出流程。搜索为交互模式,
非交互(-y)模式仍需显式传入 RSS 链接。
由于蜜柑搜索最多返回约 4 条结果,想要的番剧未必出现在首次搜索里。此时无需退出重来: 在番剧列表底部选择“重新搜索”即可重新输入关键词(会带出上次的输入以便修改);在字幕组 列表选择“返回上一步”则回到番剧列表。
由于
mikanani.me常遭 DNS 污染,搜索同样建议配合--proxy或系统/环境代理使用。
交互式向导
传入一个 Mikan RSS 订阅链接,然后按提示操作:
向导最多包含四个步骤:
- 挑选剧集——一个多选列表;当所有剧集都带有日期时按最新在前排序(否则沿用订阅自身的顺序)。空格键切换选中,
→/←全选/全不选,回车继续,Esc 取消。 - 选择导出格式——可任意组合下载
.torrent文件、写出 URL 列表和添加到 qBittorrent。 - 导出路径——仅当有内容写入磁盘时才询问。会记住你最近使用过的路径,并以历史记录做自动补全(
↑/↓浏览,Tab 填入),~会被展开为主目录。 - qBittorrent 配置与分类——仅当选择添加到 qBittorrent 时才询问。选取一个已保存的配置(或就地创建一个),然后询问分类(默认为清洗后的订阅标题)。
qBittorrent 配置
qBittorrent WebUI 的连接信息会以具名配置的形式保存,这样就无需每次运行都重新 输入。用户名留空表示使用 qBittorrent 的“对本机连接跳过身份验证”模式。
qbt set 和 qbt test 都会在保存前先尝试连接,因此地址或凭据的笔误可以被
立即发现。
非交互模式
加上 -y/--yes 即可在无任何提示的情况下运行。此时必须指定选择什么以及
送到哪里:
# 最新的 3 集 → 下载 .torrent 文件到 ./torrents
# 全部剧集 → 添加到 "default" qBittorrent 配置
# 仅 1080p 的剧集 → 使用具名配置和自定义分类
# 组合多个目标:既写出 URL 列表,又下载文件
选择参数(至少选一个):
| 参数 | 作用 |
|---|---|
--all |
订阅中的所有剧集。 |
--latest N |
最新的 N 集。 |
--filter TEXT |
标题包含 TEXT 的剧集(不区分大小写)。可与 --latest 组合使用。 |
输出参数(至少选一个):
| 参数 | 作用 |
|---|---|
--out DIR |
将 .torrent 文件下载到 DIR。 |
--url-list DIR |
将种子 URL 列表写入 DIR。 |
--qbt[=PROFILE] |
使用已保存的配置添加到 qBittorrent(裸写 --qbt 表示使用 default)。 |
--category NAME |
qBittorrent 分类(默认为清洗后的订阅标题)。 |
在 -y 模式下,qBittorrent 配置是只读的——绝不会创建或保存配置——因此可以放心地
无人值守运行。请先用 mikan qbt set 交互式地设置好配置。
代理
mikanani.me 常因 DNS 污染而无法访问。当抓取因连接 / TLS / 网关错误失败时,工具会
建议使用代理。可通过以下方式提供:
否则会自动探测代理:
- 标准的
HTTP_PROXY/HTTPS_PROXY/ALL_PROXY/NO_PROXY环境变量在所有平台上都会被采用。 - 操作系统级别的系统代理会在 macOS(网络设置)和 Windows(Internet 选项)上被自动读取。Linux 没有系统级的代理设置,因此在 Linux 上环境变量是唯一的自动来源。
注意,与 qBittorrent 的连接会刻意绕过代理,因为 WebUI 位于本机/局域网。
配置
配置文件 config.toml 的位置:
- Linux / macOS——
$XDG_CONFIG_HOME/mikanani-cli/(未设置时回退到~/.config/mikanani-cli/) - Windows——
%APPDATA%\mikanani-cli\
其中包含:
path_history——你最近使用的 10 个导出路径,用于自动补全。qbt——已保存的 qBittorrent 配置(地址、用户名、密码)。
由于该文件可能包含 qBittorrent 密码,它会以原子方式写入,并在 Unix 上设置为仅属主
可读写(0600)权限。如果文件某天变得无法解析,它会被移动到 config.toml.bak 而
不是被静默覆盖,因此已保存的配置绝不会丢失。
退出码
0——成功(或干净地“未选择任何内容”/“已取消”)。1——已完成,但有一个或多个剧集下载或添加失败。2——用法错误(参数缺失或无效)。
批处理过程中的失败会逐集报告,绝不会中断整个运行。
许可证
基于 MIT 许可证发布。