about summary refs log tree commit diff
path: root/youtube_dl/extractor/ted.py
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2017-07-11 21:36:45 +0700
committerSergey M․ <dstftw@gmail.com>2017-07-11 21:36:45 +0700
commitf2bb33a9868e499f4582fee24a7b67d559d33575 (patch)
tree5c96a05c33e2dce7970b28666f438fcb9e870501 /youtube_dl/extractor/ted.py
parent3615bfe1b4b97cb35ddd63c455160a50c2a10961 (diff)
downloadyoutube-dl-f2bb33a9868e499f4582fee24a7b67d559d33575.tar.gz
youtube-dl-f2bb33a9868e499f4582fee24a7b67d559d33575.tar.xz
youtube-dl-f2bb33a9868e499f4582fee24a7b67d559d33575.zip
[ted] Fix subtitles extraction (closes #13628, closes #13629)
Diffstat (limited to 'youtube_dl/extractor/ted.py')
-rw-r--r--youtube_dl/extractor/ted.py30
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)