AV下载全新方案:DB_Online+AVDB+MDC
前情
之前已经介绍过两套 AV 自动化方案:
- AutoLady(byte-muse) 订阅学习资料 — 搭配 qBittorrent 实现自动订阅下载
- MDCNG 刮削终极解决方案 — 自动刮削整理入库 Emby
这两套组合已经能覆盖大部分需求了,但有个问题:AutoLady(byte-muse) 主要服务的是 PT 馒头用户,如果你不在馒头或者其他 PT 站,那这套方案对你来说就用不上了。
所以这次要介绍的新方案,核心组件是 db_online,它从功能角度和 AutoLady(byte-muse) 类似——都是做资源发现和下载管理的,但 db_online 面向的是 色花堂堂、JavDB 等公开平台的用户。两者各自服务不同的用户群体,看你的资源来源选择对应方案即可。
方案介绍
这套方案由以下几个组件组成,各司其职:
| 组件 | 作用 |
|---|---|
| db_online | 资源发现与下载管理,对接98堂/JavDB等平台,自动搜索并推送下载任务到 qBittorrent |
| avdb | AV数据库,提供元数据支持,辅助识别和管理影片信息 |
| MDC (MDCNG) | 刮削整理,自动生成NFO、海报、演员信息等,硬链接到媒体库供 Emby 读取 |
| qBittorrent | 下载器,负责实际的种子下载任务 |
| FlareSolverr | 绕过 Cloudflare 验证,解决访问 JavDB 等网站时的反爬问题 |
整体流程就是:db_online 从平台发现资源 → 推送到 qBittorrent 下载 → MDC 监控下载目录自动刮削整理 → 入库 Emby。FlareSolverr 在后台帮忙处理 Cloudflare 人机验证,avdb 提供元数据支撑。
部署
qBittorrent 的部署之前已经讲过很多次了,这里不再赘述。下面是其余组件的 docker-compose 配置,建议统一放在一个目录下管理:
version: "2.1"services: mdc: image: mdcng/mdc:latest container_name: mdc environment: - PUID=0 - PGID=0 - TZ=Asia/Shanghai volumes: - ./config:/config # 配置目录,必须 - ./app:/app - /hdd/media:/media # 媒体库,可映射多个 ports: - 127.0.0.1:9208:9208 restart: unless-stopped
# ── db_online ── db_online_postgres: image: postgres:16-alpine container_name: db_online_postgres restart: unless-stopped environment: - TZ=Asia/Shanghai - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres - POSTGRES_DB=db_online healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres -d db_online"] interval: 10s timeout: 5s retries: 5 volumes: - ./db_online/postgres_data:/var/lib/postgresql/data
db_online: image: dbonline/db_online:latest container_name: db_online restart: unless-stopped depends_on: db_online_postgres: condition: service_healthy environment: - TZ=Asia/Shanghai ports: - 127.0.0.1:9090:9090 volumes: - ./db_online/data:/app/data - ./db_online/cache:/app/cache - ./db_online/logs:/app/logs - /hdd/media:/media # 与 MDC 共享媒体库
# ── avdb ── avdb_postgres: image: postgres:16-alpine container_name: avdb_postgres restart: unless-stopped environment: - TZ=Asia/Shanghai - POSTGRES_USER=avdb - POSTGRES_PASSWORD=your_password - POSTGRES_DB=avdb volumes: - ./avdb/postgres_data:/var/lib/postgresql/data
avdb: image: leolitaly/avdb:latest container_name: avdb restart: unless-stopped depends_on: - avdb_postgres environment: - TZ=Asia/Shanghai - DATABASE_URL=postgresql://avdb:your_password@avdb_postgres:5432/avdb - POSTGRES_HOST= - POSTGRES_PORT= - POSTGRES_USER= - POSTGRES_PASSWORD= - POSTGRES_DB= ports: - 127.0.0.1:8000:8000 volumes: - ./avdb/data:/data - /hdd/media:/media # 与 MDC 共享媒体库
# ── FlareSolverr ── flaresolverr: image: ghcr.io/flaresolverr/flaresolverr:latest container_name: flaresolverr restart: unless-stopped environment: - TZ=Asia/Shanghai - LOG_LEVEL=info ports: - 127.0.0.1:8191:8191几个要点说明:
- 端口全部绑定 127.0.0.1:避免直接暴露到公网,建议通过反向代理访问
- 媒体库目录
/hdd/media:db_online、avdb、mdc 三个服务共享同一个媒体库挂载,确保路径一致。根据你自己的实际路径修改 - db_online 和 avdb 各自有独立的 PostgreSQL:数据互不干扰
- avdb 的数据库密码:记得改成你自己的强密码,compose 里的
POSTGRES_PASSWORD和DATABASE_URL中的密码要保持一致
使用
部署完成后,各服务的访问地址:
| 服务 | 地址 |
|---|---|
| MDC (MDCNG) | http://IP:9208 |
| db_online | http://IP:9090 |
| avdb | http://IP:8000 |
| FlareSolverr | http://IP:8191 |

文件结构
├── app│ ├── config.json│ └── data│ └── photos├── avdb│ ├── data│ │ ├── emby_login_posters│ │ ├── image_cache│ │ └── logs│ └── postgres_data│ ├── base│ ├── global│ ├── pg_commit_ts│ ├── pg_dynshmem│ ├── pg_hba.conf│ ├── pg_ident.conf│ ├── pg_logical│ ├── pg_multixact│ ├── pg_notify│ ├── pg_replslot│ ├── pg_serial│ ├── pg_snapshots│ ├── pg_stat│ ├── pg_stat_tmp│ ├── pg_subtrans│ ├── pg_tblspc│ ├── pg_twophase│ ├── PG_VERSION│ ├── pg_wal│ ├── pg_xact│ ├── postgresql.auto.conf│ ├── postgresql.conf│ ├── postmaster.opts│ └── postmaster.pid├── config│ ├── config.json│ └── data│ ├── Actress.db│ ├── c_number.json│ ├── face_recognition_model.bin│ ├── mapping_actor.xml│ ├── mapping_eu_code.json│ ├── mapping_info.xml│ ├── mdc_ng.db│ ├── mdc_ng.db-shm│ ├── mdc_ng.db-wal│ └── photos├── db_online│ ├── cache│ │ └── images│ ├── data│ │ ├── config.yaml│ │ └── config.yaml.bak│ ├── logs│ │ └── subscription│ └── postgres_data│ ├── base│ ├── global│ ├── pg_commit_ts│ ├── pg_dynshmem│ ├── pg_hba.conf│ ├── pg_ident.conf│ ├── pg_logical│ ├── pg_multixact│ ├── pg_notify│ ├── pg_replslot│ ├── pg_serial│ ├── pg_snapshots│ ├── pg_stat│ ├── pg_stat_tmp│ ├── pg_subtrans│ ├── pg_tblspc│ ├── pg_twophase│ ├── PG_VERSION│ ├── pg_wal│ ├── pg_xact│ ├── postgresql.auto.conf│ ├── postgresql.conf│ ├── postmaster.opts│ └── postmaster.pid└── docker-compose.yamlMDC 的详细配置可以参考之前的 MDCNG 刮削终极解决方案,这里不再重复。
DB_Online 设置
账户密码之类的设置我就不多说了. DBO 的配置文件位于 db_online/data 下的config.yaml 中。
主要要调整的是这里的数据库配置,要和你创建的pg做对应

qb 配置
我的建议是一定一定要单独弄个qb,我每次都说。

emby 配置
都会的吧

Javdb API 配置
需要你去 https://javdb.com/ 注册个账户,然后输入账户密码登录就行。

Tg设置


测试下载
这里这么多配完差不多基础的下载就结束了,可以尝试找两个番号点击推送,然后打开qb看看是否监听到。




经过测试,这样一个最简单的下载刮削入库就全部完成了。
下面是进阶
AVDB 的设置
账户密码的设置没啥好说的,自己设置。
qb 和 emby 设置


设置 FlareSolverr
设置—代理
填入
http://127.0.0.1:8191/v1
导入离线资料
下载离线资料
https://share.catcat.blog/s/ENHJ/3i5y7rb3
下载完成后解压后得到两个表格文件,导入avdb

设置定时任务爬取数据
点击任务计划-点击添加-根据自己需求设置爬的频率
明白,你这个更适合写成单一章节说明,不要拆太多二级/三级标题。下面这个版本更紧凑,直接可用:
## 使用任务定时爬取数据
**AVdb 使用指南**
点击**任务图标** → **添加任务**。
- **名称**:可任意填写。- **任务规则**: - **智能**:增量续爬,适合每天定时爬取。 - **全量**:抓取指定页数,一般较少使用,因为比较耗时;如果需要大量数据,建议直接导入 **CSV 数据包**,更省时省力。- **规则参数**: - **智能版**:无需填写参数。 - **全量版**:需要输入最大页数参数,例如下面表示爬取前 5 页(页数可自行修改):
```json{"max_page": 5}-
版块:选择需要爬取的版块,默认全部,可按需勾选。
-
线程:任务线程数可选 1 - 5。
-
运行周期:使用 Cron 表达式。
-
*号的 5 个位置分别代表:分 时 天 月 周 -
例如:
0 3 * * *:每天凌晨 3<00>00> 执行0 */6 * * *:每 6 小时执行一次30 2 * * 1:每周一 2<30>30> 执行
-
-
开启任务:开启后会按设定周期自动运行,也可以先保存后手动运行。
推荐用法: 日常更新建议选择:
- 任务规则:智能
- 线程:3~5
- 运行周期:每天一次,例如:
0 3 * * *表示:每天凌晨 3 点自动执行。

设置令牌,把avdb作为dbo的外置数据库
## 配置 DB-Online 扩展磁力库
点击底部 **Bar** 最后一个按钮 **「其它」** → **「访问令牌」**。
首先创建一个访问令牌,**名称可任意填写**。

然后回到 **DB-Online**,进入:
**设置** → **扩展磁力库**
填写以下内容:
- **API URL**
```texthttp://avdb:8000/api/v1/articles/torrents?keyword={code}注意: 如果
avdb无法访问,请尝试改为 宿主机 IP。
- 添加 Header
X-API-Key : 你的令牌- 统计 API URL
http://avdb:8000/api/v1/stats
说明: 统计 API URL 的访问要求与上面一致,若
avdb无法访问,同样请改为 宿主机 IP。
这里的功能就是因为dbo本身只是爬了javdb的数据,avdb是爬取的色花堂和X1080X的数据。当然两个都能单独使用,为了简化,所以avdb这里可以只做数据源,接给dbo做下载用。
