一个自托管的 JAVDB 媒体库 / 下载 / 推送 管理中心。逆向自 JAVDB 移动端 API + JAVBUS 磁链 + Emby/Jellyfin 入库联动,网页界面(Flask)+ SQLite 存储。仅供个人 / 家庭内网使用。
镜像名:desstg/jd-online:latest(Docker Hub)
# 拉取
docker pull desstg/jd-online:latest
# 1) 直接运行(数据先落在一个数据卷)
docker run -d --name jd-online \
-p 9091:9091 \
-v jd-online-data:/data \
--restart unless-stopped \
desstg/jd-online:latest
或用 docker-compose.yml(更推荐,含说明注释):
# JD online — JAVDB 媒体管理中心
# 运行数据(config.json + javdb.db)放在宿主机 ./data 目录,挂载到容器 /data。
#
# 两种初始化方式:
# 1) 全新启动:./data 留空会自动生成默认 config.json(登录口令 123 / abc123)
# 与空 javdb.db,之后在网页「设置」页填入凭据。
# 2) 迁移现有数据:把旧的 config.json、javdb.db 复制进 ./data 即可。
#
# 如果容器以 appuser(uid 1000) 运行,宿主机 ./data 需可写:
# chown -R 1000:1000 ./data
# 若嫌麻烦,可加 `user: "0:0"` 以 root 运行(不推荐)。
services:
jd-online:
image: desstg/jd-online:latest
container_name: jd-online
restart: unless-stopped
ports:
- "9091:9091"
volumes:
- ./data:/data
environment:
- TZ=Asia/Shanghai
# 网页登录账号 / 密码(环境变量优先于 config.json 与默认值;注释掉则用默认 123 / abc123)
- JD_WEB_USERNAME=123
- JD_WEB_PASSWORD=abc123
启动后访问 http://<主机>:9091。
登录口令:默认
123 / abc123。可在「设置」页修改,或在 compose 里用环境变量直接指定(优先级最高,覆盖 config.json 与默认值):environment: - JD_WEB_USERNAME=你的用户名 - JD_WEB_PASSWORD=你的密码
/data 卷:config.json(网络 / 凭据 / 订阅设置)+ javdb.db(媒体库 / 记录)。./data 留空,程序自动生成默认配置与空数据库,之后在网页「设置」页填入 JAVDB、代理、Emby、115 等凭据。config.json、javdb.db 复制进 ./data 挂载目录即可,番号、订阅、推送记录全部保留。容器以非 root appuser(uid 1000) 运行。绑定挂载宿主机目录时需可写:
chown -R 1000:1000 ./data
如果嫌麻烦,可在 compose 里加 user: "0:0" 以 root 运行(不推荐)。
| 配置 | 说明 |
|---|---|
web_username / web_password | 网页登录口令 |
javdb_username / javdb_password / javdb_token | JAVDB 移动端 API 凭据 |
proxy | 网络代理(JAVDB / JAVBUS / 图片都走它) |
api_base / javbus_base | JAVDB API 节点、JAVBUS 域名(被墙/换域名时改这里) |
min_interval | 抓取限流间隔(秒) |
port / host | 监听地址(默认 9091 / 0.0.0.0) |
订阅 sub_* | 订阅调度:每日检查时间 / 检查间隔 / 通道并发 / 超时 / 重试 / 同步时间表 |
不要把含真实凭据的
config.json提交到公开仓库。
pip install -r requirements.txt
python webapp.py # 默认 http://0.0.0.0:9091
命令行管线(main.py):
python main.py search "SSIS-001" # 搜索
python main.py detail "SSIS-001" --magnets # 详情+演员+磁链
python main.py hot # 热播榜整榜入库
python main.py server-add --name 客厅Emby --url http://192.168.1.10:8096 --api-key KEY --type emby
python main.py sync # 全量同步媒体库
| 数据 | 接口 | 是否需登录 |
|---|---|---|
| 搜索 | JAVDB /v2/search | 否 |
| 影片详情 | JAVDB /v4/movies/{id} | 否 |
| 评论 | JAVDB /v1/movies/{id}/reviews | 否 |
| 热播榜 / Top250 | JAVDB /v1/rankings/playback、/v1/movies/top | Top250 需登录 |
| 磁链 | JAVBUS ajax/uncledatoolsbyajax.php | 否 |
| 下载推送 | 115 网盘离线接口(需 Cookie) | 是 |
| 媒体库 | Emby/Jellyfin API | 需 API Key |
/app(Flask + javdb/),镜像内不含任何数据库 / 凭据。/data(config.json、javdb.db),挂载卷持久化。python /app/webapp.py,监听 9091。flask、h2(CloudDrive2 必需)、p115client(115 推送,可注释掉降级)。本项目仅供学习 / 个人内网使用,不提供任何影片资源,内容均来自公开接口。请遵守当地法律法规与所使用服务的条款。代码按「原样」提供,无任何担保;若官方接口变更或密钥轮换,项目可能失效(相关签名密钥在 javdb/client.py,官方一旦轮换需自行更新)。
Content type
Image
Digest
sha256:367b58726…
Size
63.2 MB
Last updated
13 days ago
docker pull desstg/jd-online