diff options
author | Sergey M․ <dstftw@gmail.com> | 2017-07-11 21:36:45 +0700 |
---|---|---|
committer | Sergey M․ <dstftw@gmail.com> | 2017-07-11 21:36:45 +0700 |
commit | f2bb33a9868e499f4582fee24a7b67d559d33575 (patch) | |
tree | 5c96a05c33e2dce7970b28666f438fcb9e870501 /youtube_dl | |
parent | 3615bfe1b4b97cb35ddd63c455160a50c2a10961 (diff) |
[ted] Fix subtitles extraction (closes #13628, closes #13629)
Diffstat (limited to 'youtube_dl')
-rw-r--r-- | youtube_dl/extractor/ted.py | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/youtube_dl/extractor/ted.py b/youtube_dl/extractor/ted.py index f27d0e313..06a27fd04 100644 --- a/youtube_dl/extractor/ted.py +++ b/youtube_dl/extractor/ted.py @@ -271,20 +271,22 @@ class TEDIE(InfoExtractor): } def _get_subtitles(self, video_id, talk_info): - languages = [lang['languageCode'] for lang in talk_info.get('languages', [])] - if languages: - sub_lang_list = {} - for l in languages: - sub_lang_list[l] = [ - { - 'url': 'http://www.ted.com/talks/subtitles/id/%s/lang/%s/format/%s' % (video_id, l, ext), - 'ext': ext, - } - for ext in ['ted', 'srt'] - ] - return sub_lang_list - else: - return {} + sub_lang_list = {} + for language in try_get( + talk_info, + (lambda x: x['downloads']['languages'], + lambda x: x['languages']), list): + lang_code = language.get('languageCode') or language.get('ianaCode') + if not lang_code: + continue + sub_lang_list[lang_code] = [ + { + 'url': 'http://www.ted.com/talks/subtitles/id/%s/lang/%s/format/%s' % (video_id, lang_code, ext), + 'ext': ext, + } + for ext in ['ted', 'srt'] + ] + return sub_lang_list def _watch_info(self, url, name): webpage = self._download_webpage(url, name) |