Fix exception when _captions_base_url is not present

Signed-off-by: Jesús <heckyel@hyperbola.info>
This commit is contained in:
James Taylor 2022-03-23 00:34:39 -07:00 committed by Jesús
parent e8cbc5074a
commit dcd4b0f0ae
No known key found for this signature in database
GPG Key ID: F6EE7BC59A315766
3 changed files with 9 additions and 2 deletions

View File

@ -176,7 +176,7 @@ def make_caption_src(info, lang, auto=False, trans_lang=None):
if trans_lang: if trans_lang:
label += ' -> ' + trans_lang label += ' -> ' + trans_lang
return { return {
'url': '/' + yt_data_extract.get_caption_url(info, lang, 'vtt', auto, trans_lang), 'url': util.prefix_url(yt_data_extract.get_caption_url(info, lang, 'vtt', auto, trans_lang)),
'label': label, 'label': label,
'srclang': trans_lang[0:2] if trans_lang else lang[0:2], 'srclang': trans_lang[0:2] if trans_lang else lang[0:2],
'on': False, 'on': False,
@ -220,6 +220,8 @@ def get_subtitle_sources(info):
pref_lang (Automatic) pref_lang (Automatic)
pref_lang (Manual)''' pref_lang (Manual)'''
sources = [] sources = []
if not yt_data_extract.captions_available(info):
return []
pref_lang = settings.subtitles_language pref_lang = settings.subtitles_language
native_video_lang = None native_video_lang = None
if info['automatic_caption_languages']: if info['automatic_caption_languages']:

View File

@ -10,4 +10,4 @@ from .watch_extraction import (extract_watch_info, get_caption_url,
update_with_age_restricted_info, requires_decryption, update_with_age_restricted_info, requires_decryption,
extract_decryption_function, decrypt_signatures, _formats, extract_decryption_function, decrypt_signatures, _formats,
update_format_with_type_info, extract_hls_formats, update_format_with_type_info, extract_hls_formats,
extract_watch_info_from_html) extract_watch_info_from_html, captions_available)

View File

@ -732,10 +732,15 @@ def extract_watch_info_from_html(watch_html):
return extract_watch_info(fake_polymer_json) return extract_watch_info(fake_polymer_json)
def captions_available(info):
return bool(info['_captions_base_url'])
def get_caption_url(info, language, format, automatic=False, translation_language=None): def get_caption_url(info, language, format, automatic=False, translation_language=None):
'''Gets the url for captions with the given language and format. If automatic is True, get the automatic captions for that language. If translation_language is given, translate the captions from `language` to `translation_language`. If automatic is true and translation_language is given, the automatic captions will be translated.''' '''Gets the url for captions with the given language and format. If automatic is True, get the automatic captions for that language. If translation_language is given, translate the captions from `language` to `translation_language`. If automatic is true and translation_language is given, the automatic captions will be translated.'''
url = info['_captions_base_url'] url = info['_captions_base_url']
if not url:
return None
url += '&lang=' + language url += '&lang=' + language
url += '&fmt=' + format url += '&fmt=' + format
if automatic: if automatic: