目录
前言
关于字幕自动查找并下载方面,我已经写过两篇文章了。Docker SubFinder 和 Bazarr 或多或少都有些,甚至可以说在中文环境下很难用。目前大家比较常用的字幕刮削器应该是SubFinder,但是SubFinder年久失修,有些字幕站的API也已经失效,急需一款替代品来解决中文字幕匹配难,下载难的问题,好在ChineseSubFinder在此时应运而生。
ChineseSubFinder介绍
其实没啥可介绍的,功能目标很明确,就是方便自动下载中文字幕,并重命名字幕,符合emby规范,可以在emby、jellyfin、plex中识别并自动挂载。
https://github.com/allanpk716/ChineseSubFinder
ChineseSubFinder针对目前国内的几大字幕站都有做适配,对电影和电视剧的刮削效果都较为不错,动画片的支持也在开发中
使用说明
群晖下的部署非常方便,在群晖docker中,下载镜像allanpk716/chinesesubfinder:latest
运行镜像,填写你的UID、GID。挂载影视文件夹的根目录,之后就可以启动容器了
不知道UID、GID的请参考EMBY那篇文章,写的很详细,如果还是不懂,那么就 PUID=0,GUID=0,使用root权限吧
敲重点
ChineseSubFinder是根据NFO信息进行刮削的,所以能够正确刮削字幕的前提是你需要生成正确的NFO信息
EMBY生成正确的NFO信息,并存在媒体位,请照下图设置
详细设置请参照群晖使用docker安装&使用EMBY全流程教程-长文,写的很详细,我就不重复赘述了
# 影视媒体的目录层级最好是这样的,所有的影视分类和下载路径都在一个大分类下(比如都在影视文件夹下)
--media
|--downloads
|--movies
|--tv
|--others
挂载路径可以按照我这个模板填写;需要注意⚠️请务必挂载/app/cache文件夹
否则容器体积可能会无限膨胀,后续这个文件夹可能还会缓存 IMDB 的查询信息,以及共享字幕的信息
chinesesubfinder 0.2X 版本使用说明&教程
0.2X版本已基本完善,0.2X版本将作为本文的主要讲解对象
使用 docker-compose 部署 chinesesubfinder 0.2X版本
version: "3"
services:
chinesesubfinder:
image: allanpk716/chinesesubfinder:latest
volumes:
- /volume1/docker/chinesesubfinder/config:/config
- /volume1/docker/chinesesubfinder/cache:/app/cache
- /volume1/Video:/media
environment:
- PUID=1026
- PGID=100
- TZ=Asia/Shanghai
ports:
- 19035:19035
restart: unless-stopped
docker-compose up -d
启动容器后,在网页中打开chinesesubfinder NAS-IP:19035
进入到配置中心,填写电影目录和电视剧目录,根据你容器挂载的路径来来填写
进阶配置可以参考我的
其他配置不是很重要,默认即可
之后等待chinesesubfinder扫描媒体库即可,着急的话,可以配置完后勾选 程序启动立即开启扫描
然后重启容器,这样扫描任务会立刻执行
0.1X版本使用说明
使用 docker-compose 部署
version: "3"
services:
chinesesubfinder:
image: allanpk716/chinesesubfinder:latest
volumes:
- /volume1/docker/chinesesubfinder:/config
- /volume1/docker/chinesesubfinder/SubFixCache:/app/SubFixCache
- /volume1/Video:/media
environment:
- PUID=1026
- PGID=100
- TZ=Asia/Shanghai
restart: unless-stopped
启动容器后,马上关闭容器,因为这时我们还没有修改配置文件中的媒体文件地址
编辑/congfg
中的config.yaml
,填写你的媒体文件夹地址
UseProxy: false
HttpProxy: http://127.0.0.1:10809
EveryTime: 6h
Threads: 1
SubTypePriority: 0
SubNameFormatter: 0
DebugMode: false
SaveMultiSub: true
SaveOneSeasonSub: false
RunAtStartup: true
CustomVideoExts: mpeg,flv,f4v # 这里是举例,一般来说这一项可以不填写(删除)足够满足大部分人的需求
MovieFolder: /media/电影
SeriesFolder: /media/连续剧
FixTimeLine: true
# 下面的设置非必须,可以删除不要
WhenSubSupplierInvalidWebHook: abc.com
UseProxy,默认false。是否使用代理,需要配合 HttpProxy 设置
HttpProxy,默认 http://127.0.0.1:10809 。http 代理这里不要留空,不适应就设置 UseProxy 为 false
EveryTime,默认 6h。每隔多久触发一次下载逻辑。怎么用参考,robfig/cron: a cron library for go
Threads,并发数,最高到 20 个。看机器性能和网速来调整即可。
SubTypePriority,字幕下载的优先级,0 是自动,1 是 srt 优先,2 是 ass/ssa 优先
SubNameFormatter,字幕命名格式(默认不填写或者超出范围,则为 emby 格式),0,emby 支持的的格式(AAA.chinese(简英,subhd).ass or AAA.chinese(简英,xunlei).default.ass),1常规格式(兼容性更好,AAA.zh.ass or AAA.zh.default.ass)
DebugMode,默认 false。调试模式,会在每个视频的文件夹下,新建一个 subtmp 文件夹,把所有匹配到的字幕都缓存到这个目录,没啥事可以不开。开的话就可以让你手动选择一堆的字幕啦。
SaveMultiSub,默认值 false。true 会在每个视频下面保存每个网站找到的最佳字幕(见《如何手动刷新 emby 加载字幕》,会举例)。false ,那么每个视频下面就一个最优字幕。
CustomVideoExts,默认值是空。v0.12.x 版本出现。自定义视频扩展名,多个扩展名用英文逗号分隔
SaveOneSeasonSub,默认为 false。v0.12.x 版本出现。非必须的选项。true 的时候会在每一个连续剧下面保存 Sub_S01E0 这样的缓存文件夹,里面的内容是每一季的整季字幕包的缓存,便于人工核对。注意的是下载的是整季的字幕包才会出现在这,且整季的字幕包的命名要有 S01 这样的关键词才会下载。
RunAtStartup,默认值是 false,启动容器/程序时,是否开始搜索并下载。v0.16.x 开始有效。
MovieFolder,填写你的电影的目录
SeriesFolder,填写你的连续剧的目录
FixTimeLine,字幕时间轴校正(V0.19.x 开始启用),ChineseSubFinder/字幕时间轴校正V2
WhenSubSupplierInvalidWebHook,当字幕网站失效的时候,触发的 webhook 地址,xunlei、subhd、zimuku 解析故障的通知接口,给维护人员用,可以尽快去修复解析问题。一般人员无需关心此设置。默认使用的是 bark 的通知格式。
联动Emby
可选项
这里我就直接复制作者写的readme了
获取 Emby API KEY
如下图
编写 Emby Api 配置信息
EmbyConfig:
Url: http://192.168.50.x:8096
ApiKey: 123456789
LimitCount: 500
SkipWatched: false
在原有的 ChineseSubFinder config.yaml 中新增一下配置信息
那么新增后的 ChineseSubFinder config.yaml 文件为:
UseProxy: false
HttpProxy: http://127.0.0.1:10809
EveryTime: 6h
Threads: 1
SubTypePriority: 0
SubNameFormatter: 0
DebugMode: false
SaveMultiSub: false
SaveOneSeasonSub: false
RunAtStartup: true
CustomVideoExts: mpeg,flv,f4v # 这里是举例,一般来说这一项可以不填写(删除)足够满足大部分人的需求
MovieFolder: /media/电影
SeriesFolder: /media/连续剧
FixTimeLine: true
# 下面的设置非必须,可以删除不要
WhenSubSupplierInvalidWebHook: abc.com
EmbyConfig:
Url: http://192.168.50.x:8096
ApiKey: 123456789
LimitCount: 500
SkipWatched: false
之后就可以再次启动容器了,容器启动后会自动遍历媒体文件夹,下载对应的字幕
另外,我推荐最好设置一下代理
稍等片刻就能够在自己的媒体目录下找到刚刚下载的字幕了
使用 docker 命令部署
docker create \
--name=chinesesubfinder \
-e PUID=1026 \
-e PGID=100 \
-e TZ=Asia/Shanghai \
-v $PWD/chinesesubfinder:/config \
-v $PWD/chinesesubfinder/SubFixCache:/app/SubFixCache \
-v $PWD/chinesesubfinder/video:/media \
allanpk716/chinesesubfinder:latest
使用 docker-compose 部署
version: "3"
services:
chinesesubfinder:
image: allanpk716/chinesesubfinder:latest
volumes:
- /volume1/docker/chinesesubfinder:/config
- /volume1/docker/chinesesubfinder/SubFixCache:/app/SubFixCache
- /volume1/Video:/media
environment:
- PUID=1026
- PGID=100
- TZ=Asia/Shanghai
restart: unless-stopped
结语
目前ChineseSubFinder还在开发中,更新频率很高,最好保持在最新版,说不定某次更新就解决了你的痛点
高阶教程-追剧全流程自动化最的最大的痛点,字幕下载这块,总算是得到了一个不错解决,本文也会补充进高阶教程-追剧全流程自动化。
番外
字幕命名格式的转换
从 v0.14.x (在此之前的都是默认 Emby 的格式)开始,将支持切换字幕名称格式模式,以应对 Jellyfin 和 Plex 和其他媒体工具识别字幕的问题。
在 config.yaml 中,将新增一个字段 SubNameFormatter。
UseProxy: true HttpProxy: http:/127.0.0.1:10809 EveryTime: 12h Threads: 1 SubNameFormatter: 0
SubNameFormatter 字幕命名格式(默认不填写或者超出范围,则为 Emby 格式,为了兼容以前的版本):
- 0,Emby 支持的的格式(AAA.chinese(简英,subhd).ass or AAA.chinese(简英,xunlei).default.ass)
- 1,常规格式(兼容性更好,AAA.zh.ass or AAA.zh.default.ass)
因为考虑到了 Plex 不支持 Default 字段,所以其实“常规格式1”,是不会添加 Default 字段的。
每次软件重启后,会自动判断是否需要将所有扫描到的字幕从 Emby 转为 Normal,或者反过来。
不会每次都全扫描处理一次,会有标记,第一次使用的时候会全字幕扫描处理一次,完成后,如果不改 SubNameFormatter 的配置或者清理缓存用的数据库(settings.db),是不会真正启动这个逻辑的。
考虑到可能出现的后续需要支持的字幕命名格式问题,针对该功能进行了比较大的重构,应该可以比较块的进行支持。有需求的请提 issue,最好能给出字幕命名格式的文档和示例。
本文由 NG6 于2021年06月25日发表在 sleele的博客
如未特殊声明,本站所有文章均为原创;你可以在保留作者及原文地址的情况下转载
转载请注明:Docker ChineseSubFinder–中文字幕自动下载 | sleele的博客
文件夹里的.CSF-BK文件搜刮字幕修正时间后会被删除吗?
version: “3”
services:
chinesesubfinder:
image: allanpk716/chinesesubfinder:latest
volumes:
environment:
ports:
restart: unless-stopped
求助一下楼主,我是威联通的,目录跟群辉不一样,我就改了一下这个代码,装完了以后图形界面让我设置媒体目录,输入/video 总是说目录不对或者没权限。是我目录设错了么?尝试根据emby里那个样子代码里前面加/share也不行,还是提示一样目录不对。而且在Container1目录下也没有生成 config文件,怪了。
@匿名 你应该输入映射到容器里的路径
/media
@NG6 volumes:
目前找到了一点问题,我参考了另外一个别的教程里的代码,把video前面加了个share,目前在 这个web页面能顺利识别 /media/电影 以及 /media/电视剧 保存成功了, 但是切换到emby这个设置下, /share/video/电影 能顺利保存识别, /share/video/电视剧 就提示目录不对了,望博主给点建议,这个我在github上有看到别人也问了一样的情况,只是没看懂该怎么解决。
您好,我在unraid拉取镜像安装了docker,但不知道该怎么配置网络,特来求教
@Vincent 只用暴露webui端口webui
19035
就行了@NG6 尝试设置了端口19035,但是还是打不开,有点奇怪
@NG6 搞定了,汇报一下问题所在。
我直接拉取的allanpk716/chinesesubfinder:latest,怎么弄都不行,查日志全是报错刷满,认真看一眼,拉到的是0.19xx的镜像。。。。 删了容器,重新拉取allanpk716/chinesesubfinder:v0.21.1,搞完就成了。
感谢博主,我马上试试
使用 docker-compose 部署 chinesesubfinder 0.2X版本 这个章节,docker-compose 的 配置文件 port应该改为ports吧
@shancw 已更正
你好,楼主。为什么我找不到config.yaml这个文件,我群号目录下面没有这个文件啊。我已经按照你的教程先打开再关闭。
@hep 这个教程只适用于v0.1x版本
2.0变为图形版,设置可以参照官方,本文要等新版稳定后更新
https://github.com/allanpk716/ChineseSubFinder/blob/docs/DesignFile/v0.20%E6%95%99%E7%A8%8B/00.Docker%E9%83%A8%E7%BD%B2%E6%95%99%E7%A8%8B.md
报错:panic: Can’t Read Config File:ChineseSubFinderSettings.json Error: invalid character ‘/’ looking for beginning of value
我的文件夹带“[ ]”符号会出错么,/media/[电影]
另外教程里写的是ChineseSubFinder config.yaml这个后缀的配置文件,和我系统里不一样么,我是白裙7.0
请问大佬现在还是只能设置两个媒体文件夹 如果有动画 剧集是分开放的 还是要开两个容器?
@westjay 可以再新建个容器挂载其他目录
或者把建立个大媒体文件,把影视剧就内容都放进去,然后挂载大目录
这是我的Emby Api Key,请问“ – ChinseSubFinder”这些也是Key的一部分吗?还是只需要前面那一串字符就可以了?
ApiKey: 3198e47e06ae49a0931eb2301e9dcc52 – ChinseSubFinder
@luotao21 输入
:
后的就可以了,3198e47e06ae49a0931eb2301e9dcc52@NG6 非常感谢。
我按照设置增加了emby的信息,就找不到视频文件,去掉emby信息之后,就可以正常找到了,不知道是怎么回事?
[ERROR]: 2021-12-23 11:03:42 – DownloadSub4Movie.NewPoolWithFunc done with Error MovieNeedDlSub /media/Movie/奇门遁甲 (2017)/奇门遁甲.ts open /media/Movie/奇门遁甲 (2017): no such file or directory
大佬求教:按照您的自动化追剧流程现在所有的ok了,就是有些剧在字幕自动下载方面失败了,我现在NFO元数据都是由sonarr生成,可ChineseSubFinder有些剧的字幕就是下载不了(我试过在各大字幕网搜索,是有的)。WARNING:/media/电视剧/XXXX XML syntax error on line XX:invalid character entity &id (no semicolon) line XX就是sonarr生成NFO信息的最后一行。
@Leelastest 我不太清楚这个问题,可能是不兼容
试一试连接emby看看能否好转
@NG6 我试试吧!觉得这个问题挺迷的,因为有些成功下载字幕的剧,他的最后一行除了编号其余是一模一样的(ó﹏ò。)
安装后,会不停的占用docker空间是什么原因啊
大佬,我看群晖docker里有你个你写的chinesesubfinder,是可以刮削动画字幕吗?我看yaml里面有动画文件夹的设置,但实际用的时候日志好像只遍历电影和连续剧两个目录呢?而且运行一段就卡住不动了。
emby获取api key有两张关键图片不显示,无法照着操作
If this server is no longer running, remove /tmp/.X99-lock
moviefloder not found
UseProxy: false
HttpProxy: http://127.0.0.1:10809
EveryTime: 12h
Threads: 2
RunAtStartup: true
MovieFolder: /media/电影
SeriesFolder: /media/连续剧
储存空间是迅雷/下载/media
求教
你好,在运行后,看日志反复出现这段日志,无法下载字幕呢
INFO]: 2021-09-27 00:23:35 – ChineseSubFinder Version: v0.17.1
stderr: [INFO]: 2021-09-27 00:23:35 – UseProxy = false
stderr: [INFO]: 2021-09-27 00:23:35 – MovieFolder: /media/Movie
stderr: [INFO]: 2021-09-27 00:23:35 – SeriesFolder: /media/Tv
stderr: [INFO]: 2021-09-27 00:23:35 – HotFix Start…
stderr: [INFO]: 2021-09-27 00:23:35 – hotfix 001 start…
stderr: [WARNING]: 2021-09-27 00:23:35 – IsSubHasChinese.HasChineseLang /media/Movie/Alien.Covenant.2017.2160p.BluRay.HEVC.TrueHD.7.1.Atmos-TERMiNAL/Aladdin.2019.1080p.HDRip.x264.DD5.1-SHITBOX/English-SDH.srt not chinese sub, is 英
stderr: [WARNING]: 2021-09-27 00:23:35 – IsSubHasChinese.HasChineseLang /media/Movie/Alien.Covenant.2017.2160p.BluRay.HEVC.TrueHD.7.1.Atmos-TERMiNAL/Aladdin.2019.1080p.HDRip.x264.DD5.1-SHITBOX/English.srt not chinese sub, is 英
stderr: [WARNING]: 2021-09-27 00:23:36 – IsSubHasChinese.HasChineseLang /media/Movie/Anna.2019.1080p.WEB-DL.DD5.1.H264-FGT/English.srt not chinese sub, is 英
stderr: [WARNING]: 2021-09-27 00:23:37 – IsSubHasChinese.HasChineseLang /media/Movie/Avengers.Endgame.2019.1080p.BluRay.x264.TrueHD.7.1.Atmos-FGT/Avengers.Endgame.2019.1080p.BluRay.x264.TrueHD.7.1.Atmos-FGT..srt not chinese sub, is 英
stderr: panic: runtime error: invalid memory address or nil pointer dereference
stderr: [signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x8ce8fd]
stderr:
stderr: goroutine 1 [running]:
stderr: github.com/allanpk716/ChineseSubFinder/internal/pkg/sub_parser_hub.SubParserHub.DetermineFileTypeFromFile({{0xc0000ac160, 0xd33dc0, 0x1d52101}}, {0xc0006a6000, 0x2})
stderr: /homelab/buildspace/internal/pkg/sub_parser_hub/subParserHub.go:44 +0x15d
stderr: github.com/allanpk716/ChineseSubFinder/internal/pkg/sub_parser_hub.SubParserHub.IsSubHasChinese({{0xc0000ac160, 0x1d836a8, 0xc000807238}}, {0xc0006a6000, 0x8d})
stderr: /homelab/buildspace/internal/pkg/sub_parser_hub/subParserHub.go:58 +0x45
stderr: github.com/allanpk716/ChineseSubFinder/internal/logic/movie_helper.MovieHasChineseSub({0xc0003694d0, 0x8a})
stderr: /homelab/buildspace/internal/logic/movie_helper/moviehelper.go:93 +0x3a5
stderr: github.com/allanpk716/ChineseSubFinder/internal/pkg/hot_fix.HotFix001.Process({{0xc000470680, 0x10}, {0xc0004706b0, 0xc0004f13b0}})
stderr: /homelab/buildspace/internal/pkg/hot_fix/hot_fix_001.go:57 +0x709
stderr: github.com/allanpk716/ChineseSubFinder/internal/pkg/hot_fix.HotFixProcess({{0xc000470680, 0x4}, {0xc0004706b0, 0x1}})
stderr: /homelab/buildspace/internal/pkg/hot_fix/hot_fix_hub.go:39 +0x368
stderr: main.main()
stderr: /homelab/buildspace/cmd/chinesesubfinder/main.go:74 +0x485
stderr: (EE)
stderr: Fatal server error:
stderr: (EE) Server is already active for display 99
stderr: If this server is no longer running, remove /tmp/.X99-lock
stderr: and start again.
stderr: (EE)
@熊二 找原作者反馈一下,可能是内存不足或者线程开多了?
@NG6 谢谢大佬回复,搞好了,就是pid和gid要设置成0
@熊二 puidguid设置成0?
请问大佬,如果电视剧没有NFO信息,那是不是就不能自动刮削字幕
@哈利 是的,先用emby生成info吧
你好! 做过这些尝试还是会出现这个报错,
尝试:填写自己的UID、GID与PUID=0 PGID=0
挂载路径:/media .
MovieFolder:/media/电影
SeriesFolder:/media/电视剧
报错内容:
/homelab/buildspace/cmd/chinesesubfinder/main.go:22 +0x48
已解决!
修改成原文件可以识别(『:』后面空格被我删除所以无法识别)
UseProxy: false
HttpProxy: http:/127.0.0.1:10809
EveryTime: 12h
Threads: 1
SaveMultiSub: true
MovieFolder: /media/电影
SeriesFolder: /media/连续剧
好像下载过的字幕不会自己跳过?还是我设置的路径是错的。
MovieFolder: /media/movie
SeriesFolder: /media/连续剧
可以下载字幕,就是每次都会重头开始好像。
@llion 目前的版本确实是会重复扫描
可以加下您的微信吗····一直搜索不到电影文件··
@900566 config.ymal目录填写错了
ChineseSubFinder必须识别到电影目录才能工作
存储空间根据你媒体文件实际存放目录设置,比如
/volume3/HappyLife/Video
config.ymal就应该是/media/电影
[INFO]: 2021-07-17 15:25:00 – First Time Download Start
[INFO]: 2021-07-17 15:25:00 – Download One Started…
[INFO]: 2021-07-17 15:25:00 – Download Movie Sub Started…
[INFO]: 2021-07-17 15:25:09 – Skip 12.Angry.Men.1957.1080p.BluRay.x265-RARBG.mp4 Sub Download, because movie has sub and published more than 2 years
[INFO]: 2021-07-17 15:25:09 – no sub found 12.Angry.Men.1957.1080p.BluRay.x265-RARBG.mp4
[INFO]: 2021-07-17 15:25:09 – Skip 1917.2019.1080p.BluRay.x265-RARBG.mp4 Sub Download, because movie has sub and downloaded or aired more than 3 months
[INFO]: 2021-07-17 15:25:09 – no sub found 1917.2019.1080p.BluRay.x265-RARBG.mp4
有的电影下载的时候就带的英文字幕。。。然后就不下了。。请问怎么设置哦
@baiduceo 请问可以设置这么一个功能么:如subfinder那样,优先语言选项,即使有英文字幕也可以下中文或者中英字幕。。
群晖DS3617中安装,一直报“moviefloder not found”,怎么修改config.ymal都一样,恳请指教。
示例:config.ymal中设置: MovieFolder:/volume3/HappyLife/Video/电影
存储空间中设置:HappyLife/Video/电影 /media
上述示例反复修改都一样报错。
@delphi008
config.ymal
目录填写错了ChineseSubFinder必须识别到电影目录才能工作
存储空间根据你媒体文件实际存放目录设置,比如
/volume3/HappyLife/Video
config.ymal
就应该是/media/电影
@delphi008 已经解决,非常感谢您的帮助!
Ubuntu下的docker部署能直接用文中参数吗? 我用上文的参数部署后也修改config.yaml文件,但日志里都是报moviefloder not found错误、
@nie 再试了一下 就算把上文部署参数中的媒体文件库映射到绝对路径里的媒体库里也一样会报notfound错误
@nie config.ymal目录填写错了
ChineseSubFinder必须识别到电影目录才能工作
具体参照
comment-1600
@NG6 感谢,这个问题已经解决。但是出现另一个权限问题,能找到字幕但是没权力写入?? docker部署时puid=1026 和1000都是同样的问题。
SaveMultiSub: true writeSubFile2VideoPath: open /media/mv/2001太空漫游.(1968)/1.19M.1080p.h264.2001太空漫游.2001 – A Space Odyssey.(1968).10.56 G.chs_en[zimuku].srt: permission denied
@nie 权限方面不懂的话
1、参照我EMBY那篇,写的非常详细
2、PUID=0 PGID=0,用root权限
@NG6 非常感谢您的帮助!
@NG6 谢谢大哥,实测是可以解决。但是有一个疑问,为啥 用了管理员的PUID也不行?
电影跟电视剧不在一个根目录的有什么好方法挂载么..对我来说电影的读写率远低于电视剧
@万千 分别挂载就可以,只想刮削电视剧,可以建立两个容器,电影的随用随开,电视剧的长期运行即可
你好,作者,我想问一下,我为什么配置好之后,发现程序不停的在轮询,我设置的是6小时,指的是6小时一次吗?
@pq 是6小时的,我这里也存在一些问题,卡在第336个文件不动,目前版本问题还比较多,产品正在快速迭代中,可以到GitHub中向作者反馈