How can I download subtitles of a list of videos using youtube-dl? I need an option for this. However I could not find an option to download only subtitles
There is an option, clearly mentioned in the documention:
--write-sub Write subtitle file --write-auto-sub Write automatic subtitle file (YouTube only) --all-subs Download all the available subtitles of the video --list-subs List all available subtitles for the video --sub-format FORMAT Subtitle format, accepts formats preference, for example: "srt" or "ass/srt/best" --sub-lang LANGS Languages of the subtitles to download (optional) separated by commas, use IETF language tags like 'en,pt'
So for example, to list all subs for a video:
youtube-dl --list-subs https://www.youtube.com/watch?v=Ye8mB6VsUHw
To download all subs, but not the video:
youtube-dl --all-subs --skip-download https://www.youtube.com/watch?v=Ye8mB6VsUHw
Another simple way to download subtitles from YouTube is to download Google2SRT. Google2SRT is a free, open source program for Windows, Mac and Linux that is able to download, save and convert multiple subtitles from YouTube videos.
Click the links to see screenshots of steps 1 and 2.
View the destination folder that was input in the SRT subtitles textbox to locate the SRT files.
just run the following command
youtube-dl --write-auto-sub --convert-subs=srt --skip-download URL
For example you are downloading
https://www.youtube.com/watch?v=example. with title "example"
--convert=srt will output to a file named
en stands for English
es for Spanish etc.
The file will have something like this:
00:00:04.259 --> 00:00:05.259 >> I’m Elon Musk. 00:00:05.259 --> 00:00:06.669 >> What is your claim to fame? 00:00:06.669 --> 00:00:07.669 >> I’m the founder of 00:00:07.669 --> 00:00:08.669 Tesla.com.
OPTIONAL - If you need the text to be cleaned up you can use python to clean it a little:
import re bad_words = ['-->'] with open('example.en.vtt') as oldfile, open('newfile.txt', 'w') as newfile: for line in oldfile: if not any(bad_word in line for bad_word in bad_words): newfile.write(line) with open('newfile.txt') as result: uniqlines = set(result.readlines()) with open('sub_out.txt', 'w') as rmdup: mylst = map(lambda each: each.strip(">>"), uniqlines) print(mylst) rmdup.writelines(set(mylst))
I’m Elon Musk. What is your claim to fame? I’m the founder of Tesla.com.