{"id":13680432,"url":"https://github.com/Nriver/Episode-ReName","last_synced_at":"2025-04-29T23:31:37.387Z","repository":{"id":39575278,"uuid":"418763237","full_name":"Nriver/Episode-ReName","owner":"Nriver","description":"电视剧/番剧自动化重命名工具, 一键批量改名. 可配合QBittorrent下载后自动重命名, 方便Emby自动刮削. 支持Windows, Linux, MacOS, Docker 和 群晖套件环境运行","archived":false,"fork":false,"pushed_at":"2025-04-23T07:42:02.000Z","size":2390,"stargazers_count":1272,"open_issues_count":7,"forks_count":77,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-23T08:24:03.841Z","etag":null,"topics":["automation","command-line","command-line-tool","docker","linux","macos","python","python3","qbittorrent","rename","rename-script","scraper","synology","windows"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Nriver.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-10-19T03:58:13.000Z","updated_at":"2025-04-23T07:34:19.000Z","dependencies_parsed_at":"2022-07-11T05:31:10.146Z","dependency_job_id":"08644cf5-b7f4-4cd0-a48e-7abba4c228b8","html_url":"https://github.com/Nriver/Episode-ReName","commit_stats":null,"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nriver%2FEpisode-ReName","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nriver%2FEpisode-ReName/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nriver%2FEpisode-ReName/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nriver%2FEpisode-ReName/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Nriver","download_url":"https://codeload.github.com/Nriver/Episode-ReName/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251600152,"owners_count":21615652,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","command-line","command-line-tool","docker","linux","macos","python","python3","qbittorrent","rename","rename-script","scraper","synology","windows"],"created_at":"2024-08-02T13:01:17.054Z","updated_at":"2025-04-29T23:31:32.372Z","avatar_url":"https://github.com/Nriver.png","language":"Python","readme":"# 📝 Episode-ReName\n\n[![Github all releases](https://img.shields.io/github/downloads/Nriver/Episode-ReName/total.svg)](https://GitHub.com/Nriver/Episode-ReName/releases/)\n[![GitHub license](https://badgen.net/github/license/Nriver/Episode-ReName)](https://github.com/Nriver/Episode-ReName/blob/master/LICENSE)\n[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://GitHub.com/Nriver/Episode-ReName/graphs/commit-activity)\n[![GitHub release](https://img.shields.io/github/v/release/Nriver/Episode-ReName.svg)](https://github.com/Nriver/Episode-ReName/releases/)\n\n[懒人包下载](https://github.com/Nriver/qb-rss-manager/tree/main/aio)\n\n电视剧/番剧自动化重命名工具. 本工具可以对大部分资源进行重命名处理. 主要是给资源重命名后给Emby, Jellyfin, Tiny Media\nManager 等软件刮削数据使用. 也可以配合qbitorrent下载文件后自动重命名,\n具体使用方法请看下面的说明.\n\n# ⚠️ 注意\n\n注意0: 本工具是**命令行**工具, 没有界面, 没有界面, 没有界面, 不要问我为什么双击exe没有反应!\n\n注意1: 需要重命名的文件必须在类似 `Season 1`, `s1` 的目录中才会被处理. 这样设置是为了防止误操作.\n\n注意2: 对文件夹使用本程序会删除没有按照规范命名的 `jpg`, `png`, `nfo`, `torrent` 文件！！如果有需要的文件请提前备份.\n关于文件命名规范请参考[强制的规范元数据结构](https://github.com/Nriver/Episode-ReName#强制的规范元数据结构).\n\n注意3: 请不将本程序放在含有空格的路径中, 路径可以有中文但是不能有空格, 切记！\n\n# 🦮 目录\n\n\u003c!--ts--\u003e\n\n* [Episode-ReName](#-episode-rename)\n* [注意](#️-注意)\n* [目录](#-目录)\n* [使用场景1 - 右键菜单调用](#使用场景1----右键菜单调用)\n* [使用场景2 - windows的qbitorrent下载后自动重命名](#使用场景2----windows的qbitorrent下载后自动重命名)\n* [使用场景3 - 群晖套件版qbittorrent下载后自动重命名](#使用场景3----群晖套件版qbittorrent下载后自动重命名)\n* [使用场景4 - docker版qbittorrent下载后自动重命名](#使用场景4----docker版qbittorrent下载后自动重命名)\n* [使用场景5 - windows命令行运行](#使用场景5----windows命令行运行)\n   * [简易参数模式](#-简易参数模式)\n   * [复杂参数模式](#-复杂参数模式)\n* [使用场景6 - Linux终端运行](#使用场景6----linux终端运行)\n* [脚本编译成可执行程序](#️-脚本编译成可执行程序)\n* [强制的规范元数据结构](#-强制的规范元数据结构)\n* [工具主要功能和处理逻辑](#️-工具主要功能和处理逻辑)\n* [主要文件说明](#-主要文件说明)\n   * [处理带有数字的剧集名称](#-处理带有数字的剧集名称)\n* [多季番剧tmdb集数适配](#-多季番剧tmdb集数适配)\n* [Stargazers 数据](#-stargazers-数据)\n* [捐赠](#-捐赠)\n* [感谢](#-感谢)\n\n\n\u003c!--te--\u003e\n\n# 使用场景1 - 📁 右键菜单调用\n\n右键菜单快速重命名\n\n1. 从[Release](https://github.com/Nriver/Episode-ReName/releases)直接下载最新的exe程序\n2. 修改 右键菜单 添加.reg 的exe路径并导入注册表\n\n![添加注册表](docs/添加注册表.gif)\n\n3. 找到要重命名的文件/文件夹, 右键点击\"自动剧集命名\".\n\n![右键重命名](docs/右键重命名.gif)\n\n注：可以多选进行批量操作. win10多选超过15个, 右键菜单会消失, 可以运行`win10 右键多文件限制修改.reg`将限制修改成999个.\n\n# 使用场景2 - 📥 windows的qbitorrent下载后自动重命名\n\n![qb下载自动重命名](docs/qb下载自动重命名.gif)\n\n可以在qbittorrent 中进行设置, 实现下载完成后自动重命名\n\n1. 选项—\u003eBitTorrent—\u003e做种限制—\u003e做种0分钟—\u003e暂停或删除做种\n2. 选项—\u003e下载—\u003e完成时运行外部程序—\u003e命令行\n\n```\nD:\\Test\\EpisodeReName.exe \"%D\" 15\n```\n\n参数说明\n\n- EpisodeReName工具所在路径\n- \"%D\"是文件下载路径, 这个一般不要修改\n- 最后的数字是执行延时, 单位是秒, 因为qb下载完成会锁住文件, 需要等一段时间来让它释放, 时间长短可自行调整\n\n以上为简易参数, 需要其它功能请参考下面的复杂参数模式\n\n```\nD:\\Test\\EpisodeReName.exe --path \"%D\" --delay 15 --overwrite 1\n```\n\n具体参数请看下面的`复杂参数模式`章节\n\n# 使用场景3 - 📥 群晖套件版qbittorrent下载后自动重命名\n\n1. 群晖需要安装qbittorrent套件和python3套件\n2. 群晖的qb使用的是admin账户, 请将`EpisodeReName.py`和`custom_rules.py`, `utils`目录放到群晖File Station的`homes/admin`\n   目录下, 或者手动通过ssh上传到`/var/services/homes/admin`目录 或 `/volume1/homes/admin`目录\n3. 设置下载后自动运行改名，修改qb配置: `下载` 勾选 `Torrent 完成时运行外部程序`,\n   下面填上\n\n```\n/usr/local/bin/python3 /var/services/homes/admin/EpisodeReName.py --path \"%D\" --delay 15 --overwrite 1\n```\n\n4. 取消做种，修改qb配置: `BitTorrent` 的 `做种限制` 改成 当分享率达到0，当做种时间达到0分钟然后暂停torrent\n\n# 使用场景4 - 🐳 docker版qbittorrent下载后自动重命名\n\n测试了以下三个镜像 `linuxserver/qbittorrent`, `superng6/qbittorrentee`, `johngong/qbittorrent`, 其它镜像操作也是类似的\n\n1. 下载 `EpisodeReName.py`和`custom_rules.py`, `utils`目录到docker的宿主机上\n2. 复制到docker容器里，这里以从宿主机复制到docker容器根目录 `/` 为例\n\nlinuxserver和johngong用这个命令复制\n\n```\ndocker cp EpisodeReName.py qbittorrent:/\ndocker cp custom_rules.py qbittorrent:/\n```\n\nsuperng6的容器名字要改成qbittorrentee\n\n```\ndocker cp EpisodeReName.py qbittorrentee:/\ndocker cp custom_rules.py qbittorrentee:/\n```\n\n3. 设置下载后自动运行改名，修改qb配置: `下载` 勾选 `Torrent 完成时运行外部程序`,\n   下面填上\n\n```\npython3 /EpisodeReName.py --path \"%D\" --delay 15 --overwrite 1\n```\n\n4. 取消做种，修改qb配置: `BitTorrent` 的 `做种限制` 改成 当分享率达到0，当做种时间达到0分钟然后暂停torrent\n\n注: 以上方法写入的文件在更新镜像后可能会被删除，你可以把py文件放到你自己映射的下载目录里，改好对应的路径就行\n\n# 使用场景5 - 🪟 windows命令行运行\n\n## 😊 简易参数模式\n\n可以直接传入文件路径, 注意有空格的路径加双引号\n\n```\nD:\\Test\\EpisodeReName.exe \"D:\\我的番剧\\XXX\\Season 1\"\n```\n\n可以传入第二个参数, 作为重命名的延迟. 这个参数主要是配合qbitorrent使用, 避免qb锁定文件导致重命名失败.\n一般停止做种15秒后在操作能确保文件被释放.\n\n```\nD:\\Test\\EpisodeReName.exe \"D:\\我的番剧\\XXX\\Season 1\" 15\n```\n\n## 🤯 复杂参数模式\n\n使用方法示例\n\n延迟1秒后重命名, 如果有同名文件, 取消重命名操作\n\n```\nEpisodeReName.exe --path D:\\down\\XXX\\s2 --delay 1 --overwrite 0\n```\n\n(测试）命名格式修改，识别分辨率，输出结果类似于 `S01E01 - 1080p.mp4`, 以下两个命令效果相同\n\n```\nEpisodeReName.exe --path D:\\down\\XXX\\s2 --parse_resolution 1\nEpisodeReName.exe --path D:\\down\\XXX\\s2 --name_format \"S{season}E{ep} - {resolution}\"\n```\n\n使用 `-h` 参数查看支持的参数\n\n```\nD:\\Test\\EpisodeReName.exe -h\n```\n\n目前支持的参数\n\n```\n  --path PATH           目标路径\n  --delay DELAY         重命名延迟(秒) 配合qb使用的参数, 默认为0秒不等待\n  --overwrite OVERWRITE\n                        强制重命名, 默认为1开启覆盖模式, 0为不覆盖, 遇到同名文件会跳过, 结果输出到error.txt\n  --name_format NAME_FORMAT\n                        (慎用) 自定义重命名格式, 参数需要加引号 默认为 \"S{season}E{ep}\" 可以选择性加入 系列名称如 \"{series} - S{season}E{ep}\"\n  --name_format_bypass NAME_FORMAT_BYPASS\n                        (慎用) 自定义重命名格式, 对满足格式的文件忽略重命名步骤\n  --parse_resolution PARSE_RESOLUTION\n                        (慎用) 识别分辨率，输出结果类似于 `S01E01 - 1080p.mp4`, 1为开启, 0为不开启. 开启后传入的 name_format 参数会失效, 强制设置为\n                        \"S{season}E{ep} - {resolution}\"\n  --force_rename FORCE_RENAME\n                        (慎用) 即使已经是标准命名, 也强制重新改名, 默认为0不开启, 1是开启\n  --replace REPLACE [REPLACE ...]\n                        自定义替换关键字, 一般是给字幕用, 用法 `--replace chs chi --replace cht chi` 就能把chs和cht替换 成chi, 可以写多组关键字\n  --use_folder_as_season USE_FOLDER_AS_SEASON\n                        优先使用父级文件夹中的季数来代替文件名中的季数, 默认为0不开启, 1是开启\n  --del_empty_folder DEL_EMPTY_FOLDER\n                        删除空的子目录, 默认为0不开启, 1是开启\n```\n\n# 使用场景6 - 🐧 Linux终端运行\n\n本程序支持在linux中运行, 需要python3运行环境\n\n先将整个项目clone下来\n\n```\ngit clone https://github.com/Nriver/Episode-ReName\n```\n\n使用\n\n```\npython3 -m pip install -r requirements.txt --user\n```\n\n命令来安装相关模块\n\n使用以下命令调用程序进行重命名操作\n\n```\npython3 EpisodeReName.py \"/home/user/我的番剧/XXX/Season 1\"\n```\n\n# 🛠️ 脚本编译成可执行程序\n\n如果你想自己将python脚本打包成exe, 需要python3运行环境.\n\n安装[pyinstaller](https://github.com/pyinstaller/pyinstaller)模块.\n\n可以使用以下命令来安装相关模块\n\n```\npip3 install -r requirements.txt\n```\n\n将脚本打包成可执行程序\n\n```\npyinstaller -F EpisodeReName.py\n```\n\n将脚本打包成可执行程序 (不带启动黑框)\n\n```\npyinstaller -F -w EpisodeReName.py\n```\n\n# 📜 强制的规范元数据结构\n\n1. 剧季文件夹：Season1 / Season 1 / s1 / S1\n2. 媒体源文件：SxxExx (.mkv / .mp4 等常见视频格式)\n3. 剧集元数据：SxxExx.nfo / SxxEPxx.nfo\n4. 外置字幕源：SxxExx.zh (.ass / .ssa / .srt)\n5. 剧集缩略图：SxxExx-thumb (.jpg / .png)\n6. 剧季元数据：season.nfo\n\n# 🕹️ 工具主要功能和处理逻辑\n\n1. 对剧季命名以外的文件夹无效\n2. 根据保存的剧季目录命名集号\n3. 删除规范以外的多余元数据\n4. 下载完成后尝试命名并加.new后缀\n5. 删除可命名的同名文件达到换源目的\n6. 去除文件命名后的.new后缀名\n7. 如果4步命名成功则继续执行5, 6\n8. 如果第4步命名不成功则终止后续操作\n\n# 📄 主要文件说明\n\n`EpisodeReName.py` 重命名工具主程序\n\n`utils` 工具类\n\n`make_exe.bat` 将python脚本打包成exe, 依赖[pyinstaller](https://github.com/pyinstaller/pyinstaller)模块\n\n## 🚩 处理带有数字的剧集名称\n\n`ignore` 文件\n\n如果剧集中带有年份等数字, 程序可能会将剧集标题中的数字误认为是集数. 要处理这种文件, 可以在`EpisodeReName`\n主程序同目录下创建一个名为`ignore`的文件.\n把完整的剧集名称输入进去, 一行一个剧集名称, 程序就会在获取集数时忽略这些文字. 注意文件要使用`utf-8`编码.\n\n# 💡 多季番剧tmdb集数适配\n\n对于有多季的番剧, 比如鬼灭之刃28集, 在tmdb里没有第28集, 而是第2季第2集, 要正确削刮需要从S02E28改成S02E02.\n\n这时候可以在鬼灭之刃的`Season 2`文件夹中添加一个`all.txt`文件, 里面写上一个数字, 会在自动重命名的时候减掉这个数字.\n比如上面的例子就需要在`all.txt`填入`26`, 自动重命名就会把`S02E28`改成`S02E02`,\n这样就能正常削刮了.\n\n`all.txt` 也可以填入负数来实现增加数字. 比如需要把`S02E01`改为`S02E13`, 就填入`-12`.\n\n---\n\n# ⏳ Stargazers 数据\n\n统计图使用 [caarlos0/starcharts](https://github.com/caarlos0/starcharts) 项目生成.\n\n[![Stargazers over time](https://starchart.cc/Nriver/Episode-ReName.svg)](https://starchart.cc/Nriver/Episode-ReName)\n\n---\n\n# 💰 捐赠\n\n如果你觉得我做的程序对你有帮助, 欢迎捐赠, 这对我来说是莫大的鼓励!\n\n支付宝:  \n![Alipay](docs/alipay.png)\n\n微信:  \n![Wechat Pay](docs/wechat_pay.png)\n\n---\n\n# 🙏 感谢\n\n感谢某位不愿意透露姓名的朋友, 没有他的帮助, 就没有这个工具的诞生.\n\n感谢 `J*s` 赞助的50元!\n\n感谢 `**莲` 赞助的10元!\n\n感谢 `**楷` 赞助的5元!\n\n感谢 `*睿` 赞助的5元! 备注: 感谢您的自动命名工具\n\n感谢 `*メ` 赞助的200元!\n\n感谢 `A*` 赞助的100元! 备注: 非常感謝你寫這個小程式，捐贈了小小的心意給你及保重身體!\n\n感谢Jetbrins公司提供的Pycharm编辑器!\n\n[![Jetbrains](docs/jetbrains.svg)](https://jb.gg/OpenSource)\n","funding_links":[],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNriver%2FEpisode-ReName","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FNriver%2FEpisode-ReName","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNriver%2FEpisode-ReName/lists"}