diff options
| author | Jaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com> | 2014-12-31 14:15:16 +0100 | 
|---|---|---|
| committer | Jaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com> | 2014-12-31 14:15:16 +0100 | 
| commit | 7d900ef1bf131fc140d35d306500a5cec9565f89 (patch) | |
| tree | c7cb1e491b54238f694243b945a596fdb26568f6 | |
| parent | 1931a73f392698d01d148f69e612391ad2d7138d (diff) | |
[youtube] Add support for automatically translated subtitles (fixes #4555)
They have a manually uploaded subtitles track and YouTube can transtale it.
| -rw-r--r-- | test/test_subtitles.py | 8 | ||||
| -rw-r--r-- | youtube_dl/extractor/youtube.py | 5 | 
2 files changed, 11 insertions, 2 deletions
| diff --git a/test/test_subtitles.py b/test/test_subtitles.py index 7c4cd8218..d34565191 100644 --- a/test/test_subtitles.py +++ b/test/test_subtitles.py @@ -88,6 +88,14 @@ class TestYoutubeSubtitles(BaseTestSubtitles):          subtitles = self.getSubtitles()          self.assertTrue(subtitles['it'] is not None) +    def test_youtube_translated_subtitles(self): +        # This video has a subtitles track, which can be translated +        self.url = 'Ky9eprVWzlI' +        self.DL.params['writeautomaticsub'] = True +        self.DL.params['subtitleslangs'] = ['it'] +        subtitles = self.getSubtitles() +        self.assertTrue(subtitles['it'] is not None) +      def test_youtube_nosubtitles(self):          self.DL.expect_warning('video doesn\'t have subtitles')          self.url = 'n5BB19UTcdA' diff --git a/youtube_dl/extractor/youtube.py b/youtube_dl/extractor/youtube.py index 3da83e3a8..224f1b041 100644 --- a/youtube_dl/extractor/youtube.py +++ b/youtube_dl/extractor/youtube.py @@ -662,10 +662,11 @@ class YoutubeIE(YoutubeBaseInfoExtractor, SubtitlesInfoExtractor):              list_url = caption_url + '&' + list_params              caption_list = self._download_xml(list_url, video_id)              original_lang_node = caption_list.find('track') -            if original_lang_node is None or original_lang_node.attrib.get('kind') != 'asr': +            if original_lang_node is None:                  self._downloader.report_warning('Video doesn\'t have automatic captions')                  return {}              original_lang = original_lang_node.attrib['lang_code'] +            caption_kind = original_lang_node.attrib.get('kind', '')              sub_lang_list = {}              for lang_node in caption_list.findall('target'): @@ -675,7 +676,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor, SubtitlesInfoExtractor):                      'tlang': sub_lang,                      'fmt': sub_format,                      'ts': timestamp, -                    'kind': 'asr', +                    'kind': caption_kind,                  })                  sub_lang_list[sub_lang] = caption_url + '&' + params              return sub_lang_list | 
