项目介绍
您是否在为囤积的视频资源命名乱七八糟而苦恼?您是否在为手动整理媒体库而头疼?您是否在为媒体资源重命名影响做种而焦虑?
不妨试试Media Marshal吧。
Media Marshal可以帮您:
- 实时监测您的媒体库,自动帮您整理媒体库,从此告别手动重命名。
- 支持自定义整理规则,简单易用,满足您的个性需求。
- 支持移动、复制、硬链接等多种文件操作方式,更新媒体库的同时让您的做种任务不中断。
- 支持TMDB信息查询,让您时刻获取权威信息。
功能预览
按您的要求将媒体资源分门别类,自动整理

支持人工搜索、人工确认


快速开始
准备工作
开始安装
注:本教程以飞牛OS为例,路径规划可自由调整,以下规划方式仅做参考。
1. 创建路径
进入飞牛OS,在团队文件下创建 Resources作为根路径使用
在Resources下分别创建 Download、Emby、MediaMarshal
Download作为下载根路径,保存原始视频资源;Emby作为目标根路径,接收整理后的视频资源;MediaMarshal作为项目根路径,保存运行数据。


2. 安装Media Marshal
在 MediaMarshal中上传docker配置文件,可以先保存在本地,通过飞牛页面上传至NAS。
.env环境配置文件,根据需要可修改MEDIA_DIRS
# Media Marshal 环境变量配置模板
# Media Marshal environment variable template
# ── 调试 / Debug ─────────────────────────────────────────────
# 开启后打印详细中间过程日志,生产环境保持 false
# Print detailed intermediate logs when enabled. Keep false in production.
MEDIA_MARSHAL_DEBUG=false
# ── 文件监控 / File watching ─────────────────────────────────
# 宿主机媒体目录。生产和 beta 挂载到容器 /media,alpha 挂载到容器 /Resources
# Host media directory. Production and beta mount it to /media; alpha mounts it to /Resources.
MEDIA_DIRS=/vol1/@team/Resources
# ── 端口与镜像标签(可选)/ Ports and image tag (optional) ─────
# Web UI host port.
MEDIA_MARSHAL_PORTAL_PORT=3000
# Backend API host port.
MEDIA_MARSHAL_HTTP_PORT=8080
# Image tag used by compose files that support tag selection.
MEDIA_MARSHAL_IMAGE_TAG=latest
# ── 匹配配置 / Matching ──────────────────────────────────────
# 匹配置信度阈值(0.0-1.0),低于此值进入待确认队列
# Match confidence threshold (0.0-1.0). Results below this value enter the review queue.
MEDIA_MARSHAL_CONFIDENCE_THRESHOLD=0.8
docker-compose.ymlDocker配置文件
services:
# Java backend service
media-marshal:
image: ghcr.io/media-marshal/media-marshal:${MEDIA_MARSHAL_IMAGE_TAG:-latest}
container_name: media-marshal
restart: unless-stopped
ports:
- "${MEDIA_MARSHAL_HTTP_PORT:-8080}:8080"
volumes:
- mm_data:/data
- ${MEDIA_DIRS:-/media}:/media
environment:
- MEDIA_MARSHAL_PARSER_URL=http://parser:8000
- MEDIA_MARSHAL_CONFIDENCE_THRESHOLD=${MEDIA_MARSHAL_CONFIDENCE_THRESHOLD:-0.8}
- MEDIA_MARSHAL_DEBUG=${MEDIA_MARSHAL_DEBUG:-false}
- MEDIA_MARSHAL_EMAIL_ENABLED=${MEDIA_MARSHAL_EMAIL_ENABLED:-false}
- MEDIA_MARSHAL_EMAIL_RECIPIENT=${MEDIA_MARSHAL_EMAIL_RECIPIENT:-}
- MEDIA_MARSHAL_MAIL_HOST=${MEDIA_MARSHAL_MAIL_HOST:-}
- MEDIA_MARSHAL_MAIL_PORT=${MEDIA_MARSHAL_MAIL_PORT:-587}
- MEDIA_MARSHAL_MAIL_USERNAME=${MEDIA_MARSHAL_MAIL_USERNAME:-}
- MEDIA_MARSHAL_MAIL_PASSWORD=${MEDIA_MARSHAL_MAIL_PASSWORD:-}
depends_on:
parser:
condition: service_healthy
networks:
- mm_net
# Portal frontend served by Nginx
portal:
image: ghcr.io/media-marshal/media-marshal-portal:${MEDIA_MARSHAL_IMAGE_TAG:-latest}
container_name: media-marshal-portal
restart: unless-stopped
ports:
- "${MEDIA_MARSHAL_PORTAL_PORT:-3000}:80"
depends_on:
- media-marshal
networks:
- mm_net
# guessit Python sidecar, available only inside the compose network
parser:
image: ghcr.io/media-marshal/media-marshal-parser:${MEDIA_MARSHAL_IMAGE_TAG:-latest}
container_name: media-marshal-parser
restart: unless-stopped
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health', timeout=3).read()"]
interval: 10s
timeout: 5s
retries: 3
start_period: 10s
networks:
- mm_net
volumes:
mm_data:
networks:
mm_net:
driver: bridge

进入Docker应用,新建Compose,选择 MediaMarshal创建项目,创建完成后构建项目。

安装完成后,点击Portal快速访问,进入Media Marshal页面。

3. 配置Media Marshal
首次访问系统需要配置TMDB API Key,保存后进入系统

进入路径设置页面后点击新增规则,创建自动整理规则,创建后点击启动即可解放双手。


开始使用
在 Resources/Download中上传视频文件进行测试,可以看到Media Marshal已经对视频进行了解析。并且将置信度不足阈值的项目放进人工确认队列。

最佳实践
关于渲染规则
Media Marshal支持灵活配置解析规则,除系统自带的路径模板外可根据您的需求配置个性化路径,具体使用规则可参考项目内置说明。

作者推荐路径规则:
# 电影路径
电影/{title_initial}/{title} ({year})/{title} ({year})[[ - {resolution}]]{ext}
# 剧集路径
剧集/{title_initial}/{title} ({year})/{season:02d;prefix=S}/{title} ({year}) - {season:02d;prefix=S}{episode:02d;prefix=E}[[ - {resolution}]]{ext}
关于文件操作方式
本项目支持4中文件操作方式,推荐优先考虑硬链接:
- 移动:不需要保留源视频文件时使用,直接将源文件移动到目标路径下。
- 硬链接:需要保留源视频文件时使用,可在目标路径下创建硬链接,操作目标路径下文件不影响源文件,并且不会占用额外的存储空间,需要源路径和目标路径在同一个存储器上。
- 复制:需要保留源视频文件且无法使用硬链接时选择,效率低下,并且占用双倍存储。
- 软链接:特殊情况使用。
关于项目
GitHub地址:https://github.com/media-marshal/media-marshal
访问GitHub主页获取更多信息。
后记
在使用Media Marshal时,建议先创建空白媒体库,功能验证通过后再用于正式媒体库,以防发生意料之外的效果。
Media Marshal仍处于测试版本,感谢您的使用,欢迎留下您的意见和建议。