CMS + 115 + STRM + Emby + HDHive 的 Telegram 自动入库工具
10K+
Cloud Media Sync(CMS)的 Telegram 自动入库外挂。把 115 分享、磁力、ED2K 或 HDHive 资源发给 Bot,自动完成 CMS 整理分类、STRM 生成、媒体库移动和 Emby 入库确认。
链接 -> 115 接收/云下载 -> CMS 整理 -> shared/direct STRM -> 媒体库 -> Emby
0.5.2 使用一份 SQLite 任务库和唯一 TaskRunner 写入者;观察者只入队命令。当前镜像 icekale/cms-tg-ingest:0.5.47。
shared 共享 STRM 和 direct 直链 STRM;任务锁定后不允许切换,避免混用。asset-* 分享继续兼容,不自动改名。resume_organizing,只恢复已有接收结果,不重复接收或创建分享。固定版本镜像:
docker pull icekale/cms-tg-ingest:0.5.47
下面的配置可以直接使用 Docker Hub 镜像,不需要本地构建。将其保存为 docker-compose.yml,并在同一目录创建 .env:
services:
cms-tg-ingest:
image: icekale/cms-tg-ingest:0.5.47
container_name: cms-tg-ingest
restart: unless-stopped
env_file:
- .env
ports:
- "8787:8787"
volumes:
- ./data:/data
# STRM 源目录和媒体库目录,必须与 .env 中的路径一致。
- /mnt/user/Unraid/strm:/mnt/user/Unraid/strm:rw
# CMS 导出的 115 Cookie。
- /mnt/user/appdata/cloud-media-sync/config/115-cookies.txt:/config/115-cookies.txt:ro
# CMS 在线数据库,用于识别整理后的目录。
- /mnt/user/appdata/cloud-media-sync/config/cms-online.db:/cms/cms-online.db:ro
# CMS 配置目录,用于读取并跟随 OAuth 刷新后的 HDHive 授权文件。
- /mnt/user/appdata/cloud-media-sync/config:/config/cms-config:ro
# Docker Socket(CMS 守卫检查与镜像拉取需要,可去掉以增强隔离)。
- /var/run/docker.sock:/var/run/docker.sock:ro
healthcheck:
test: ["CMD", "python", "/app/doctor.py", "--quiet"]
interval: 5m
timeout: 20s
retries: 2
start_period: 30s
.env 至少填写以下内容;完整变量和注释见 GitHub .env.example:
TG_BOT_TOKEN=从BotFather获取的Token
TG_ALLOWED_CHAT_ID=你的Telegram用户或聊天ID
CMS_BASE_URL=http://192.168.1.10:9527
CMS_USERNAME=你的CMS用户名
CMS_PASSWORD=你的CMS密码
P115_COOKIE_PATH=/config/115-cookies.txt
SELF_SHARE_RECEIVE_CID=待整理目录CID
SELF_SHARE_STRM_ROOT=/mnt/user/Unraid/strm/share
SELF_SHARE_OWN_SHARE_PASSWORD=1212
STRM_LIBRARY_MAP=华语电影=/mnt/user/Unraid/strm/转存/Movie/电影/华语电影,欧美电影=/mnt/user/Unraid/strm/转存/Movie/电影/欧美电影
STRM_DEFAULT_MODE=shared
DATABASE_PATH=/data/cms-tg-ingest.db
WEB_ENABLED=true
# Web 认证(推荐用户名密码,与 WEB_TOKEN 二选一)
WEB_USERNAME=admin
WEB_PASSWORD=change-me
WEB_TOKEN=
BACKUP_ENABLED=true
BACKUP_TIME=03:30
BACKUP_TIMEZONE=Asia/Shanghai
BACKUP_DIR=/data/backups
BACKUP_RETENTION_DAYS=14
EMBY_BASE_URL=http://192.168.1.10:8096
EMBY_API_KEY=你的Emby_API_Key
EMBY_USER_ID=你的Emby用户ID(可选)
# 可选:媒体墙海报/评分与历史任务海报补齐
TMDB_API_KEY=你的TMDB v3 API Key
TG_BOT_TOKEN 和密码只放在 .env,不要写进 Compose、Dockerfile 或公开 issue。TG_ALLOWED_CHAT_ID 用于限制只有指定 Telegram 用户可以操作 Bot。
自有分享访问码可在 Web“当前任务”页设置。新任务按“Web 设置 -> CMS share_115_sync 配置 -> SELF_SHARE_OWN_SHARE_PASSWORD -> 1212”解析;读取接口只显示掩码和来源,已有分享不会被批量修改。
待整理目录可在新版 Web UI“设置”中修改。Web 保存值优先于 SELF_SHARE_RECEIVE_CID,写入 TaskStore 并在重启后保留;点击“使用环境配置”可恢复 .env 值。它同时控制 115 转存和云下载的目标目录。
启动和查看日志:
mkdir -p data
docker compose pull
docker compose up -d
docker compose ps
docker compose logs -f cms-tg-ingest
8787:8787 时,打开 http://<host-ip>:8787/app/logs;Unraid 改为 8788:8787 时,打开 http://<unraid-ip>:8788/app/logs。页面支持重要/错误/全部、关键字和 1000/2000/5000 行筛选。docker logs 和 /data/logs/cms-tg-ingest.log;当前文件达到 20 MiB 后轮转,保留 4 个备份。./data:/data 挂载,不需要增加日志 volume;重启后恢复最近最多 5000 行。WEB_TOKEN 时,先通过 /app/?token=... 建立 HttpOnly Cookie,再进入 /app/logs;EventSource URL 不携带 Token。/api/v1/logs/stream 是仅供页面读取实时流的内部只读 SSE 端点。GET /api/v1/logs/analyze 返回结构化摘要(错误/告警统计、重复模式、修复提示与最近条目),供外部 AI 分析和调用管理 API 修复。CMS_VERSION_CHECK_ENABLED=true 后定时探测 CMS 版本,新版本出现时 Telegram 通知并标记 update_ready;CMS_UPDATE_IMAGE + CMS_AUTO_PULL_ENABLED=true 可自动拉取镜像。设置页「升级」会在容器内重建 CMS 并校验 STRM 守卫,失败自动回滚。.env。「立即检查」对比本地 CMS 与 Docker Hub 最新 tag(CMS_UPDATE_IMAGE 需填完整镜像名如 imaliang/cloud-media-sync:latest),发现新版可一键升级。首次部署检查:
docker compose config
docker compose ps
docker compose exec cms-tg-ingest python /app/doctor.py
curl http://127.0.0.1:8787/api/v1/health
容器显示 healthy、健康接口中的 runner_heartbeat_stale 为 false,并且 Bot 能回复 /help,才算部署完成。
Unraid 使用时建议把端口改为 8788:8787,访问 http://<unraid-ip>:8788/app/。如果 STRM、Cookie 或 CMS 数据库路径不同,请同步修改 volumes 和 .env 中的路径;不要把 .env 或 Cookie 提交到 GitHub/Docker Hub。
本地 compose 默认使用 8787:8787。Unraid 推荐映射 8788:8787,访问 http://<unraid-ip>:8788/ 会默认进入 Vue 管理台(实际页面为 /app/);旧版概览保留在 /legacy。镜像支持 linux/amd64 和 linux/arm64。
/搜索:通过 TMDB 匹配影片/剧集,筛选 HDHive 资源并解锁;旧命令 /hdhive_search 继续兼容。/订阅 https://re0.me/tv/<slug>:创建 HDHive 剧集订阅。HDHive 订阅 或 /hdhive_subscriptions:管理订阅、立即检查和确认解锁。/status、/health、/quality、/history:查看任务和本地健康状态。不需要单独申请 HDHive OpenAPI Key。先在 CMS 转存下载 -> 影巢账号 完成 OAuth 授权,再启用:
HDHIVE_ENABLED=true
HDHIVE_PROXY_BASE_URL=https://authx.771885.xyz
HDHIVE_TOKEN_CONFIG_PATH=/config/cms-config/hdhive-openapi.json
HDHIVE_SEARCH_SESSION_TTL_SECONDS=900
HDHIVE_AUTO_UNLOCK_MAX_POINTS=20
HDHIVE_SUBSCRIPTION_AUTO_ENABLED=true
HDHIVE_SUBSCRIPTION_TIME=01:30
HDHIVE_SUBSCRIPTION_TIMEZONE=Asia/Shanghai
挂载整个 CMS 配置目录,确保 OAuth 刷新后读取到新文件:
- /mnt/user/appdata/cloud-media-sync/config:/config/cms-config:ro
HDHive 搜索默认筛选 115。费用未知或超过阈值时停在待确认状态,需要点击 确认解锁;只有成功的 115 链接会自动进入 CMS 整理、自有分享 STRM 和 Emby 入库流程,其他网盘链接不会误提交到 115 流程。
成功解锁记录会保存实际或估算积分、解锁时间和关联 Task ID,并通过 Telegram 发送海报卡片;TMDB 海报不可用时自动降级为文字通知。
直接发送 HDHive 剧集页面也可以创建订阅:
https://re0.me/tv/<slug>
订阅不会立即解锁。程序每天按 01:30(Asia/Shanghai)检查新增资源;费用未知或超过阈值时等待 确认解锁。Web 管理页为 /hdhive,可以添加订阅、查看 OAuth 状态、下次检查时间和订阅统计。
订阅支持智能判断:集数过滤示例为 S01E01-S01E10,S02,默认跳过 S00 特殊集;多季资源按季集编号识别,Emby 已有集数会跳过。程序根据 TMDB 完结状态和季集数量标记已完结订阅,第一次完结发一条 Telegram,之后不再每日检查;无法解析季集、费用未知或超过自动阈值的资源不自动解锁,完结订阅可手动恢复。
默认每天 03:30(Asia/Shanghai)在线备份 /data/cms-tg-ingest.db 到 /data/backups,保留 14 天。由于 Compose 已将 ./data 映射到 /data,不需要额外挂载目录。最近一次结果可在 /health 或 Web /api/v1/health 查看。
docker compose exec cms-tg-ingest sh -c 'ls -lh /data/backups'
恢复时先停止容器、备份当前文件,再将 cms-tg-ingest-*.db 快照复制回 data/cms-tg-ingest.db,最后启动容器。备份不包含 Cookie、CMS 配置或媒体文件;失败会在健康状态中显示,并在当天下一次调度 tick 重试。从 0.4.x 升级到 0.5.0 必须先导入遗留库并按 closed → runner_open → open 打开写入闸门;打开后只向前修。
固定版本更新:
# 先备份 ./data、.env 和挂载配置
docker compose pull
docker compose up -d --no-build
docker compose ps
回滚时将 Compose 的镜像改回上一版本,例如 icekale/cms-tg-ingest:0.2.19,然后执行:
docker compose pull
docker compose up -d --no-build
常见问题:
TG_BOT_TOKEN、TG_ALLOWED_CHAT_ID 和容器日志。8788:8787。/data、STRM、115 Cookie、CMS 数据库和 CMS 配置目录挂载。转存下载 -> 影巢账号 重新授权,并保留 /config/cms-config 挂载。STRM_DEFAULT_MODE;任务进入后续阶段后模式会锁定。/health 的 115 冷却和阶段等待原因,不要连续重试。TG_ALLOWED_CHAT_ID 限制使用者。EMBY_BASE_URL 和 EMBY_API_KEY。WEB_USERNAME + WEB_PASSWORD(登录页签发 7 天会话 Cookie);也可以设置随机 WEB_TOKEN 用共享令牌。局域网内可以留空直接访问,通过公网/反向代理暴露时必须启用其中一种。.env、115 Cookie、Telegram Token、Emby API Key 或 HDHive OAuth 文件。完整配置、工作流、故障排查和回滚说明请查看 GitHub README。
Content type
Image
Digest
sha256:d29587d5e…
Size
95.9 MB
Last updated
6 days ago
docker pull icekale/cms-tg-ingest