subliminal | 电影字幕下载神器

3 min read

subliminal 是一个基于 Python 的强大的命令行字幕搜索和下载工具。

最先知道 subliminal 是因为 MPV 播放器。配合插件 find_subtitles.lua 使用,在载入视频的同时搜索并下载中文字幕,简直天衣无缝。不过有的视频的文件名不是那么标准的话,就不一定能匹配得到合适的字幕。解决方法除了改文件名以外,还可以用 subliminal 手动搜索。

subliminal 使用多个字幕网站做为数据源,包括世界上最大的开放式字幕库 opensubtitles

{{< spoiler >}}不幸的是,有几个字幕站被墙了,比如 podnapisi, legendastv, shooter…{{< /spoiler >}}


GitHub 地址:https://github.com/Diaoul/subliminal


subliminal

依赖

  • python2

安装

首先安装 python2pip

然后在终端中输入:

pip install subliminal

使用

在终端中输入:

subliminal download -l zh [电影名称]

例如,如果要下载「低俗小说」的字幕:

subliminal download -l zh Pulp.Fiction.1994.720p.BluRay.DTS.x264-ESiR

return

部分字幕文件:

2
00:00:14,480 --> 00:00:18,850
柔軟潮濕的物體

3
00:00:18,980 --> 00:00:24,610
低級趣味、印刷簡陋的書刊

4
00:00:27,620 --> 00:00:31,590
算了  太冒險了  我不幹

5
00:00:31,590 --> 00:00:34,080
你每次都這樣說

6
00:00:34,460 --> 00:00:36,890
太危險了…我不幹了…

7
00:00:37,060 --> 00:00:39,530
我哪一次說錯?

居然是繁体,不过我一般遇到的都是简体中文的,而且繁体也不是不能看🤔


命令中的 -l 指定下载的字幕语言,例如要下载英语字幕:

subliminal download -l cn Pulp.Fiction.1994.720p.BluRay.DTS.x264-ESiR

脚本

除了手动输入命令行外,还可以使用脚本 Python 脚本。例如下面这个脚本就可以自动下载目录中视频文件对应的字幕:

from datetime import timedelta

from babelfish import Language
from subliminal import download_best_subtitles, region, save_subtitles, scan_videos

# configure the cache
region.configure('dogpile.cache.dbm', arguments={'filename': 'cachefile.dbm'})

# scan for videos newer than 2 weeks and their existing subtitles in a folder
videos = scan_videos('/video/folder', age=timedelta(weeks=2))

# download best subtitles
subtitles = download_best_subtitles(videos, {Language('eng'), Language('fra')})

# save them to disk, next to the video
for v in videos:
    save_subtitles(v, subtitles[v])

还有配合 MPV / GNOME MPV 播放器使用的脚本:find_subtitles.lua  关于 GNOME MPV 播放器

需要注意的是 find_subtitles.lua 默认下载的是英文字幕,下载中午字幕需要在脚本中将 38 行的 en 替换换成 zh。如果你觉得麻烦的话,可以使用我修改过的版本