看BD番剧也有好几个年头了,在体验过清晰的画质后,对于绝多数的在线视频网站自然是瞧不上眼的 ———— 怎么能够这么糊?这么糊能看的下去?
更何况还有完整的片段和各种Specials,这都是在线观看无法满足的。
不过看BD还有件麻烦的事就是找字幕-重命名字幕
这个流程。虽然有些地方已经有字幕匹配系统,或是打包好的字幕,但是大多数情况还是需要自己去把字幕和番剧一一对应。一个一个复制再粘贴实在太过麻烦,而且当剧集数量多的时候更显得不是一个好办法,而Windows默认的批量命名规则也只是简单的加个序号,并不能很好的达到目的。
虽然在看的时候手动可以手动选择字幕,但是作为一个懒人,让字幕能够被播放器自动读取才符号我的风格。另一点,命名为标准的刮削格式Anime Name - S1E1
,也是为了更好的让刮削软件进行番剧的识别和信息刮削,从而提高番剧的整理、观看体验。毕竟整理成影视墙/海报墙的视觉观感或信息获取体验都比简单用文件夹分类好太多。
如何为番剧字幕快速重命名
利用软件ReNamer来批量命名文件。
这个软件的设计方式是通过多条基本规则的组合来达成各种复杂重命名的实现,通常情况下,插入、删除、替换、移除、重排、序列化、随机化...等简单规则的组合已经可以满足多数情况的需求了,而更复杂的需求还能通过正则表达式和Pascal脚本来自定义逻辑。
有免费版本、支持中文、轻量便携、简单实用,让我在初次接触这个软件的时候就决定把它丢进我的坚果云,一直用到现在。虽然免费版有预设和规则数量限制,不过已经能够满足我的日常使用了。
匹配字幕和番剧文件
我们统一将 字幕的名称
修改为对应的 番剧名称
。
假设我们下载到的番剧资源名称是 [Demo_Studio] Hello World - 01 [BDRip 1080p x265 Main10 Flac 2.0ch].mkv
,而字幕是[Test]Hello World[Ep01] [BDRip 1080p x265 Main10 Flac 2.0ch].chs&jap.ass
。最终需要把字幕文件修改为[Demo_Studio] Hello World - 01 [BDRip 1080p x265 Main10 Flac 2.0ch].ass
。
如果需要刮削的话,最终还要把字幕和番剧资源文件都修改为Hello World - S1E1
的格式。
ReNamer主要分三个区域:
- 最上方是导航菜单,可以进行设置和执行添加/命名操作
- 中间是规则区域,用于添加重命名规则,软件是按照从上到下的顺序执行规则。免费版限制只能添加5条规则,不过完全够用了
- 下方是待重命名的文件区域,可以把要命名的文件或文件夹直接拖入这个区域。点击表头也可以排序,还能根据选定项进行清除或过滤。
批量命名方式
-
首先将番剧资源批量拖入ReNamer中,然后按集数正序排列
-
按正序排序后,下方区域全选文件(鼠标框选或Ctrl+A),然后右击选择
分析文件名
-
复制输入框内的所有文本,这些文本是框选的文件的文件名,它们按顺序排列,一行一条
-
移除ReNamer的文件列表或者再打开一个ReNamer窗口,将字幕资源拖入其中,同样按集数正序排列
-
在上方规则区域添加一条新的规则,选择最下面的
用户输入
,然后把步骤3复制id文本粘贴到输入框中,之后点击添加规则 -
这时候可以看到新名称发生了变化,但是最后多了 视频的扩展名
.mkv
,可以再添加一条移除规则:移除末个的.mkv(或其他的视频扩展名)
,然后确认新名称符合要求后,点击上方的重命名按钮,即可完成文件的重命名
-
至此已经将字幕名称修改为视频的同名格式了
脚本自动匹配
可以把 分析文件名-用户输入
的批量命名方式存为一个预设,更方便的进行修改和重命名操作,但是有时候仍然会显得略显繁琐,要添加两次列表,要点击多次鼠标。而我们可以利用复杂规则的Pascal脚本
方式来达成自动匹配的目的。
- 先把字幕文件和番剧文件都拖入文件区域
- 目前有两种预设,一种是让所有字幕按照视频名称重命名;另一种是让所有视频按照字幕名称重命名。
- 两种预设都需要依赖于排序来定位。
- 当预设为字幕随视频时,视频文件在前,字幕文件需要在后,且都要以相同顺序对应。
- 反之,当预设为视频随字幕时,字幕文件在前,视频文件需要在后,同样也要以相同顺序对应。
- 添加一条规则:
Pascal脚本
,并将以下内容覆盖所有原内容,然后按需求添加以下任意一种规则:
视频随字幕
var
tg: array[0..1024] of String;
baseName, ext: String;
i, j: Integer;
function IsSubtitleFile(ext: WideString): Boolean;
begin
Result := (ext = '.mkv') or (ext = '.mp4') or (ext = '.avi');
end;
begin
baseName := WideExtractBaseName(FileName);
ext := WideExtractFileExt(FileName);
if IsSubtitleFile(ext) then
begin
if Length(tg[j]) > 0 then
begin
FileName := tg[j] + ext;
j := j + 1;
end;
end
else
begin
tg[i] := baseName;
i := i + 1;
end;
end.
字幕随视频名称
var
tg: array[0..1024] of String;
baseName, ext: String;
i, j: Integer;
function IsSubtitleFile(ext: WideString): Boolean;
begin
Result := (ext = '.ass') or (ext = '.srt') or (ext = '.sub');
end;
begin
baseName := WideExtractBaseName(FileName);
ext := WideExtractFileExt(FileName);
if IsSubtitleFile(ext) then
begin
if Length(tg[j]) > 0 then
begin
FileName := tg[j] + ext;
j := j + 1;
end;
end
else
begin
tg[i] := baseName;
i := i + 1;
end;
end.
- 如果已经按照步骤正确排序后,此时可以看到字幕文件的新名称已经按照视频的信息进行重命名了。如果名称没有任何变化,说明顺序不对,可以点击扩展名或名称列重新排序然后按预览按钮查看。
- 可以把该规则保存为预设,方便下次使用,后续使用同样只需要把字幕和视频文件拖入然后排序,应用预设即可。
修改为刮削格式
一般我们下载的番剧都是[XXX]A Demo Title 01 [1080P](ABC).mkv
或者[XXX]Another Demo Title - 02[BD][1080p]
此类格式的命名,组成规律是以各类括号包裹的信息,此处的括号指()[]{}
中的任意成对符号,在下文中会视为可以互相替代的符号。然后是番剧的罗马音名称/英文名,后接 剧集的集数。而括号包裹的信息一般是和剧集本身信息无关的,如字幕组信息、分辨率等...而例如TinyMediaManager
之类的媒体刮削器,对于刮削文件的命名都有一定的要求,例如:HelloWorld - S1E3.mkv
表示剧集Hello World
的第一季第三集。番剧的命名可以不够精确,等正式刮削的时候去匹配自动校正,但是季信息和集信息一定要准确:New Hello World - S1E3.mkv
。
下列有几个通用的预设规则可以方便快速格式化为刮削命名。
预设文件默认被存放于 ReNamer目录/Presets/
中。在预设目录中新建一个预设名称.rnp
的文件,然后复制预设代码到文件中保存,即可导入该预设。也可以利用菜单栏的预设-导入
功能进行文件导入。
需要注意的是:以下的预设重命名默认都视为S1E?
,即第一季第N集,如果要命名为其他季,需要修改S1为对应数值。
[Info] Title - episode (Other Info)
该预设会匹配类似[XXX] Hello World - 02 [123][ABC](jkv)
,也匹配-
符号不存在的场景。
[Rule0]
ID=CleanUp
Config=BRACKETSROUND:1;BRACKETSSQUARE:1;BRACKETSCURVY:1;SPACESDOT:0;SPACESCOMMA:0;SPACESUNDERSCORE:0;SPACESPLUS:0;SPACESHYPHEN:0;SPACESWEB:0;SPACESSKIPVERSIONS:0;SPACESFIX:1;SKIPEXTENSION:1;PREPAREFORSHAREPOINT:0;INSERTSPACEBEFORECAPITALS:0;NORMALIZESPACES:1;STRIPUNICODEMARKS:0
Marked=1
Comment=
[Rule1]
ID=RegEx
Config=EXPRESSION:%2D%3F%5Cs%28%5Cd%7B1%2C2%7D%29;REPLACE:+%2D+S1E%241;CASESENSITIVE:0;SKIPEXTENSION:1
Marked=1
Comment=
[Rule2]
ID=Remove
Config=TEXT:END;WHICH:2;SKIPEXTENSION:1;CASESENSITIVE:0;USEWILDCARDS:0;WHOLEWORDSONLY:0
Marked=1
Comment=
[Filters]
AddFilesFromFolders=1
AddFoldersAsFiles=0
IncludeSubfolders=1
IncludeHidden=0
IncludeSystem=0
SkipRootFoldersAsFiles=0
MasksOnFileName=0
Masks=
MasksExclude=*.TC.*;*.CHT.*;
[Info] Title - [episode] (Other Info)
该预设与上个预设的差别是,集数episode被一对中括号[]包裹,所以要进行额外处理。
[Rule0]
ID=RegEx
Config=EXPRESSION:%5C%5B%28%5Cd%2B%29%5C%5D;REPLACE:+%2D+S1E%241;CASESENSITIVE:0;SKIPEXTENSION:1
Marked=1
Comment=
[Rule1]
ID=CleanUp
Config=BRACKETSROUND:1;BRACKETSSQUARE:1;BRACKETSCURVY:1;SPACESDOT:0;SPACESCOMMA:0;SPACESUNDERSCORE:0;SPACESPLUS:0;SPACESHYPHEN:0;SPACESWEB:0;SPACESSKIPVERSIONS:0;SPACESFIX:1;SKIPEXTENSION:1;PREPAREFORSHAREPOINT:0;INSERTSPACEBEFORECAPITALS:0;NORMALIZESPACES:1;STRIPUNICODEMARKS:0
Marked=1
Comment=
[Filters]
AddFilesFromFolders=1
AddFoldersAsFiles=0
IncludeSubfolders=1
IncludeHidden=0
IncludeSystem=0
SkipRootFoldersAsFiles=0
MasksOnFileName=0
Masks=
MasksExclude=*.TC.*;*.CHT.*;
[Info] Title - 第episode话 (Other Info)
这个预设会匹配[XXX] Hello World 第02话/話 [123][ABC](jkv)
格式的文件。
[Rule0]
ID=CleanUp
Config=BRACKETSROUND:1;BRACKETSSQUARE:1;BRACKETSCURVY:1;SPACESDOT:0;SPACESCOMMA:0;SPACESUNDERSCORE:0;SPACESPLUS:0;SPACESHYPHEN:0;SPACESWEB:0;SPACESSKIPVERSIONS:0;SPACESFIX:1;SKIPEXTENSION:1;PREPAREFORSHAREPOINT:0;INSERTSPACEBEFORECAPITALS:0;NORMALIZESPACES:1;STRIPUNICODEMARKS:0
Marked=1
Comment=
[Rule1]
ID=RegEx
Config=EXPRESSION:%E7%AC%AC%28%5Cd%7B1%2C2%7D%29%5B%E8%AF%9D%7C%E8%A9%B1%5D%3F;REPLACE:+%2D+S1E%241;CASESENSITIVE:0;SKIPEXTENSION:1
Marked=1
Comment=
[Filters]
AddFilesFromFolders=1
AddFoldersAsFiles=0
IncludeSubfolders=1
IncludeHidden=0
IncludeSystem=0
SkipRootFoldersAsFiles=0
MasksOnFileName=0
Masks=
MasksExclude=*.TC.*;*.CHT.*;
其他的话
可以参照预设进行符合自己习惯的修改,生活工作中其实也经常需要批量重命名,不过我大多数情况还是用来重命名字幕。总之,ReNamer是一款轻量且强大的重命名软件,尽情的组合规则可以很简单的达成批量自定义重命名。
另外,还有一件有趣且让我印象深刻的事:去年的时候,我更新了ReNamer的大版本,却发现期望结果和旧版本不同,于是写了一封邮件向他们的团队反馈这个事。令我没想到的是,我很快便得到了答复,详细的告诉产生这个结果的原因,并且发行了一个拥有兼容性设置的小版本。
谢谢大佬