
TinyMediaManager 进阶:批量整理、自动化流程与 Docker 无人值守
前两篇讲了 TMM 是什么和怎么装,这篇来点进阶的——怎么把 TMM 玩出花来。
如果你已经有几百上千部电影,手动一部一部刮削是不现实的。真正的用法是建立一套自动化流程:文件入库 → 自动识别 → 自动刮削 → 自动整理 → 媒体服务器自动刷新。
TMM 为这个流程提供了三样武器:命令行、HTTP API、Docker 自动化。
一、命令行模式
大多数人用 TMM 都是打开图形界面点来点去。但 TMM 也支持全命令行操作——这对服务器环境和无头 NAS 来说非常关键。
基础用法
# 查看所有可用参数
./tinyMediaManager --help
核心命令:
# 更新所有媒体源(扫描新文件)
./tinyMediaManager --updateSources
# 刮削所有未刮削的电影
./tinyMediaManager --scrapeUnscraped
# 刮削并重命名
./tinyMediaManager --scrapeUnscraped --rename
# 仅重命名
./tinyMediaManager --rename
# 生成 NFO
./tinyMediaManager --export
搭配 cron 实现定时自动刮削
把 TMM 丢到 crontab 里,每天晚上自动刮削当天新增的电影:
# 每天凌晨 3 点自动刮削
0 3 * * * /opt/tinymediamanager/tinyMediaManager --scrapeUnscraped --rename >> /var/log/tmm.log 2>&1
配合 Docker 版也是一样的逻辑:
0 3 * * * docker exec tmm tinyMediaManager --scrapeUnscraped --rename >> /var/log/tmm.log 2>&1
注意:命令行模式默认不启动图形界面,因此可以安全地在 headless 服务器上运行。
二、HTTP API
TMM v5 开始提供了 HTTP API,可以通过 HTTP 请求远程触发操作。
启用 API
在 设置 → 通用 → HTTP API 中:
- 勾选「启用 HTTP API」
- 设置 API 端口(默认 8080)
- 设置 API Key(用于鉴权)
常用 API 调用
# API Key
API_KEY="your-api-key"
TMM_HOST="localhost:8080"
# 更新所有媒体源
curl -X POST "http://${TMM_HOST}/api/tmm/updatesources?api_key=${API_KEY}"
# 刮削未刮削的电影
curl -X POST "http://${TMM_HOST}/api/tmm/scrapeunscraped?api_key=${API_KEY}"
# 查询状态
curl "http://${TMM_HOST}/api/tmm/status?api_key=${API_KEY}"
# 查询媒体库统计
curl "http://${TMM_HOST}/api/tmm/statistics?api_key=${API_KEY}"
和下载工具联动
这是最爽的用法——下载完成后自动通知 TMM 刮削。
以 qBittorrent 为例,下载完成后的 webhook 或者外部脚本中:
#!/bin/bash
# /opt/scripts/torrent-done.sh
# qBittorrent 下载完成后调用
# 等待文件写入完成
sleep 30
# 通知 TMM 更新媒体源并刮削
curl -s -X POST "http://localhost:8080/api/tmm/updatesources?api_key=${API_KEY}"
curl -s -X POST "http://localhost:8080/api/tmm/scrapeunscraped?api_key=${API_KEY}"
# 通知 Emby 刷新媒体库
curl -s -X POST "http://localhost:8096/emby/Library/Refresh?api_key=${EMBY_API_KEY}"
这一套连起来的效果就是:电影下载完成 → TMM 自动刮削 → Emby 自动刷新 → 电视上直接能看。
全程无人干预。
三、Docker 无人值守方案
如果你的 TMM 跑在 Docker 里,配合 cron 或者 systemd timer,可以实现完全自动化。
完整的 Docker 自动化部署
version: "2.1"
services:
tmm:
image: tinymediamanager/tinymediamanager:latest
container_name: tmm
environment:
- USER_ID=1000
- GROUP_ID=1000
- ALLOW_DIRECT_VNC=true
- LC_ALL=zh_CN.UTF-8
- LANG=zh_CN.UTF-8
- PASSWORD=your_v...rd
- TZ=Asia/Shanghai
volumes:
- ./tmm_data:/data # TMM 配置和数据
- /mnt/media/movies:/media/movies
- /mnt/media/tvshows:/media/tv_shows
- ./scripts:/scripts # 挂载自动化脚本
ports:
- 5900:5900
- 4000:4000
restart: unless-stopped
定时任务脚本
在宿主机的 crontab 中:
# 每天凌晨 2 点刮削新电影
0 2 * * * docker exec tmm /scripts/scrape.sh
scrape.sh 的内容:
#!/bin/bash
# Docker 容器内运行的 TMM 命令行
export DISPLAY=:0
/opt/tinyMediaManager/tinyMediaManager --scrapeUnscraped --rename
# 刮削完成后通知 Emby 刷新
curl -s -X POST "http://emby:8096/emby/Library/Refresh?api_key=${EMBY_API_KEY}"
四、批量整理技巧
命名规范
TMM 的命名模板功能非常强大。在 设置 → 电影 → 重命名 中,可以自定义文件和目录的命名规则。
我个人的推荐配置:
目录命名:{title} ({year})
文件命名:{title} ({year}) - [{vf}]
示例输出:
/media/movies/盗梦空间 (2010)/
盗梦空间 (2010) - [1080p].mkv
/media/movies/星际穿越 (2014)/
星际穿越 (2014) - [2160p].mkv
这样的命名方式清晰、媒体服务器兼容性最好。
系列归类
选中一部或多部电影 → 右键 → 添加到系列。可以新建系列(如「漫威电影宇宙」)或加入已有系列。
TMM 会自动从 TMDB 拉取系列的海报和简介,整理后 Emby/Jellyfin 中会显示为合集。
批量更换海报
如果你对某些电影的海报不满意:
- 选中多部电影
- 点击「搜索并刮削」
- 在艺术作品选项卡中,选择你喜欢的海报版本
- 应用到全部选中影片
过滤与搜索
TMM 支持高级筛选:
- 按已刮削/未刮削筛选
- 按分辨率筛选(1080p / 4K)
- 按评分、年份、类型筛选
- 按标签筛选
这些筛选在批量操作时非常有用——比如「选出所有 4K 未刮削的电影,一次性处理」。
五、常见进阶问题
如何迁移到新服务器?
TMM 的所有配置和数据都在 ~/.tinyMediaManager/(Linux)或 TMM 数据目录下。
迁移时只需复制这个目录和你的媒体文件,在新机器上解压 TMM 就能接着用。
同时管理多台服务器的媒体库?
TMM 支持多个媒体源。你可以:
- 添加
/mnt/disk1/movies和/mnt/disk2/movies两个源 - TMM 会合并展示,统一刮削
- 生成 NFO 后,各台媒体服务器各自扫描自己的目录
TMM 和 Sonarr/Radarr 冲突吗?
不冲突。TMM 管元数据,Sonarr/Radarr 管下载管理。
一套推荐的组合拳:
- Radarr/Sonarr:自动下载电影/剧集
- TMM:对已下载的文件进行元数据刮削和整理
- Emby/Jellyfin:读取 NFO 展示
各司其职,互不干扰。
总结
TMM 的进阶用法核心就一个思路:让机器替你干活。
- 命令行 + cron → 定时无人刮削
- HTTP API + 下载工具 webhook → 下载完自动刮削
- Docker + 定时脚本 → 服务器上稳定跑
一旦整套流程跑通,你的媒体库维护就变成了「扔文件进去,其他的 TMM 搞定」。
家庭影院的终极体验,不是设备多好,而是打开电视就能看,什么都不用想。
评论