Docker SubFinder 自动刮削字幕器
本文最后更新于 2020年10月19日

Docker SubFinder 自动刮削字幕器

本文是高阶教程-追剧全流程自动化的补充篇

自动刮削媒体文件字幕,打开容器后开始遍历媒体文件,遍历结束后休眠,之后每天遍历一次

Docker Hub:https://hub.docker.com/r/superng6/subfinder

GitHub:https://www.github.com/SuperNG6/docker-subfinder

博客:https://sleele.com/2020/04/09/subfinder

本镜像根据:ausaki的 https://github.com/ausaki/subfinder 字幕查找器制作
具体的参数请参照subfinder的readme进行修改

1、配置文件subfinder.json位于/config/subfinder.json,请根据的你情况自行修改
2、env里设置TASK时间即可
s 为秒,m 为 分钟,h 为小时,d 为日数,默认1d执行一次任务,例TASK=1d

    {
      "languages": ["zh", "en", "zh_chs"],
      "exts": ["ass", "srt"],
      "method": ["shooter", "zimuzu", "zimuku"],
      "video_exts": [".mp4", ".mkv", ".iso"],
      "exclude": ["excluded_path/", "*abc.mp4"],
      "api_urls": {
        // 设置字幕库的搜索 API
        "zimuku": "http://www.zimuku.la/search",
        // 设置字幕组的搜索 API
        "zimuzu": "http://www.zmz2019.com/search",
        // 设置字幕组获取字幕下载链接的 API, 注意不包含域名
        "zimuzu_api_subtitle_download": "/api/v1/static/subtitle/detail",
        // 设置 SubHD 的搜索 API
        "subhd": "https://subhd.tv/search",
        // 设置 SubHD 获取字幕下载链接的 API, 注意不包含域名
        "subhd_api_subtitle_download": "/ajax/down_ajax",
        // 设置 SubHD 获取字幕预览的 API, 注意不包含域名
        "subhd_api_subtitle_preview": "/ajax/file_ajax"
      }
    }

使用说明

常用参数说明

常用参数说明(详细的参数信息请查看 subfinder -h):

参数含义必需
-l, --languages指定字幕语言,可同时指定多个。每个字幕查找器支持的语言不相同。具体支持的语言请看下文。否,subfinder 默认会下载字幕查找器找到的所有字幕。
-e, --exts指定字幕文件格式,可同时指定多个。每个字幕查找器支持的文件格式不相同。具体支持的文件格式请看下文。否,subfinder 默认会下载字幕查找器找到的所有字幕。
-m,--method指定字幕查找器,可同时指定多个。否,subfinder 默认使用 shooter 查找字幕。
-k, --keyword手动搜索关键字. 当 SubFinder 使用本身的关键字无法搜索到字幕时, 可以通过这个参数手动指定关键字.
--video_exts视频文件的后缀名(包括.,例如. mp4)
--ignore忽略本地已有的字幕强行查找字幕. 注意: 这可能会覆盖本地已有的字幕. 默认 False。
--exclude排除文件或目录,支持类似于 shell 的文件匹配模式。详情见下文
--api_urls指定字幕搜索器的 API URL。详情见下文
-c, --conf配置文件否,SubFinder 默认从~/.subfinder.json 读取。
-s,--silence静默运行,不输出日志
--debug调试模式,输出调试日志
-h,--help显示帮助信息
  • --exclude, 支持的匹配模式类似于 shell,* 匹配任意长度的字符串,? 匹配一个字符,[CHARS] 匹配 CHARS 中的任一字符。例如:
  • 排除包含 abc 的目录:--exclude '*abc*/'。注意添加单引号,防止 shell 对其进行扩展。
  • 排除包含 abc 的文件:--exclude '*abc*'。注意和上个例子的区别,匹配目录时结尾有 / 目录分隔符,匹配文件则没有。
  • --api_urls 字幕库 的链接不太稳定,有时候会更换域名,因此提供 --api_urls 选项自定义 API URL,以防域名或链接变动。 --api_urls 只接收 JSON 格式的字符串。 获取正确的 API URL 的方法:
  • 字幕库的 API 一般形如 http://www.zimuku.la/search, 这个 URL 就是网页端 “搜索” 功能的 URL。
  • 字幕组的 API 一般形如 http://www.zmz2019.com/search, 这个 URL 同样是网页端 “搜索” 功能的 URL。
  • SubHD 的 API 一般形如 https://subhd.tv/search.
  • 射手网的 API 比较稳定,一般不会变动。 如果发现字幕网站的 API URL 发生改变, 欢迎提交 issue. 配置示例:
  {
    // 设置字幕库的搜索 API
    "zimuku": "http://www.zimuku.la/search",
    // 设置字幕组的搜索 API
    "zimuzu": "http://www.zmz2019.com/search",
    // 设置字幕组获取字幕下载链接的 API, 注意不包含域名
    "zimuzu_api_subtitle_download": "/api/v1/static/subtitle/detail",
    // 设置 SubHD 的搜索 API
    "subhd": "https://subhd.tv/search",
    // 设置 SubHD 获取字幕下载链接的 API, 注意不包含域名
    "subhd_api_subtitle_download": "/ajax/down_ajax",
    // 设置 SubHD 获取字幕预览的 API, 注意不包含域名
    "subhd_api_subtitle_preview": "/ajax/file_ajax"
  }

支持的语言和文件格式:

字幕查找器语言文件格式
shooter[‘zh’, ‘en’][‘ass’, ‘srt’]
zimuku[‘zh_chs’, ‘zh_cht’, ‘en’, ‘zh_en’][‘ass’, ‘srt’]
zimuzu[‘zh_chs’, ‘zh_cht’, ‘en’, ‘zh_en’][‘ass’, ‘srt’]
subhd[‘zh_chs’, ‘zh_cht’, ‘en’, ‘zh_en’][‘ass’, ‘srt’]

语言代码:

代码含义
zh中文,简体或者繁体
en英文
zh_chs简体中文
zh_cht繁体中文
zh_en双语

配置文件

配置文件是 JSON 格式的,支持命令行中的所有选项。命令行中指定的选项优先级高于配置文件的。

配置文件中的 key 一一对应于命令行选项,例如 -m,--method 对应的 key 为 method

示例:

{
  "languages": ["zh", "en", "zh_chs"],
  "exts": ["ass", "srt"],
  "method": ["shooter", "zimuzu", "zimuku"],
  "video_exts": [".mp4", ".mkv", ".iso"],
  "exclude": ["excluded_path/", "*abc.mp4"],
  "api_urls": {
    // 设置字幕库的搜索 API
    "zimuku": "http://www.zimuku.la/search",
    // 设置字幕组的搜索 API
    "zimuzu": "http://www.zmz2019.com/search",
    // 设置字幕组获取字幕下载链接的 API, 注意不包含域名
    "zimuzu_api_subtitle_download": "/api/v1/static/subtitle/detail",
    // 设置 SubHD 的搜索 API
    "subhd": "https://subhd.tv/search",
    // 设置 SubHD 获取字幕下载链接的 API, 注意不包含域名
    "subhd_api_subtitle_download": "/ajax/down_ajax",
    // 设置 SubHD 获取字幕预览的 API, 注意不包含域名
    "subhd_api_subtitle_preview": "/ajax/file_ajax"
  }
}

本镜像的一些特点

  • 做了usermapping,使用你自己的账户权限来运行,这点对于群辉来说尤其重要
  • 支持选择执行检查完全部文件后是否后退出容器(默下载完成全部字幕后自动退出容器)
  • 镜像体积巨大200M,无法继续压缩镜像体积
  • base images使用ubuntu cloud (仅20M),alpine下缺少部分库

Architecture

只有x86-64版,arm64版编译失败

ArchitectureTag
x86-64latest

Changelogs

2020/09/16

1、更新subfinder v2.0.1

2020/07/15

1、更新subfinder v1.1.4

  • 将参数 --repeat 修改为 --ignore.
  • 添加新参数 -k, --keyword.
  • 支持 SubHD. SubHD 在下载字幕时经常弹出验证码, 无法通过正常的API获取到字幕的下载链接, 目前的做法是通过 SubHD 的字幕预览功能获取字幕.
  • 修复一些 bug.
  • 注意: 配置文件中的一些配置项修改了名字, 具体查看官方配置文档.

2020/04/19

1、上一个版本有问题,回退 [email protected]

2020/04/16

1、取消定时执行任务,使用inotifywait文件监控 @fanyinghao
2、启动容器时全局遍历一次媒体文件
3、增加启动容器时是否遍历媒体文件选项BS=true默认开启

2020/04/14

1、根据广大人民群众的意见,修改默认参数为一天执行一次1d

2020/04/11

  1、去掉cron,改用sleep,降低使用难度,防止cron失效。现在设置更简单,env里设置`TASK`时间即可  
  2、 `s 为秒,m 为 分钟,h 为小时,d 为日数`,默认2小时执行一次任务,例`TASK=2h`

2020/04/10

  1、update subfinder 1.1.2
  2、根据作者的意见,删除指定语言参数,默认全部语言
  3、修复zimuzu解析问题
  4、增加了手动选择执行间隔选项,`/config/subfinder-cron`,cron表达式

2020/04/09

1、update subfinder 1.1.1
  2、更改执行计划为,打开容器后开始遍历媒体文件,遍历结束后休眠,之后每隔一小时遍历一次
  3、更改媒体挂载卷为``/media``

2020/03/05

1、first commit

Document

挂载路径

4zb8Mq
Xnip2020-09-28_10-47-18
2HgLQ4

/config /media
单个影视目录

分类挂载影视目录

权限设置

关于群晖

群晖DSM权限设置

群晖用户请使用你当前的用户SSH进系统,输入 id 你的用户id 获取到你的UID和GID并输入进去

nwmkxT
1d5oD8
JiGtJA

权限管理设置

r4dsfV

对你的docker配置文件夹的根目录进行如图操作,你的下载文件夹的根目录进行相似操作,去掉管理这个权限,只给写入,读取权限

Linux

输入 id 你的用户id 获取到你的UID和GID,替换命令中的PUID、PGID

执行命令

docker create \
  --name=subfinder \
  -e PUID=1026 \
  -e PGID=100 \
  -e TZ=Asia/Shanghai \
  -e TASK=2h \
  -v /path/to/appdata/config:/config \
  -v /path/to/libraries:/media \
  superng6/subfinder

docker-compose

  version: "3"
services:
  aria2:
    image: superng6/subfinder
    container_name: subfinder
    environment:
      - PUID=1026
      - PGID=100
      - TZ=Asia/Shanghai
      - TASK=2h
    volumes:
      - /path/to/appdata/config:/config
      - /path/to/libraries:/media

Preview

nQxPak
j3geSM
MQTiHZ
原创声明
本文由 NG6 于2020年04月09日发表在 sleele的博客
如未特殊声明,本站所有文章均为原创;你可以在保留作者及原文地址的情况下转载
转载请注明:Docker SubFinder 自动刮削字幕器 | sleele的博客

评论

  1. 匿名
    Windows Chrome
    5小时前
    2020-10-19 13:55:05

    [s6-init] making user provided files available at /var/run/s6/etc…exited 0.
    [s6-init] ensuring user provided files have correct perms…exited 0.
    [fix-attrs.d] applying ownership & permissions fixes…
    [fix-attrs.d] done.
    [cont-init.d] executing container initialization scripts…
    [cont-init.d] 01-envfile: executing…
    [cont-init.d] 01-envfile: exited 0.
    [cont-init.d] 10-adduser: executing…

          _         ()
         | |  ___   _    __
         | | / __| | |  /  \ 
         | | \__ \ | | | () |
         |_| |___/ |_|  \__/

    Brought to you by linuxserver.io

    To support LSIO projects visit:
    https://www.linuxserver.io/donate/

    GID/UID

    User uid: 1026
    User gid: 100

    [cont-init.d] 10-adduser: exited 0.
    [cont-init.d] 30-config: executing…
    [cont-init.d] 30-config: exited 0.
    [cont-init.d] 99-custom-scripts: executing…
    [custom-init] no custom files found exiting…
    [cont-init.d] 99-custom-scripts: exited 0.
    [cont-init.d] done.
    [services.d] starting services
    [services.d] done.

    ==============本轮搜索已结束,下次遍历

    请问下,我的电影是放在“/video”下,我的电视剧放在“/剧集”下。
    配置2个容器,容器1为文件夹为/剧集/纪录片,(下面还有多个子目录),装载路径为”/media/剧集”
    容器2为文件夹/video,装载路径为“/media/电影”
    但是2个容器都是直接就开始就结束,没有搜索到任何文件。

    这是怎么回事呢?

    • NG6 博主
      Macintosh Chrome
      4小时前
      2020-10-19 14:52:37

      再看看是不是挂载路径填反了,还有用户权限用你自己的

  2. lsc
    Windows Chrome
    1周前
    2020-10-12 11:17:07

    可以下载蓝光原盘的字幕吗?

    • NG6 博主
      Macintosh Chrome
      1周前
      2020-10-12 11:19:01

      就是关键词匹配,字幕网站上有对应的字幕就可以下载

      • lsc
        Windows Chrome
        1周前
        2020-10-12 11:21:14

        我意思是蓝光原盘不是单个的视频文件,而是一个文件夹,里面是0001.m2ts这种的,是否能下载字幕到同名文件夹下

        • NG6 博主
          Macintosh Chrome
          1周前
          2020-10-12 11:31:13

          这种应该不行,下Remux版吧

  3. Jack162
    Windows Chrome
    3月前
    2020-7-28 18:49:54

    请问大佬 有办法编译一个arm64版本的吗

  4. JasonChio
    Macintosh Safari
    5月前
    2020-5-22 18:10:35

    按照教程配置好了docker和权限,但是仿佛没有扫描文件,开始之后直接下载完成,请问可能是什么原因呢

    • NG6 博主
      Jetpack
      5月前
      2020-5-23 13:53:06

      文件名称不匹配,但是我觉得更可能是文件夹挂载错了

  5. 匿名
    Windows Chrome
    5月前
    2020-5-12 11:30:46

    老哥,我想问下最后的日志是在哪里看的啊

    • NG6 博主
      Macintosh Safari
      5月前
      2020-5-12 17:31:37

      双击容器里有日志,最后一页就是末尾信息

  6. 匿名
    Windows Edge
    6月前
    2020-5-05 12:49:09

    直接日志本轮搜索已完成,就结束了

    • NG6 博主
      Macintosh Safari
      6月前
      2020-5-05 22:56:50

      没有搜索到本地文件?

  7. 墨非湮
    Windows Edge
    6月前
    2020-5-05 12:43:28

    挂在大目录,下面很多子目录好像无法识别?

    • NG6 博主
      Macintosh Safari
      6月前
      2020-5-05 22:57:16

      递归的,可以的,权限或者哪里错了

  8. 匿名
    iPhone Safari
    6月前
    2020-4-26 18:46:32

    再请教一个问题,能否设置跳过已经下载过字幕的电影?昨天发现不少电影有重复下载的字幕,看了一下字幕文件的timestamp,确认是subfinder每天下载相同的字幕
    谢谢

    • NG6 博主
      Macintosh Safari
      6月前
      2020-4-26 18:59:35

      之前有试过,只对新文件进行查找下载,但是修改过的媒体文件无法被查找,所以就放弃了
      我这边看已经下载过的字幕是不会再下载的,你可以看一下文件修改和创建时间,是否有变更?

  9. roukey
    Windows Chrome
    6月前
    2020-4-18 18:44:32

    有一个容器叫bazarr,是sonarr系列的,可以连接sonarr和radarr,然后下载字幕。try it

    • NG6 博主
      Macintosh Safari
      6月前
      2020-4-18 20:43:58

      用过,我觉得不太行,没有subfinder好使


      查看图片
      p2EWJP

  10. kittyzero
    Macintosh Chrome
    6月前
    2020-4-16 23:03:54

    为什么还要设置aira2呀?
    突然蹦出来一个aira2有点懵

    • NG6 博主
      Macintosh Safari
      6月前
      2020-4-17 10:01:03

      之前的项目里粘过来的,描述权限设置的

  11. yang
    Macintosh Chrome
    6月前
    2020-4-11 10:14:29

    您好,看起来我的docker虽然启动了。但是日志上显示并未找到字幕:40-config:exited 0;99-custom-scripts:exited 0.请问可以如何排查?

    • NG6 博主
      Macintosh Safari
      6月前
      2020-4-11 10:17:06

      这是正常日志,没有查到大概就是,1、没有匹配到 2、目录没挂载对,没有找到媒体文件,不管有没有下载成功都会有一大堆搜索日志

  12. somy1982
    Macintosh Safari
    6月前
    2020-4-11 4:10:53

    亲,如果media有几个文件夹,比如电影和TV分开存放咋设置?/media只能挂载一个

    • NG6 博主
      Jetpack
      6月前
      2020-4-11 8:26:45

      再开一个容器,这也是docker的最佳实践,一个容器只干一件事,多占用几十兆内存而已。或者俩个影视目录都在一个大目录下,就挂载大目录

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇