muzuiget / dualsub-support

Dualsub - Dual Subtitles for YouTube
https://www.dualsub.xyz/
281 stars 24 forks source link

默认配置,以及默认有限匹配设置 #233

Closed iamcxds closed 3 years ago

iamcxds commented 3 years ago

因为经常看不同视频,不同视频可能自带字幕不一样。举例来说比如说会看英语和日语的视频,然后有的时候有上传的字幕,有时候是自动生成的字幕;第二字幕有时候有自带其他语言的,有时候要用源语言的翻译的。于是每次看不同的视频都要进行不同的调整。 所以在想能不能加入:首先可以存储一些可能的字幕模板,比如:1.日语,字体xx;2. 日语(自动生成),字体xx 3. 日语 , 翻译中文,4. 英语,...…… 5. 中文 然后可以进行一些优先级排序匹配,比如说第一字幕 1>2>4 就会先寻找有没有日语字幕;如果没有就找有没有自动生成的字幕;如果看的不是日语的视频,可能是英语的视频,就会自动往下匹配。第二字幕也类似 5>2 先看有没有自带的翻译;没有的话再跳到机翻。如果都没有再处于close的状态。 类似这样的概念,这样就可以减少看不同视频的时候重复设置的问题。不过不知道能否可以实现

muzuiget commented 3 years ago

看下文档使用自动选择是不是你想要的。

iamcxds commented 3 years ago

嗯,实验了一下的确是这样,不过好像有些bug,好像规则只能应用于一个字幕,就是我写了一些规则(……[1], ……[2])对于第一字幕的设定生效了,但是二号字幕总是close,我测试了把那些[2]的改成[1]是可以在一号字幕生效的。

muzuiget commented 3 years ago

把你的代码贴一下。

iamcxds commented 3 years ago
[fr-fr, fr.asr][][][First Subtitle][1]
[ja-jp, ja.asr][][Japanese Analysis][Japanese Learning][1]
[en][][][Second Subtitle][2]
[zh][][][Chinese Learning][2]
[fr-fr, fr.asr][en-us][][Second Subtitle][2]
[ja-jp, ja.asr][zh-hans][][Chinese Learning][2]
muzuiget commented 3 years ago
[fr-fr, fr.asr][en-us][][Second Subtitle][2]

现在机器翻译除了中文分 zh-hanszh-hant 外, 没有子类了,这行应该改成

[fr-fr, fr.asr][en][][Second Subtitle][2]

“字幕语言”这个,语言代码是未知的,由网站自己决定,所以我建议用大类就好。

[fr, fr.asr][en][][Second Subtitle][2]

这样会宽松一点。

如果还不行,把视频地址贴一下, 以及你期望的结果是怎样。

iamcxds commented 3 years ago

测试下来感觉经常没办法让规则总是生效,现在规则是(用CLOSE是为了避免规则相互干扰)

[fr-fr, fr.asr][CLOSE][CLOSE][First Subtitle][1]
[ja-jp, ja.asr][CLOSE][Japanese Analysis][Japanese Learning][1]
[zh][CLOSE][CLOSE][Chinese Learning][2]
[en][][][Second Subtitle][2]
[fr-fr, fr.asr][en][CLOSE][Second Subtitle][2]
[ja-jp, ja.asr][zh-hans][CLOSE][Chinese Learning][2]

我测试了一下一些可能的情况,有些不稳定:

  1. 法语视频,只有自动生成的字幕(https://www.youtube.com/watch?v=wso5mEgNzH4) 结果应该是
    [fr.asr][][][First Subtitle][1]
    [fr.asr][en-us][][Second Subtitle][2]
  2. 日语视频,只有自动生成的字幕(https://www.youtube.com/watch?v=BGtO39JHjtY) 结果应该是
    [ja.asr][][Japanese Analysis][Japanese Learning][1]
    [ja.asr][zh-hans][][Chinese Learning][2]
  3. 日语视频,有自动生成的字幕和上传的字幕(https://www.youtube.com/watch?v=p0SuqOCnPr8) 因为我希望它能优先使用上传的字幕所以规则里用的ja-jp, ja.asr 此时结果应该是
    [ja-jp][][Japanese Analysis][Japanese Learning][1]
    [ja-jp][zh-hans][][Chinese Learning][2]
  4. 日语视频,自带多语字幕(https://www.youtube.com/watch?v=4ZfKgtyO8so) 结果应该是
    [ja-jp][][Japanese Analysis][Japanese Learning][1]
    [zh][][][Chinese Learning][2]

    测试下来就有时候比如说4.会出现3.的结果,当我手动去调整了一个视频的字幕后似乎也还会影响到其他视频应用规则,有时候本来可以应用规则的直接全都close了,还是需要手动来设置。

muzuiget commented 3 years ago

看来文档这句话有歧义了:

“字幕语言“和“机器翻译”中的填的值是语言代码表达式,见本页面顶部的“语言代码“,“语言工具”和“主题样式”都是字面值,需要完整匹配。

所以日语工具应该是 janalysis 才对,也就是代码以鼠标悬停那个 tooltip 提示为准。

第 3 和 第 4 个视频,日语都是 ja,而没有 ja-jp,所以你填 ja-jp 则不会匹配成功。

比如你这样写:

[ja][zh-hans][CLOSE][Chinese Learning][2]

如果视频有 [ja", "ja-jp.asr", "ja-jp]" 三个字幕,你代码中的 ja 会以表达式展开成这三个字面值,按字典顺序(菜单里的顺序也是这个),所以字面值 ja 总是优先匹配,而字面值 ja.asr 总是在末尾(因为点号排在字母和横线后面),也就是刚好人工字幕优先,机器字幕兜底。

所以简单:

[fr][CLOSE][CLOSE][First Subtitle][1]
[ja][CLOSE][janalysis][Japanese Learning][1]
[zh][CLOSE][CLOSE][Chinese Learning][2]
[en][][][Second Subtitle][2]
[fr][en][CLOSE][Second Subtitle][2]
[ja][zh-hans][CLOSE][Chinese Learning][2]

"字幕语言”使用表达式而不是字面值主要是为了处理中文,不然的得把所有中文可能性都写上,比如最常见的 5 个 ["zh", "zh-cn", "zh-hans", "zh-hant", "zh-hk", "zh-tw"],如果算上粤语组合就更多了,所以简体中文用户只需要一个 zh就成,繁体中文用户才需要写成 [zh-hant, zh-hk, zh-tw, zh]

所以"字幕语言”中推荐至少有一个语言大类代码。