Captions: Python code cleanup and optimisation

This commit is contained in:
Cadence Ember 2021-01-20 17:35:13 +13:00
parent 6709aa30c2
commit 8e69928756
No known key found for this signature in database
GPG Key ID: BC1C2C61CF521B17
2 changed files with 19 additions and 30 deletions

View File

@ -10,24 +10,14 @@ def extract_captions(id, **kwargs):
# Return captions for the language specified,
# The captions list otherwise
def extract_captions_from_dict(captions, **kwargs):
lang = None
label = None
if "lang" in kwargs:
lang = kwargs["lang"]
elif "label" in kwargs:
label = kwargs["label"]
else:
def extract_captions_from_dict(captions, *, lang=None, label=None):
if lang is None and label is None:
return captions
for subtitle in captions["captions"]:
if lang == subtitle["languageCode"] or label == subtitle["label"]:
url = subtitle["second__subtitleUrl"]
with requests.get(url) as r:
r.raise_for_status()
return r.content.decode("utf8")
url = next(caption["second__remoteUrl"] for caption in captions["captions"] if caption["languageCode"] == lang or caption["label"] == label)
with requests.get(url) as r:
r.raise_for_status()
return r
# Currently unused in favour of extract_captions_from_api.
def extract_captions_from_video(id):
@ -67,7 +57,7 @@ def extract_captions_from_api(id):
"label": label if label != "" else language_code,
"languageCode": language_code,
"url": subtitle_api_url,
"second__subtitleUrl": subtitle_url
"second__remoteUrl": subtitle_url
})
return result

View File

@ -173,22 +173,21 @@ def extract_video(id):
"second__width": format["width"],
"second__height": format["height"]
})
if "requested_subtitles" in info and info["requested_subtitles"]:
if info.get("requested_subtitles"):
for language_code, subtitle in info["requested_subtitles"].items():
if language_code != "live_chat":
subtitle_url = subtitle["url"]
label = get_language_label_from_url(subtitle_url)
subtitle_api_url = get_subtitle_api_url(id, label, language_code)
if language_code == "live_chat":
continue
result["captions"].append({
"label": label if label != "" else language_code,
"languageCode": language_code,
"url": subtitle_api_url,
"second__subtitleUrl": subtitle_url # Direct YouTube url
})
subtitle_url = subtitle["url"]
label = get_language_label_from_url(subtitle_url)
subtitle_api_url = get_subtitle_api_url(id, label, language_code)
result["captions"].append({
"label": label if label != "" else language_code,
"languageCode": language_code,
"url": subtitle_api_url,
"second__subtitleUrl": subtitle_url # Direct YouTube url
})
result = get_more_stuff_from_file(info["id"], result)