我使用的是 Fedora 28 操作系统并且有youtube-dl
版本2019.03.18
,我想下载所有子版本和仅有的YouTube 上的 Crashcourse 播放列表的子集,包含 45 个视频。
我希望将所有子内容写入一个 *.txt 文件中,以便我可以对其进行编辑并打印为 pdf 格式(使用evince
),同时应用适当的页码/页眉/页脚。
我尝试了以下方法:
youtube-dl --skip-download --write-sub --playlist-items 6-10 <PLAYLIST-URL> >> all-subs.txt
然而,这仅将“详细”输出写入all-subs.txt
并仅下载了 *.vtt 格式的子文件(我不知道为什么youtube-dl
不会以任何其他格式下载,即使被告知这样做,故障仍未解决)。
答案1
似乎youtube-dl
不支持这样的功能,但您可以使用cat
来连接所有下载的文件:
$ youtube-dl --output '%(autonumber)s.%(ext)s' --skip-download --write-sub 'https://www.youtube.com/watch?v=-5wpm-gesOY' 'https://www.youtube.com/watch?v=w3_0x6oaDmI'
[youtube] -5wpm-gesOY: Downloading webpage
[youtube] -5wpm-gesOY: Downloading video info webpage
[info] Writing video subtitles to: 00001.en-GB.vtt
[youtube] w3_0x6oaDmI: Downloading webpage
[youtube] w3_0x6oaDmI: Downloading video info webpage
[info] Writing video subtitles to: 00002.en.vtt
$ cat ./* > all-subs.vtt
请注意,%(autonumber)s
需要按顺序连接文件。从播放列表下载时,您可以%(playlist_index)s
改为使用。
我不知道为什么
youtube-dl
不会以任何其他格式下载,即使被告知这样做,问题仍然没有解决
虽然可以使用该--sub-format
选项请求特定格式,但请注意,此类格式的可用性取决于网站。据我所知,YouTube 仅提供ttml
和文件(并且我可以下载两种格式的字幕):vtt
$ youtube-dl --list-subs 'https://www.youtube.com/watch?v=-5wpm-gesOY'
...
Available subtitles for -5wpm-gesOY:
Language formats
en-GB vtt, ttml
ru vtt, ttml
fr vtt, ttml
...
$ youtube-dl --output '%(autonumber)s.%(ext)s' --skip-download --sub-format 'vtt' --write-sub 'https://www.youtube.com/watch?v=-5wpm-gesOY'
[youtube] -5wpm-gesOY: Downloading webpage
[youtube] -5wpm-gesOY: Downloading video info webpage
[info] Writing video subtitles to: 00001.en-GB.vtt
$ youtube-dl --output '%(autonumber)s.%(ext)s' --skip-download --sub-format 'ttml' --write-sub 'https://www.youtube.com/watch?v=-5wpm-gesOY'
[youtube] -5wpm-gesOY: Downloading webpage
[youtube] -5wpm-gesOY: Downloading video info webpage
[info] Writing video subtitles to: 00001.en-GB.ttml