DYY-Studio / AddSubFontMKV_py

将您的字幕和字体通过mkvmerge快速批量封装到Matroska容器,适用于Windows系统,仅py3.7+
Apache License 2.0
26 stars 1 forks source link

分析字体所需字幕bug #37

Open tb114514 opened 4 weeks ago

tb114514 commented 4 weeks ago

版本19f1可以正常分析,20会报错: 正在尝试从字幕所在文件夹载入字体... 正在读取字体信息... 3/3 100.00% 【缓存】D:\Desktop\银魂 "29.ass" - UTF-8-SIG "30.ass" - UTF-8-SIG "31.ass" - UTF-8-SIG "32.ass" - UTF-8-SIG "33.ass" - UTF-8-SIG "34.ass" - UTF-8-SIG "35.ass" - UTF-8-SIG "36.ass" - UTF-8-SIG "37.ass" - UTF-8-SIG "38.ass" - UTF-8-SIG "39.ass" - UTF-8-SIG "40.ass" - UTF-8-SIG "41.ass" - UTF-8-SIG "42.ass" - UTF-8-SIG "43.ass" - UTF-8-SIG "44.ass" - UTF-8-SIG "45.ass" - UTF-8-SIG "46.ass" - UTF-8-SIG "47.ass" - UTF-8-SIG "48.ass" - UTF-8-SIG "49.ass" - UTF-8-SIG "50.ass" - UTF-8-SIG "51.ass" - UTF-8-SIG "52.ass" - UTF-8-SIG

Traceback (most recent call last): File "D:\game\MKVToolNix\ASFMKV_pre20.py", line 4094, in loadMain() File "D:\game\MKVToolNix\ASFMKV_pre20.py", line 3979, in loadMain cListAssFont(font_info) File "D:\game\MKVToolNix\ASFMKV_pre20.py", line 2929, in cListAssFont fontlist = assFontList(assInfo, eventTagsSplit(assInfo, False)) File "D:\game\MKVToolNix\ASFMKV_pre20.py", line 337, in eventTagsSplit eventftext = events[i]['Text'] KeyError: 'Text'

DYY-Studio commented 4 weeks ago

字幕52提供一下,直接用压缩包应该就可以上传吧。 20换了新的分析函数,19f1虽然屎山一点但也可以正常跑,有问题先用19f1。

怀疑是ASS文件格式本身的问题,是不是不太规范?

tb114514 commented 4 weeks ago

字幕52提供一下,直接用压缩包就可以上传吧。 20更换了新的分析函数,19f1虽然破了山一点但也可以正常运行,担心先用19f1。

怀疑是ASS文件格式本身的问题,是不是不太规范?

正片.zip

DYY-Studio commented 4 weeks ago

收到,经过检查发现是字幕本身的问题。 19f1版本估计也处理错误了,但是没有直接崩溃。我很怀疑结果是否准确。 问题发生在字幕52.ass371时间0:24:23.93,0:24:29.77,此处缺少一个逗号分隔。 故20版本抛出了异常。

如果您使用Aegisub,它也会抛出错误告诉您该行有误 image

该行的正确写法为 Dialogue: 0,0:24:23.93,0:24:29.77,*Default,NTP,0000,0000,0000,,压力是导致秃顶的原因 所以请注意不要压力太大\N但这样一来反而容易堆积压力\N所以归根到底我们无能为力

DYY-Studio commented 4 weeks ago

考虑在接下来的版本中预先确认是否每一行都有正确的逗号分隔,并在错误时抛出提示

函数设计时考虑的是用户的字幕是「完全正常」的,没有想到这么多幺蛾子