From 7d900ef1bf131fc140d35d306500a5cec9565f89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaime=20Marqui=CC=81nez=20Ferra=CC=81ndiz?= Date: Wed, 31 Dec 2014 14:15:16 +0100 Subject: [PATCH] [youtube] Add support for automatically translated subtitles (fixes #4555) They have a manually uploaded subtitles track and YouTube can transtale it. --- test/test_subtitles.py | 8 ++++++++ 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 7c4cd8218e..d345651918 100644 --- a/test/test_subtitles.py +++ b/test/test_subtitles.py @@ -88,6 +88,14 @@ def test_youtube_automatic_captions(self): 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 3da83e3a84..224f1b041a 100644 --- a/youtube_dl/extractor/youtube.py +++ b/youtube_dl/extractor/youtube.py @@ -662,10 +662,11 @@ def _get_available_automatic_caption(self, video_id, webpage): 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 @@ def _get_available_automatic_caption(self, video_id, webpage): '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