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 |