aboutsummaryrefslogtreecommitdiff
path: root/yt_dlp/utils/traversal.py
diff options
context:
space:
mode:
authorSimon Sawicki <contact@grub4k.xyz>2024-11-15 23:25:52 +0100
committerGitHub <noreply@github.com>2024-11-15 23:25:52 +0100
commitc014fbcddcb4c8f79d914ac5bb526758b540ea33 (patch)
treeac7fb2dbb4665e4731ae02b0dde1d41f2dee800b /yt_dlp/utils/traversal.py
parent39d79c9b9cf23411d935910685c40aa1a2fdb409 (diff)
[utils] `subs_list_to_dict`: Add `lang` default parameter (#11508)
Authored by: Grub4K
Diffstat (limited to 'yt_dlp/utils/traversal.py')
-rw-r--r--yt_dlp/utils/traversal.py22
1 files changed, 14 insertions, 8 deletions
diff --git a/yt_dlp/utils/traversal.py b/yt_dlp/utils/traversal.py
index 6bb52050f..76b51f53d 100644
--- a/yt_dlp/utils/traversal.py
+++ b/yt_dlp/utils/traversal.py
@@ -332,14 +332,14 @@ class _RequiredError(ExtractorError):
@typing.overload
-def subs_list_to_dict(*, ext: str | None = None) -> collections.abc.Callable[[list[dict]], dict[str, list[dict]]]: ...
+def subs_list_to_dict(*, lang: str | None = 'und', ext: str | None = None) -> collections.abc.Callable[[list[dict]], dict[str, list[dict]]]: ...
@typing.overload
-def subs_list_to_dict(subs: list[dict] | None, /, *, ext: str | None = None) -> dict[str, list[dict]]: ...
+def subs_list_to_dict(subs: list[dict] | None, /, *, lang: str | None = 'und', ext: str | None = None) -> dict[str, list[dict]]: ...
-def subs_list_to_dict(subs: list[dict] | None = None, /, *, ext=None):
+def subs_list_to_dict(subs: list[dict] | None = None, /, *, lang='und', ext=None):
"""
Convert subtitles from a traversal into a subtitle dict.
The path should have an `all` immediately before this function.
@@ -352,7 +352,7 @@ def subs_list_to_dict(subs: list[dict] | None = None, /, *, ext=None):
`quality` The sort order for each subtitle
"""
if subs is None:
- return functools.partial(subs_list_to_dict, ext=ext)
+ return functools.partial(subs_list_to_dict, lang=lang, ext=ext)
result = collections.defaultdict(list)
@@ -360,10 +360,16 @@ def subs_list_to_dict(subs: list[dict] | None = None, /, *, ext=None):
if not url_or_none(sub.get('url')) and not sub.get('data'):
continue
sub_id = sub.pop('id', None)
- if sub_id is None:
- continue
- if ext is not None and not sub.get('ext'):
- sub['ext'] = ext
+ if not isinstance(sub_id, str):
+ if not lang:
+ continue
+ sub_id = lang
+ sub_ext = sub.get('ext')
+ if not isinstance(sub_ext, str):
+ if not ext:
+ sub.pop('ext', None)
+ else:
+ sub['ext'] = ext
result[sub_id].append(sub)
result = dict(result)