support new json3 captions

pull/8/head
zubearc 4 years ago
parent f5863a3ea0
commit 7e1cf1a48d

@ -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
@ -1560,7 +1560,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')
@ -1568,6 +1573,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…
Cancel
Save