aboutsummaryrefslogtreecommitdiff
path: root/yt_dlp/utils/traversal.py
diff options
context:
space:
mode:
authorbashonly <88596187+bashonly@users.noreply.github.com>2024-10-30 21:53:41 +0000
committerGitHub <noreply@github.com>2024-10-30 21:53:41 +0000
commitb6dc2c49e8793c6dfa21275e61caf49ec1148b81 (patch)
tree68e44258d8f6aba23f71e449316639008bfd3a4c /yt_dlp/utils/traversal.py
parent76802f461332d444e596437c42374fa237fa5174 (diff)
[utils] Allow partial application for more functions (#11391)
Also adds the `trim_str` traversal helper Authored by: bashonly, Grub4K Co-authored-by: Simon Sawicki <contact@grub4k.xyz>
Diffstat (limited to 'yt_dlp/utils/traversal.py')
-rw-r--r--yt_dlp/utils/traversal.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/yt_dlp/utils/traversal.py b/yt_dlp/utils/traversal.py
index 0eef817ea..dd9b4690b 100644
--- a/yt_dlp/utils/traversal.py
+++ b/yt_dlp/utils/traversal.py
@@ -435,6 +435,20 @@ def find_elements(*, tag=None, cls=None, attr=None, value=None, html=False):
return functools.partial(func, cls)
+def trim_str(*, start=None, end=None):
+ def trim(s):
+ if s is None:
+ return None
+ start_idx = 0
+ if start and s.startswith(start):
+ start_idx = len(start)
+ if end and s.endswith(end):
+ return s[start_idx:-len(end)]
+ return s[start_idx:]
+
+ return trim
+
+
def get_first(obj, *paths, **kwargs):
return traverse_obj(obj, *((..., *variadic(keys)) for keys in paths), **kwargs, get_all=False)