深色模式
自定义识别词
自定义识别词在名称解析前执行,用来预处理标题。它适合解决“文件名写法太乱导致识别失败”的问题,例如删除噪声词、替换季名、指定 TMDB ID、修正季集、做集数偏移。
基本规则
- 一行一条规则。
#开头为注释。- 支持正则表达式。
- 默认区分大小写。
- 忽略大小写请在正则前加
(?i)。 - 替换箭头必须是
=>,两边都有空格。 - 集数偏移必须使用
<>和>>,两边都有空格。 - 规则按顺序执行,前一条改完的标题会继续交给后一条处理。
注释示例:
text
# 国产剧常用修正规则
# 动漫集数偏移规则屏蔽词删除
只写一个词或正则时,匹配到的内容会从识别标题中删除。
text
PROPER
REPACK
COMPLETE
【高清】
合集示例:
text
输入:庆余年.PROPER.S02E01.2160p.mkv
规则:PROPER
结果:庆余年..S02E01.2160p.mkv删除词适合清理影响标题识别的标记:
text
(?i)\bPROPER\b
(?i)\bREPACK\b
(?i)\bLiMITED\b
\[.*?招募.*?\]
【.*?字幕组.*?】注意:删除发生在名称解析前,不是最终文件名清理。最终文件名清理请用 渲染后处理词。
替换词
格式:
text
被替换词 => 替换词示例:
text
第一季 => S01
第二季 => S02
第三季 => S03
(?i)season\.?1 => S01
(?i)web-dl => WEB-DL中文剧集常见修正:
text
庆余年 第二季 => 庆余年 S02
凡人修仙传 年番 => 凡人修仙传 S01
斗破苍穹 年番 => 斗破苍穹 S05
吞噬星空 第四季 => 吞噬星空 S04动漫标题别名修正:
text
航海王 => 海贼王
名侦探柯南 零的日常 => 名侦探柯南 零的日常
鬼灭之刃 刀匠村篇 => 鬼灭之刃 S04
咒术回战 怀玉玉折 => 咒术回战 S02英文名大小写或分隔符修正:
text
(?i)the\.last\.of\.us => The Last of Us
(?i)game\.of\.thrones => Game of Thrones
(?i)house\.of\.the\.dragon => House of the Dragon
[\._]+ => .替换词可以为空,等同删除:
text
无水印 =>
抢先版 =>指定 TMDB
如果标题容易识别错,可以直接把某段标题替换成 NanShare 支持的内嵌信息。
组合格式:
text
被替换词 => {[tmdbid=ID;type=movie/tv;s=季;e=集]}电影示例:
text
流浪地球2 => {[tmdbid=842675;type=movie]}
封神第一部 => {[tmdbid=856289;type=movie]}
年会不能停 => {[tmdbid=1283261;type=movie]}剧集示例:
text
JoJo's Bizarre Adventure.S01E01 => {[tmdbid=45790;type=tv;s=1;e=1]}
庆余年 第二季 E01 => {[tmdbid=81357;type=tv;s=2;e=1]}
The Last of Us.S01E03 => {[tmdbid=100088;type=tv;s=1;e=3]}字段说明:
| 字段 | 是否必填 | 说明 |
|---|---|---|
tmdbid | 建议填写 | TMDB ID |
type | 建议填写 | movie 或 tv,同时指定 ID 和类型时会按该类型精确查询 |
s | 可选 | 季数 |
e | 可选 | 集数 |
type 很重要。电影写 movie,剧集写 tv。写错类型时,TMDB 精确查询会查错类别。
简单内嵌信息
除了组合格式,NanShare 也支持简单内嵌信息。识别词可以把标题替换成带这些标记的形式。
text
{tmdbid=123}
{tmdb-123}
{tmdb:123}
{doubanid=456}
{type=movie}
{type=tv}
{season=1}
{episode=1}示例:
text
某冷门电影 => 某冷门电影 {tmdbid=123456} {type=movie}
某剧第二季第3集 => 某剧 {tmdbid=654321} {type=tv} {season=2} {episode=3}组合格式更集中,也更适合复制:
text
某剧第二季第3集 => 某剧 {[tmdbid=654321;type=tv;s=2;e=3]}捕获计算
指定 TMDB 时,s 和 e 支持捕获值加表达式计算。常见用法是动漫分拆、单双集映射、特别篇偏移。
格式:
text
正则(捕获集数) => {[tmdbid=ID;type=tv;s=季;e=\1@表达式]}@ 后面的表达式会接在捕获到的数字后计算。
示例:
text
FAIRY TAIL - 100 YEARS QUEST - ([0-9][0-9]) => {[tmdbid=248947;type=tv;s=1;e=\1@*2+1]}如果捕获到 03:
text
\1 = 03
03@*2+1 -> 3*2+1 -> 7
最终 e = 7更多示例:
text
Some.Anime.EP([0-9]{2}) => {[tmdbid=123456;type=tv;s=1;e=\1@+12]}
Special - ([0-9]{2}) => {[tmdbid=123456;type=tv;s=0;e=\1]}
Part([0-9]{2}) => {[tmdbid=123456;type=tv;s=1;e=\1@*2]}
第([0-9]+)话 => {[tmdbid=123456;type=tv;s=1;e=\1@-1]}表达式只适合数字计算,常用写法:
text
\1@+1
\1@-12
\1@*2
\1@*2+1
\1@/2集数偏移
集数偏移不需要指定 TMDB,它直接改标题里被前后定位词夹住的数字。
格式:
text
前定位词 <> 后定位词 >> 偏移表达式EP 代表当前匹配到的集数。
示例:
text
第 <> 集 >> EP+1
S01E <> 2160p >> EP-12
EP <> \. >> 2*EP+1
第 <> 话 >> EP+100匹配结果示例:
text
输入:第 03 集 2160p
规则:第 <> 集 >> EP+1
结果:第 04 集 2160ptext
输入:S01E13.2160p
规则:S01E <> \. >> EP-12
结果:S01E01.2160ptext
输入:S01E03 2160p
规则:S01E <> 2160p >> 2*EP+1
结果:S01E07 2160p中文数字也可以处理。NanShare Docker 镜像已包含所需能力,按偏移规则写即可:
text
第 <> 话 >> EP+1text
输入:第 三 话
结果:第 四 话替换加偏移组合
组合规则会先执行替换,替换成功后再执行集数偏移。
格式:
text
被替换词 => 替换词 && 前定位词 <> 后定位词 >> 偏移表达式示例:
text
第二季 => S02 && S02E <> \. >> EP-12
年番 => S01 && S01E <> 2160p >> EP+24
Part 2 => S01 && S01E <> \. >> EP+12使用场景:
text
输入:庆余年 第二季 E13.2160p.mkv
规则:第二季 => S02 && S02E <> \. >> EP-12
结果:庆余年 S02 E01.2160p.mkv组合规则适合标题里没有标准季代码、但集数需要重新映射的资源。
正则写法
识别词的匹配部分是正则。常用写法:
text
(?i)web[-_. ]?dl => WEB-DL
(?i)\buhd\b => 2160p
\[[^\]]*招募[^\]]*\] =>
【[^】]*字幕组[^】]*】 =>
第\s*([0-9]+)\s*话 => E\1常用正则说明:
| 写法 | 含义 |
|---|---|
(?i) | 忽略大小写 |
\d+ | 一个或多个数字 |
[0-9]{2} | 两位数字 |
\s* | 任意空格 |
.*? | 非贪婪匹配任意字符 |
\b | 单词边界 |
NanShare Docker 镜像已包含集数偏移所需的正则能力,无需额外安装运行库。
完整配置示例
text
# ===== 通用噪声删除 =====
(?i)\bPROPER\b
(?i)\bREPACK\b
\[[^\]]*招募[^\]]*\]
【[^】]*字幕组[^】]*】
# ===== 常见标准化 =====
(?i)web[-_. ]?dl => WEB-DL
(?i)blu[-_. ]?ray => BluRay
第一季 => S01
第二季 => S02
第三季 => S03
# ===== 国产剧季名修正 =====
庆余年 第二季 => 庆余年 S02
长相思 第二季 => 长相思 S02
斗破苍穹 年番 => 斗破苍穹 S05
凡人修仙传 年番 => 凡人修仙传 S01
# ===== 精确指定 TMDB =====
JoJo's Bizarre Adventure.S01E01 => {[tmdbid=45790;type=tv;s=1;e=1]}
流浪地球2 => {[tmdbid=842675;type=movie]}
# ===== 动漫集数偏移 =====
FAIRY TAIL - 100 YEARS QUEST - ([0-9][0-9]) => {[tmdbid=248947;type=tv;s=1;e=\1@*2+1]}
S01E <> 2160p >> EP+12
# ===== 替换 + 偏移 =====
第二季 => S02 && S02E <> \. >> EP-12常见问题
为什么 => 没生效
检查箭头两边有没有空格。必须写成:
text
被替换词 => 替换词下面这种会被当成普通正则或校验失败:
text
被替换词=>替换词识别词和渲染后处理词有什么区别
识别词在名称解析前执行,会影响 TMDB 搜索、季集识别、制作组和捕获词匹配。
渲染后处理词在模板渲染后执行,只影响最终输出路径。
能不能用识别词改最终文件名
可以间接影响,但不推荐把最终文件名清理放在识别词里。最终路径里的连续符号、大小写、模板残留文本,应该交给渲染后处理词。
指定 TMDB 后还会搜索吗
会直接按内嵌 tmdbid 查询详情。如果同时指定 type,会按 movie 或 tv 精确类型查。
集数偏移为什么没反应
常见原因:
- 规则没有按
前定位词 <> 后定位词 >> 表达式写,或者分隔符两边缺少空格。 - 前定位词或后定位词没匹配到。
EP没写在表达式里。- 表达式不是数字和
+ - * / ( )这类基础运算。
捕获计算里的 \1@*2+1 是什么意思
\1 是正则第一个捕获组,@ 后面是对这个数字做运算。例如捕获 03,\1@*2+1 会得到 7。