Merge branch 'master' of https://github.com/zubearc/youtube-dl into zubearc
This commit is contained in:
commit
9aa79d6460
2 changed files with 27 additions and 14 deletions
|
@ -64,8 +64,8 @@ class TestYoutubeSubtitles(BaseTestSubtitles):
|
||||||
self.DL.params['allsubtitles'] = True
|
self.DL.params['allsubtitles'] = True
|
||||||
subtitles = self.getSubtitles()
|
subtitles = self.getSubtitles()
|
||||||
self.assertEqual(len(subtitles.keys()), 13)
|
self.assertEqual(len(subtitles.keys()), 13)
|
||||||
self.assertEqual(md5(subtitles['en']), '3cb210999d3e021bd6c7f0ea751eab06')
|
self.assertEqual(md5(subtitles['en']), '688dd1ce0981683867e7fe6fde2a224b')
|
||||||
self.assertEqual(md5(subtitles['it']), '6d752b98c31f1cf8d597050c7a2cb4b5')
|
self.assertEqual(md5(subtitles['it']), '31324d30b8430b309f7f5979a504a769')
|
||||||
for lang in ['fr', 'de']:
|
for lang in ['fr', 'de']:
|
||||||
self.assertTrue(subtitles.get(lang) is not None, 'Subtitles for \'%s\' not extracted' % lang)
|
self.assertTrue(subtitles.get(lang) is not None, 'Subtitles for \'%s\' not extracted' % lang)
|
||||||
|
|
||||||
|
@ -73,13 +73,13 @@ class TestYoutubeSubtitles(BaseTestSubtitles):
|
||||||
self.DL.params['writesubtitles'] = True
|
self.DL.params['writesubtitles'] = True
|
||||||
self.DL.params['subtitlesformat'] = 'ttml'
|
self.DL.params['subtitlesformat'] = 'ttml'
|
||||||
subtitles = self.getSubtitles()
|
subtitles = self.getSubtitles()
|
||||||
self.assertEqual(md5(subtitles['en']), 'e306f8c42842f723447d9f63ad65df54')
|
self.assertEqual(md5(subtitles['en']), 'c97ddf1217390906fa9fbd34901f3da2')
|
||||||
|
|
||||||
def test_youtube_subtitles_vtt_format(self):
|
def test_youtube_subtitles_vtt_format(self):
|
||||||
self.DL.params['writesubtitles'] = True
|
self.DL.params['writesubtitles'] = True
|
||||||
self.DL.params['subtitlesformat'] = 'vtt'
|
self.DL.params['subtitlesformat'] = 'vtt'
|
||||||
subtitles = self.getSubtitles()
|
subtitles = self.getSubtitles()
|
||||||
self.assertEqual(md5(subtitles['en']), '3cb210999d3e021bd6c7f0ea751eab06')
|
self.assertEqual(md5(subtitles['en']), 'ae1bd34126571a77aabd4d276b28044d')
|
||||||
|
|
||||||
def test_youtube_automatic_captions(self):
|
def test_youtube_automatic_captions(self):
|
||||||
self.url = '8YoUxe5ncPo'
|
self.url = '8YoUxe5ncPo'
|
||||||
|
@ -88,9 +88,15 @@ class TestYoutubeSubtitles(BaseTestSubtitles):
|
||||||
subtitles = self.getSubtitles()
|
subtitles = self.getSubtitles()
|
||||||
self.assertTrue(subtitles['it'] is not None)
|
self.assertTrue(subtitles['it'] is not None)
|
||||||
|
|
||||||
|
def test_youtube_no_automatic_captions(self):
|
||||||
|
self.url = 'QRS8MkLhQmM'
|
||||||
|
self.DL.params['writeautomaticsub'] = True
|
||||||
|
subtitles = self.getSubtitles()
|
||||||
|
self.assertTrue(not subtitles)
|
||||||
|
|
||||||
def test_youtube_translated_subtitles(self):
|
def test_youtube_translated_subtitles(self):
|
||||||
# This video has a subtitles track, which can be translated
|
# This video has a subtitles track, which can be translated
|
||||||
self.url = 'Ky9eprVWzlI'
|
self.url = 'i0ZabxXmH4Y'
|
||||||
self.DL.params['writeautomaticsub'] = True
|
self.DL.params['writeautomaticsub'] = True
|
||||||
self.DL.params['subtitleslangs'] = ['it']
|
self.DL.params['subtitleslangs'] = ['it']
|
||||||
subtitles = self.getSubtitles()
|
subtitles = self.getSubtitles()
|
||||||
|
|
|
@ -549,7 +549,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
'396': {'acodec': 'none', 'vcodec': 'av01.0.05M.08'},
|
'396': {'acodec': 'none', 'vcodec': 'av01.0.05M.08'},
|
||||||
'397': {'acodec': 'none', 'vcodec': 'av01.0.05M.08'},
|
'397': {'acodec': 'none', 'vcodec': 'av01.0.05M.08'},
|
||||||
}
|
}
|
||||||
_SUBTITLE_FORMATS = ('srv1', 'srv2', 'srv3', 'ttml', 'vtt')
|
_SUBTITLE_FORMATS = ('srv1', 'srv2', 'srv3', 'ttml', 'vtt', 'json3')
|
||||||
|
|
||||||
_GEO_BYPASS = False
|
_GEO_BYPASS = False
|
||||||
|
|
||||||
|
@ -1577,7 +1577,12 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
player_response, video_id, fatal=False)
|
player_response, video_id, fatal=False)
|
||||||
if player_response:
|
if player_response:
|
||||||
renderer = player_response['captions']['playerCaptionsTracklistRenderer']
|
renderer = player_response['captions']['playerCaptionsTracklistRenderer']
|
||||||
base_url = renderer['captionTracks'][0]['baseUrl']
|
caption_tracks = renderer['captionTracks']
|
||||||
|
for caption_track in caption_tracks:
|
||||||
|
if 'kind' not in caption_track:
|
||||||
|
# not an automatic transcription
|
||||||
|
continue
|
||||||
|
base_url = caption_track['baseUrl']
|
||||||
sub_lang_list = []
|
sub_lang_list = []
|
||||||
for lang in renderer['translationLanguages']:
|
for lang in renderer['translationLanguages']:
|
||||||
lang_code = lang.get('languageCode')
|
lang_code = lang.get('languageCode')
|
||||||
|
@ -1585,6 +1590,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
|
||||||
sub_lang_list.append(lang_code)
|
sub_lang_list.append(lang_code)
|
||||||
return make_captions(base_url, sub_lang_list)
|
return make_captions(base_url, sub_lang_list)
|
||||||
|
|
||||||
|
self._downloader.report_warning("Couldn't find automatic captions for %s" % video_id)
|
||||||
|
return {}
|
||||||
# Some videos don't provide ttsurl but rather caption_tracks and
|
# Some videos don't provide ttsurl but rather caption_tracks and
|
||||||
# caption_translation_languages (e.g. 20LmZk1hakA)
|
# caption_translation_languages (e.g. 20LmZk1hakA)
|
||||||
# Does not used anymore as of 22.06.2017
|
# Does not used anymore as of 22.06.2017
|
||||||
|
|
Loading…
Reference in a new issue