目录
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版编译失败
Architecture | Tag |
---|---|
x86-64 | latest |
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、上一个版本有问题,回退 commit@b735680240cf0b2f2734f9d0e9af49a77b81620e
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
挂载路径
/config
/media
单个影视目录
分类挂载影视目录
权限设置
关于群晖
群晖DSM权限设置
群晖用户请使用你当前的用户SSH进系统,输入 id 你的用户id
获取到你的UID和GID并输入进去
权限管理设置
对你的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
本文由 NG6 于2020年04月09日发表在 sleele的博客
如未特殊声明,本站所有文章均为原创;你可以在保留作者及原文地址的情况下转载
转载请注明:Docker SubFinder 自动刮削字幕器 | sleele的博客
为何自动匹配的字幕会在字幕文件加了6个数字?能否去掉?“Stillwater.2021.1080p.BluRay.x264.DTS-WiKi00012.zh.srt”类似这样的,00012就是额外加的,emby里面就不认这个字幕配对了。
目前这个可以用http://zimuku.org/search
下载的API应该字幕弄啊
@小白 不要用这个了,用新的
https://sleele.com/2021/06/25/docker-chinesesubfinder-中文字幕自动下载/
@NG6 有没有傻瓜点的教程丫,有点看不懂··
打开容器以后提示“解析配置出错,请检查配置文件格式是否正确”还有个问题这个容器有webui页面吗,端口设置好了以后无法访问,json配置文件中,zimuku的两个连接打开都是别的东西,射手字幕的api注册好了,但是连接和模板上的不一样不知道怎么加,有更新过的配置可以发一份吗
一点开始就结束了,没有搜索文件,全部0
@kjkjkjk 我也是这样,是什么问题造成的?
以前好好的。
过年好,字幕库已经无法登陆了,能添加其他的字幕网线吗
你好作者,目前貌似已经不能用了,不过确实可以下载几个,请问电影名称命名有什么规律,可以精准识别吗?我用TMM可以随时修改
感觉这个sub finder越来越不好用了..subhd已经不能下载了.zimuzu的话好像也被限流的很厉害,
为啥我的不行,里面有个纪录片剧集的字幕都没有 1个是Deadly.Engineering.Series.1.The.Chernobyl.Conspiracy.1080p.HDTV.x264.AAC.MVGroup.org 一个是Gathering.Storm.S01.1080p.WEB-DL.DDP5.1.H.264-ROCCaT 请教哪里出问题了?我只是自己指定端口 分别手动指定docker中的端口一致,会不会这里出问题?
这个影响pt站保种吗?
@海淘 不影响
portainer有教程吗。。。
@hchuan16 没有,我不用那个
[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个容器都是直接就开始就结束,没有搜索到任何文件。
这是怎么回事呢?
@匿名 再看看是不是挂载路径填反了,还有用户权限用你自己的
可以下载蓝光原盘的字幕吗?
@lsc 就是关键词匹配,字幕网站上有对应的字幕就可以下载
@NG6 我意思是蓝光原盘不是单个的视频文件,而是一个文件夹,里面是0001.m2ts这种的,是否能下载字幕到同名文件夹下
@lsc 这种应该不行,下Remux版吧
请问大佬 有办法编译一个arm64版本的吗
按照教程配置好了docker和权限,但是仿佛没有扫描文件,开始之后直接下载完成,请问可能是什么原因呢
@JasonChio 文件名称不匹配,但是我觉得更可能是文件夹挂载错了
老哥,我想问下最后的日志是在哪里看的啊
@匿名 双击容器里有日志,最后一页就是末尾信息
直接日志本轮搜索已完成,就结束了
@匿名 没有搜索到本地文件?
挂在大目录,下面很多子目录好像无法识别?
@墨非湮 递归的,可以的,权限或者哪里错了
再请教一个问题,能否设置跳过已经下载过字幕的电影?昨天发现不少电影有重复下载的字幕,看了一下字幕文件的timestamp,确认是subfinder每天下载相同的字幕
谢谢
@匿名 之前有试过,只对新文件进行查找下载,但是修改过的媒体文件无法被查找,所以就放弃了
我这边看已经下载过的字幕是不会再下载的,你可以看一下文件修改和创建时间,是否有变更?
有一个容器叫bazarr,是sonarr系列的,可以连接sonarr和radarr,然后下载字幕。try it
@roukey 用过,我觉得不太行,没有subfinder好使
查看图片
为什么还要设置aira2呀?
突然蹦出来一个aira2有点懵
@kittyzero 之前的项目里粘过来的,描述权限设置的
您好,看起来我的docker虽然启动了。但是日志上显示并未找到字幕:40-config:exited 0;99-custom-scripts:exited 0.请问可以如何排查?
@yang 这是正常日志,没有查到大概就是,1、没有匹配到 2、目录没挂载对,没有找到媒体文件,不管有没有下载成功都会有一大堆搜索日志
亲,如果media有几个文件夹,比如电影和TV分开存放咋设置?/media只能挂载一个
@somy1982 再开一个容器,这也是docker的最佳实践,一个容器只干一件事,多占用几十兆内存而已。或者俩个影视目录都在一个大目录下,就挂载大目录
@somy1982 可以分别挂到media的子目录下,比如/media/video,/media/tv