V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
allanpk716
V2EX  ›  分享创造

中文字幕自动化下载工具 - ChineseSubFinder

  •  2
     
  •   allanpk716 · 2021-06-23 10:33:14 +08:00 · 11056 次点击
    这是一个创建于 1009 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在下人人字幕的老粉丝了,之前做过他们的自动化追剧小玩意,但是因为关闭了,所以追剧荒废了很久。

    近期参考《[高阶教程-追剧全流程自动化 | sleele 的博客]( https://sleele.com/tag/高阶教程-追剧全流程自动化 /)》搞定了自动下载,美剧、电影没啥问题。但是遇到字幕下载的困难,里面推荐的都不好用,能下载一部分,大部分都不行。当然有可能是个人的问题。为此就打算自己整一个专用的下载器。

    市面上有几款类似的工具,本工具与他们的差别(可能是优势也可能是劣势)最大的地方在于:

    1. 需要削刮器提前处理好视频文件
    2. 简化了配置
    3. 能够分析字幕的语言类型
    4. 适配 Emby/Jellyfin 、TinyMediaManager 、Sonarr 、Radarr

    目前自用了 2 周时间,以下电影、连续剧能够第一时间找到中文字幕:

    • The Bad Batch
    • 瑞克和莫蒂 S5
    • Loki
    • Spiral From the Book of Saw
    • Army of the Dead
    • Luca
    • Oslo

    等等

    有一些设计的细节,字幕选择和搜索的选择逻辑,后续会慢慢写出来,个人觉得大部分人用就行了,没必要开放太多的配置细节出来。目前需要使用 Docker 部署(其实也支持其他平台,因为是 golang 开发,自己编译也很容易),还是有一定的学习成本。后续考虑看看相关的 CI/CD 东西,能够自动输出多平台的可执行文件(之所以没弄,是因为在家使用 portainer 管理,遇到一个梗,拉取 latest 都无法是最新的,哪怕选择了 always pull 都一样,心态就不好了)。

    源码: https://github.com/allanpk716/ChineseSubFinder

    dockerhub: https://hub.docker.com/repository/docker/allanpk716/chinesesubfinder

    38 条回复    2023-06-26 15:25:37 +08:00
    ThirdFlame
        1
    ThirdFlame  
       2021-06-23 10:35:31 +08:00
    虽然暂时不用,但是必须 star
    allanpk716
        2
    allanpk716  
    OP
       2021-06-23 10:37:17 +08:00
    @ThirdFlame 哈哈,欢迎使用
    princelai
        3
    princelai  
       2021-06-23 10:46:44 +08:00
    昨天刚好整理我的 docker,搜到了 sleele 那篇文章,想上个 bazarr,然后就看到你的文章了哈哈
    allanpk716
        4
    allanpk716  
    OP
       2021-06-23 10:50:40 +08:00   ❤️ 1
    @princelai 其实 bazarr 目标挺尴尬的。如果是英文的字幕,Emby 就可以使用 OpenSub API 搞定搜索了。去 Emby 论坛看了下,有人提中文字幕搜索的需求,也有人做了相应 Emby 的 zimuku 插件想要上架,但是官方回复是如果不是使用 Open API 接口去调用的,是不允许上架插件商城的。
    allanpk716
        5
    allanpk716  
    OP
       2021-06-23 10:52:37 +08:00
    一个工具想要搞定多国语言不同国家的字幕问题,除非有通用的命名规范,且能够大家都执行,不然就难了。所以 bazarr 很难做。同理,日本动画也很难做字幕的自动化搜索···
    princelai
        6
    princelai  
       2021-06-23 10:56:00 +08:00
    @allanpk716 #4 那你要这么说我就不折腾了,本来我以为很智能。我现在手机上看用 plex,带手动字幕下载,不过有几率搜索不到。在家都是用芝杜的盒子看,也有手动字幕搜索。我只是单纯的想节约手动点的那几下。

    我先试试你的 docker 镜像。
    li24361
        7
    li24361  
       2021-06-23 11:00:08 +08:00
    原来有个叫射手播放器的,可以自动下字母
    allanpk716
        8
    allanpk716  
    OP
       2021-06-23 11:01:39 +08:00
    @princelai 先试试,毕竟就是想要偷懒手动去搜索字幕和改名匹配···
    also24
        9
    also24  
       2021-06-23 11:05:36 +08:00
    我擦,没注意到 R&M 第五季已经上线了啊,搬好小板凳
    princelai
        10
    princelai  
       2021-06-23 11:05:45 +08:00
    @allanpk716 #8 哦对了我想起一个问题,在 plex 上搜索或载入本地字幕,只能选 srt,选择 ssa 这种高级字幕会崩溃,所以未来能不能加个选项,设置字幕格式优先级?
    allanpk716
        11
    allanpk716  
    OP
       2021-06-23 11:25:50 +08:00
    @princelai 可以的,我记一下 TODO
    allanpk716
        12
    allanpk716  
    OP
       2021-06-23 11:26:23 +08:00
    @also24 搭建好 sonarr 全自动追剧,可以参考上面提到的那个文章,很爽。
    allanpk716
        13
    allanpk716  
    OP
       2021-06-23 11:31:04 +08:00
    @li24361 他们其实开发播放器这个操作就很有远见,同时他们也提供了相应的 API 接口查询字幕,就是通过视频的唯一 ID 做到的(开发播放器的好处猜到了吧)。本程序也集成了 shooter 和 xunlei 的字幕查询接口,都是以视频唯一 ID 去获取的。
    allanpk716
        14
    allanpk716  
    OP
       2021-06-23 11:42:22 +08:00
    @princelai 想到一个问题,plex 没有部署过,不清楚它会在电影和连续剧的目录下新建对应的影片信息文件没?

    电影:movie.xml 或者 电影名称.nfo
    连续剧:tvshow.nfo

    如果有的话,能够帮看看有不有 IMDB ID 的字段,类似以下,注意一定是这个样子的字段,其他的 IMDB ID 可能是错的···
    <uniqueid type="tvdb" default="true">362472</uniqueid>
    <uniqueid type="imdb">tt9140554</uniqueid>
    oneisall8955
        15
    oneisall8955  
       2021-06-23 11:50:37 +08:00
    不错,支持!
    allanpk716
        16
    allanpk716  
    OP
       2021-06-23 12:04:27 +08:00
    @oneisall8955 R&M S5E1 很好看,特别是有关 M 的剧情
    princelai
        17
    princelai  
       2021-06-23 12:26:00 +08:00
    @allanpk716 #14 你要的这个字段有,但是我的 nas 里不是每一个电影都有 nfo 文件,而且 nfo 文件和影片下载时间明显不一样,所以我不确定是被盒子修改过还是 plex 修改的



    iOCZ
        18
    iOCZ  
       2021-06-23 14:31:33 +08:00
    要是射手网还在就好了
    allanpk716
        19
    allanpk716  
    OP
       2021-06-23 14:31:42 +08:00
    @princelai 好的,谢谢反馈。
    allanpk716
        20
    allanpk716  
    OP
       2021-06-23 14:33:25 +08:00
    @iOCZ shooter 依然开放他们的字幕搜索的 API,可能没得那么快能找到新视频的字幕,但是还是不错的,本工具有集成。
    ruidoBlanco
        21
    ruidoBlanco  
       2021-06-23 15:38:44 +08:00
    我也有造这个轮子,roylez/subs 。
    allanpk716
        22
    allanpk716  
    OP
       2021-06-23 16:01:23 +08:00
    @ruidoBlanco ruby 啊,666,先关注,有机会了解 ruby 可以看看
    vivaldi
        23
    vivaldi  
       2021-06-23 16:44:37 +08:00
    目测 windows 系统上面不好部署,现在 docker 在 windows 上面是 wsl 后端,运行在 wsl 里面的镜像可能得折腾一下才能使用。
    allanpk716
        24
    allanpk716  
    OP
       2021-06-23 16:48:26 +08:00
    @vivaldi 我就是在 Windows 下开发的,如果仅仅想跑起来,编译后,配置好配置文件,直接双击运行就好啦。至于 Windows 部署这一块,不清楚有什么建议,或者说需求。比如,是想变成服务运行呢,还是双击运行一次?
    ybleak
        25
    ybleak  
       2021-06-23 17:38:42 +08:00
    棒,star 了
    XIU2
        26
    XIU2  
       2021-06-23 22:27:51 +08:00
    现在国外都在做流媒体了(发不出来名称。。。)
    这些流媒体平台,很多都自带中文字幕了,很舒服~
    allanpk716
        27
    allanpk716  
    OP
       2021-06-24 08:26:04 +08:00
    @XIU2 嗯很多视频都内封有多国语言字幕的,不过有中文的不多。翻译质量以及字幕组附带的梗备注,这些是官方没有的,也是价值所在吧。
    lamesbond
        28
    lamesbond  
       2021-06-25 10:50:52 +08:00
    以前有个叫 subdownloader 的插件,把文件拖到里面就自动下字幕,15,16 年后就不好用了,之后只能到各大字幕网站找
    allanpk716
        29
    allanpk716  
    OP
       2021-06-26 12:43:50 +08:00
    @lamesbond 维护是个体力活···后续会做教程,怎么做“获取字幕数据”这个部分
    allanpk716
        30
    allanpk716  
    OP
       2021-06-26 12:51:38 +08:00
    @lamesbond 不过看样子 shooter 和 xunlei 的接口还是很稳定的,所以最差还是能够用这两个接口去自动下载字幕(毕竟 zimuku 和 subhd 调整网站页面的频率较高)
    lamesbond
        31
    lamesbond  
       2021-06-26 13:28:11 +08:00
    迅雷就够了,我有时看一些冷门电影,各大字幕网站都找不到字幕,用迅雷影音打开就有匹配的在线字幕,很神奇,特别是看 AV 时能匹配到字幕,你都不知道这些字幕哪来的,迅雷就是有。
    allanpk716
        32
    allanpk716  
    OP
       2021-06-26 13:33:18 +08:00
    @lamesbond 做播放器就是有这个好处,可以精确的知道一个视频到底大众认可的字幕有哪些,收集起来,人越多越准
    manfred4527
        33
    manfred4527  
       2021-06-30 08:41:04 +08:00
    同一个影视剧不同的片源导致字幕时间线对不上这种问题该怎么解决呢
    allanpk716
        34
    allanpk716  
    OP
       2021-06-30 14:39:01 +08:00
    @manfred4527 迅雷和射手的接口有返回字幕偏移的时间,但是这个需要对接到播放器上才有用,字幕上没有相应的字段去表述可以统一的调整时间轴信息。

    虽然也可以在本程序帮大家偏移,但是意义不大。首先是接口拿到的数据未必都有偏移数值,而且总体有这个数值正确的占比较低(就是字幕哪怕是用视频唯一 ID 得到的,也可以能偏移不对)。其他的 zimuki subhd 是没有这个信息的。所以这个功能就没做。

    个人建议是用你的播放器手动去调整字幕的播放延迟,暂时我还能接受这个操作,最多的一次偏移了 5000 ms,单次 50ms···就是多点几次呗

    其实吧,对于 emby 这种,技术上他们完全可以收集大家的字幕使用信息,然后把这一块做好( shooter 和 xunlei 播放器肯定是有的),但是为啥没做这个就不好说了。
    tyhunter
        35
    tyhunter  
       2021-08-11 16:20:19 +08:00
    老哥牛逼,也发现了另一个字幕自动下载的轮子,https://github.com/91270/Emby.MeiamSub,通过自动匹配文件 hash 去射手、迅雷找对应字幕
    tyhunter
        36
    tyhunter  
       2021-08-11 16:20:32 +08:00
    allanpk716
        37
    allanpk716  
    OP
       2021-08-13 09:34:01 +08:00
    @tyhunter 不错,收藏了。这方案再加入自动更新就完美了。
    wlklazyman
        38
    wlklazyman  
       276 天前
    多谢你的辛勤工作成果,正准备在黑群晖中试用。docker 上安装好后,首次登录最后一步设置时总是提示“软件运行在 Docker 中,请将电影和电视剧目录修改为 /media 下的目录,否则可能会因为权限问题导致无法正确的加载媒体库”,请教如何解决?启动容器时将常用的影音库共享文件夹在高级设置-文件夹中装载路径分别设为 /movies 和 /tv,首次登录的第二步设置中已将连续剧和电影目录分别设置为以上两个装载路径。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3509 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 10:51 · PVG 18:51 · LAX 03:51 · JFK 06:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.