冰箱研会长 发表于 2021-4-27 12:57

批量修改ASS字幕样式?

本帖最后由 冰箱研会长 于 2021-4-27 13:03 编辑

最近在看老攻壳, 手里的字幕在iPad上用Emby播就1/4个指甲盖大, 实在是伤眼睛...
想自己修改一下, 好像AegiSub也只能 打开文件 -> 样式管理器 -> 导入 -> 保存,
这流程也太令人绝望了, 12个字幕我都嫌烦, 老攻壳快40多份字幕了...
这种情况如果是字幕组会怎么操作呢


我自己的缓兵之计是用pwsh做搜索替换, 但是这个事情感觉像是有 "成熟好用的工具" 的样子啊...


Get-ChildItem *.ass | ForEach-Object {
    $TargetInFo= Select-String -LiteralPath $_.FullName-Pattern "Style: Default"-CaseSensitive -NoEmphasis; #获取包含了行号, 文件名在内的查找信息

    $FileContent = Get-Content -LiteralPath $_.FullName; #获取文件内容, 一个以行号为index (0-index)的字符串数组
    foreach ($LineNumber in $TargetInFo.LineNumber){ #考虑到复数查找的情况, 比如不只是Default样式而是所有Style, 对返回的行号数组进行遍历并以此替换内容
      $FileContent[$LineNumber - 1] = "Style: Default,PingFangSC-Regular,100,&H00FFFFFF,&H00FFFFFF,&H00000000,&H80000000,-1,0,0,0,100,100,0,0,1,1,1,2,20,20,30,1";
      Set-Content -LiteralPath $_.FullName -Value $FileContent; #写入
    }
}


顺便问一下 *Default和Default有啥区别啊



lawsherman 发表于 2021-4-27 12:59

记事本直接复制粘贴就行了

冰箱研会长 发表于 2021-4-27 13:03

lawsherman 发表于 2021-4-27 12:59
记事本直接复制粘贴就行了

幽远ghofar 发表于 2021-4-27 13:36

不如换一个可以自由调节外挂字幕字体大小的播放器?

softworm 发表于 2021-4-27 13:40

ass 字幕文件可以用记事本打开修改

所以

EmEditor 支持在多个文本文件中批量查找替换,楼主想做的这事我以前经常用它来完成

すぴぱら 发表于 2021-4-27 14:01

冰箱研会长 发表于 2021-4-27 14:12

幽远ghofar 发表于 2021-4-27 13:36
不如换一个可以自由调节外挂字幕字体大小的播放器?

emby其实有调节 但是它优先ASS内置的大小...

冰箱研会长 发表于 2021-4-27 14:19

すぴぱら 发表于 2021-4-27 14:01
都能写pwsh,不如写个python批处理

Python写点啥感觉都得import一堆, 心智负担有点重

BT有理 发表于 2021-4-27 14:31

完美解码可以在播放器改了另存

win8 发表于 2021-4-27 14:54

字幕组还要一句一句校对呢,怎么可能烦这个?简单做字幕我用arctime.

BRRM 发表于 2021-4-27 14:55

我写过个专门修改转换ass、srt的工具,用了好多年了不过没有制作可用于分发的版本,因为似乎大家对这件事不太感兴趣的样子。

言归正传,你可以试试 vscode EmEditor SublimeText 等等这些能批量修改文本的编辑器

nessaj 发表于 2021-4-27 15:30

暗铁 发表于 2021-4-27 18:11

你的脚本不都认为ass文件是个文本了吗,为什么会想不到用vscode之类的文本编辑器做批量替换

—— 来自 samsung SM-G9650, Android 10上的 S1Next-鹅版 v2.4.4.1

两个路人 发表于 2021-4-27 18:19

冰箱研会长 发表于 2021-4-27 18:22

暗铁 发表于 2021-4-27 18:11
你的脚本不都认为ass文件是个文本了吗,为什么会想不到用vscode之类的文本编辑器做批量替换

——...

我也...不知道...
就是没想到...

若荼泱 发表于 2021-4-27 19:07

总觉得同样的问题曾经看到过。果然没记错
https://bbs.vcb-s.com/forum.php?mod=viewthread&tid=6878

冰箱研会长 发表于 2021-4-27 19:41

若荼泱 发表于 2021-4-27 19:07
总觉得同样的问题曾经看到过。果然没记错
https://bbs.vcb-s.com/forum.php?mod=viewthread&tid=687 ...

I AM NOT ALONE!!!!

dvd6 发表于 2021-4-28 09:04

简单点,换播放器,或换一套字幕。想要查找替换,像sublime text这种文本编辑器支持多文件操作

中年油腻肥宅 发表于 2021-4-28 10:09

在ipad上看,,高清资源如果不在大屏幕上看,那还不如直接b站看在线,还有弹幕双份快乐

hein 发表于 2021-4-28 10:37

如果是每行单独定义样式的ass,那就就统一转成srt不就行了。

vxzms 发表于 2021-4-28 16:00

本帖最后由 vxzms 于 2021-4-28 16:13 编辑

https://github.com/tp7/Prass py2
移植到py3https://github.com/DeadSix27/Prass

copy-styles 简单写个bat就能批处理了 比如


@ECHO OFF & CD/D "%~dp0"

set copy_style_ass=a.ass
mkdir old_ass

:start
IF "%~1"=="" GOTO :END

python -m prass copy-styles --from "%copy_style_ass%" --to "%~nx1" -o "%~n1_styled.ass"

move "%~nx1" ".\old_ass"
rename "%~n1_styled.ass" "%~n1.ass"
del "%~n1_styled.ass"

:check
SHIFT /1
GOTO :start

pause

纳兰性 发表于 2021-4-28 17:43

印象里subtitle edit可以批处理
页: [1]
查看完整版本: 批量修改ASS字幕样式?