EMBRESS是一个全自动的文件重命名工具,专为Emby、Jellyfin、Plex等媒体库设计,可确保所有文件名称符合标准化的命名约定,以进行适当的刮削和元数据解析。
请确保影视库中节目目录命名已经符合规范,如 /data/anime/节目XX/Season 01/AnimeXX 01 [1920x1080].mkv
可通过将 /data/anime 映射到docker容器内目录
如 -v /data/anime:/app/media/anime
EMBRESS会自动将宿主机anime目录添加到影视库的遍历列表中,通过Season XX目录名,以识别出季度信息
不需要且不要去映射电影等无需季度标识的文件库目录!
适用于命名混乱、正则难以覆盖的文件,借助大模型(OpenAI 兼容接口)智能改名。
使用方式:
Anime/某剧),点击「绑定」效果:
剧名 - [SxxEyy] - 分集标题.扩展名自动把散落在媒体库各处的离散剧集归档到规范的 媒体类型/剧名/Season XX 目录,全程无需人工干预。
使用方式:
效果:
媒体类型/剧名/Season XX 目录并归位文件,字幕、音频、图片、NFO 等附属文件同步移动Food Court de, Mata Ashita)会被识别出中文剧名,并以 [中文名] 原标题 形式加前缀,不覆盖原标题提示词以独立文件维护(
python/prompts/),修改后重启容器生效。
embress
├── python
│ ├── app.py ➔ API服务与页面路由
│ ├── embress_renamer.py ➔ 扫描与正则重命名执行
│ ├── ai_renamer.py ➔ AI 重命名与模型供应商
│ ├── ai_organizer.py ➔ 智能整理与还原
│ ├── prompt_loader.py ➔ 系统提示词加载
│ ├── prompts ➔ 系统提示词(独立文件,可自定义)
│ │ ├── rename_system.txt ➔ AI 重命名提示词
│ │ ├── organize_system.txt ➔ 智能整理提示词
│ │ └── connectivity_probe.txt ➔ 连通性测试提示词
│ ├── database.py ➔ 数据库存储
│ ├── crypto_utils.py ➔ API Key 加密存储
│ ├── email_notifier.py ➔ 邮件通知
│ ├── logging_utils.py ➔ 日志配置
│ ├── requirements.txt ➔ python依赖
│ ├── templates
│ │ └── index.html ➔ 前端面板
│ └── static ➔ 静态文件目录
│ ├── css ➔ 样式(app.css / theme.css)
│ ├── img ➔ 图标资源
│ └── js
│ └── main.js ➔ 前端逻辑
├── docs
│ ├── imgs ➔ 项目 Logo
│ └── screenshots ➔ 界面截图
├── conf
│ ├── supervisord.conf ➔ supervisord进程配置
│ └── regex_pattern.json ➔ 默认正则配置
├── Dockerfile ➔ 打包配置
└── docker-compose.yml ➔ docker构建配置,宿主机要先创建对应目录
docker pull meidlinger1024/embress:latest
docker run -d \
--name embress \
-p 15000:15000 \
-v ${media_path1}:/app/media/path1 \
-v ${media_path2}:/app/media/path2 \
-v ${logs_path}:/app/python/logs \
-v ${conf_path}:/app/conf \
-e TZ=Asia/Shanghai \
-e ACCESS_KEY=${ACCESS_KEY} \
-e MEDIA_PATH=/app/media \
-e CONFIG_DB_PATH=/app/conf/config.db \
-e DEFAULT_REGEX_PATH=/app/conf/regex_pattern.json \
-e LOG_PATH=/app/python/logs \
-e SCAN_INTERVAL=3600 \
-e EMAIL_ENABLED=false \
-e EMAIL_HOST=mail.163.com \
-e EMAIL_PORT=465 \
-e [email protected] \
-e EMAIL_PASSWORD=password \
-e [email protected] \
-e AI_BASE_URL=https://api.openai.com/v1 \
-e AI_API_KEY=${AI_API_KEY} \
-e AI_MODEL=gpt-4o-mini \
-e AUTO_ORGANIZE_INTERVAL=3600 \
meidlinger1024/embress:latest
${media_path1}:影视库目录1
${media_path2}:影视库目录2
${logs_path}:python日志目录,扫描记录持久化目录
${ACCESS_KEY}:访问秘钥
SCAN_INTERVAL:扫描间隔,单位秒
MEDIA_PATH:容器影视库根目录,默认是/app/media
CONFIG_DB_PATH:数据库存储目录,默认/app/conf/config.db
DEFAULT_REGEX_PATH:默认正则表达式配置,默认/app/conf/regex_pattern.json
LOG_PATH:程序日志配置,默认/app/python/logs
EMAIL_ENABLED:邮箱通知启用配置,默认false
AI_BASE_URL:AI 接口地址(OpenAI 兼容),默认 https://api.openai.com/v1
AI_API_KEY:AI 接口密钥,也可在页面的「模型供应商」中添加(推荐,加密存储)
AI_MODEL:默认模型名,默认 gpt-4o-mini
AI_TIMEOUT:AI 请求超时时间(秒),默认 60
AI_MAX_FILES:单次交给 AI 处理的文件数上限,默认 80
AUTO_ORGANIZE_INTERVAL:智能整理的默认执行间隔(秒),默认 3600
AUTO_ORGANIZE_TTL:智能整理对无法识别文件的暂缓时长(秒),超时后重新评估,默认 86400
EMBRESS_SECRET_KEY / EMBRESS_KEY_PATH:用于加密存储 API Key 的密钥,建议持久化 conf 目录或显式指定
version: "3"
services:
embress:
image: meidlinger1024/embress:latest
container_name: embress
restart: always
ports:
- "15000:15000"
volumes:
- _media_path1:/app/media/path1
- _media_path2:/app/media/path2
- _logs_path:/app/python/logs
- _conf_path:/app/conf
environment:
- TZ=Asia/Shanghai
- ACCESS_KEY=ACCESS_KEY
- MEDIA_PATH=/app/media
- CONFIG_DB_PATH=/app/conf/config.db
- DEFAULT_REGEX_PATH=/app/conf/regex_pattern.json
- LOG_PATH=/app/python/logs
- SCAN_INTERVAL=3600
- EMAIL_ENABLED=false
- EMAIL_HOST=mail.163.com
- EMAIL_PORT=465
- [email protected]
- EMAIL_PASSWORD=password
- [email protected]
- AI_BASE_URL=https://api.openai.com/v1
- AI_API_KEY=AI_API_KEY
- AI_MODEL=gpt-4o-mini
- AUTO_ORGANIZE_INTERVAL=3600
仪表板
未重命名文件
指定路径扫描
白名单管理
正则配置
正则调试器
模型供应商
新增供应商
AI 重命名
整理过程
扫描历史
变更记录
整理还原
重命名记录
日志查看
Content type
Image
Digest
sha256:dae295cb3…
Size
64.3 MB
Last updated
3 days ago
docker pull meidlinger1024/embress