番剧名 S01E08.mkv 格式,Plex/Jellyfin 直接识别# 1. 编译(需要 Go 1.23+ 和 Node 20+)
make all
# 2. 启动
./anime
# 3. 打开浏览器
open http://localhost:8998
就这么简单。默认使用 SQLite + 内置下载器,不需要安装任何其他服务。
# 构建前端
cd web/anime && npm install && npm run build && cd ../..
# 构建后端(-tags nosqlite 避免 SQLite 符号冲突)
CGO_ENABLED=1 go build -tags nosqlite -o anime main.go
# 启动
./anime
支持三种下载器,通过 downloader_type 切换:
| 下载器 | 配置值 | 外部依赖 | 说明 |
|---|---|---|---|
| 内置下载器 | builtin(默认) | ❌ 无 | 基于 anacrolix/torrent 的纯 Go BitTorrent 实现,直接下载种子和磁力链接 |
| Transmission | transmission | 需要 Transmission 服务 | 通过 RPC API 交互,NAS 老用户首选 |
| Aria2 | aria2 | 需要 Aria2 服务 | 通过 JSON-RPC 交互,自动注入 Tracker |
零配置,开箱即用。启动后自动加载动漫专用 Tracker,下载速度有保障。
downloader_type=builtin
download_dir=./downloads
downloader_type=transmission
transmission_url=127.0.0.1:9091/transmission/rpc
transmission_user=admin
transmission_passwd=admin
transmission_download_dir=/downloads/anime/
如果没有 Transmission,可以用 Docker 一键拉起:
docker run -d --name transmission \ -p 9091:9091 -e USER=admin -e PASS=admin \ -v /downloads:/downloads \ lscr.io/linuxserver/transmission:latest
downloader_type=aria2
aria2_url=http://127.0.0.1:6800/jsonrpc
aria2_secret=your_token
aria2_download_dir=/downloads/anime/
编辑 config.ini,所有配置项都有默认值,最小配置只需要:
season=2024 年冬季番组
| 配置项 | 说明 | 默认值 |
|---|---|---|
| 数据库 | ||
sqlite_url | SQLite 数据库文件路径 | ./anime.db |
mysql_enable | 是否使用 MySQL | false |
mysql_url | MySQL 连接字符串 | - |
| 下载器 | ||
downloader_type | 下载器:builtin / transmission / aria2 | builtin |
download_dir | 内置下载器的下载目录 | ./downloads |
transmission_url | Transmission RPC 地址 | - |
transmission_user | Transmission 用户名 | - |
transmission_passwd | Transmission 密码 | - |
transmission_download_dir | Transmission 下载目录 | - |
aria2_url | Aria2 JSON-RPC 地址 | - |
aria2_secret | Aria2 RPC 密钥 | - |
aria2_download_dir | Aria2 下载目录 | - |
| 代理 | ||
proxy_enable | 是否使用 HTTP 代理 | false |
proxy_url | 代理地址 | - |
| 通知 | ||
notify_enable | 是否启用通知推送 | false |
notify_url | Webhook 地址 | - |
notify_type | 推送类型:wecom/feishu/discord/generic | generic |
| 其他 | ||
season | 要订阅的季节,逗号分隔 | - |
port | Web 端口 | 8998 |
debug | 调试模式(不启动下载任务) | false |
所有配置项可通过 ANIME_ 前缀环境变量覆盖,容器化部署时无需挂载配置文件:
# 示例:Docker 环境变量方式
docker run -d \
-e ANIME_SEASON="2025 年春季番组" \
-e ANIME_DOWNLOAD_DIR=/downloads \
-e ANIME_PORT=8998 \
-p 8998:8998 \
anime-rss
| 环境变量 | 对应配置 |
|---|---|
ANIME_DOWNLOADER_TYPE | downloader_type |
ANIME_DOWNLOAD_DIR | download_dir |
ANIME_MYSQL_ENABLE | mysql_enable |
ANIME_MYSQL_URL | mysql_url |
ANIME_SQLITE_URL | sqlite_url |
ANIME_TRANSMISSION_URL | transmission_url |
ANIME_ARIA2_URL | aria2_url |
ANIME_PROXY_ENABLE | proxy_enable |
ANIME_NOTIFY_ENABLE | notify_enable |
ANIME_NOTIFY_URL | notify_url |
ANIME_SEASON | season |
ANIME_PORT | port |
启动后访问 http://localhost:8998,功能包括:
# 构建镜像
docker build -t anime-rss .
# 运行(内置下载器,最简单)
docker run -d \
--name anime-rss \
-p 8998:8998 \
-v ./data:/app/data \
-v ./downloads:/app/downloads \
-e ANIME_SEASON="2024 年冬季番组" \
anime-rss
或用 docker-compose up -d 一键启动(含 Transmission)。
anime/ ├── main.go # 入口 ├── cfg/ # 配置解析 + 环境变量覆盖 ├── model/ # 数据模型 + 自动建表 + 增量迁移 ├── download/ │ ├── builtin.go # ⭐ 内置 BitTorrent 下载器 │ ├── aria2.go # Aria2 JSON-RPC 下载器 │ ├── transmission.go # Transmission RPC 下载器 │ └── tracker.go # 动漫 Tracker 自动注入 ├── rss/ │ ├── rss.go # RSS 获取 + 并发抓取 │ └── parser.go # 标题解析(集数/分辨率/字幕组) ├── bangumi/ # Bangumi.tv 元数据 API ├── notify/ # Webhook 通知推送 ├── task/ # 定时任务调度 ├── web/ │ ├── web.go # Gin 路由 + 静态文件 │ ├── server.go # API handlers │ └── anime/ # Vue 3 + ElementPlus 前端 ├── config.ini # 配置文件 ├── Makefile # 一键构建 ├── Dockerfile # 多阶段构建 └── docker-compose.yaml # 一键部署
欢迎提交 Issue 和 PR!
使用 CNB 作为 CI 平台(.cnb.yml):
v1.0.0)→ 自动构建 Release