diff options
author | bashonly <88596187+bashonly@users.noreply.github.com> | 2024-10-30 21:53:41 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-30 21:53:41 +0000 |
commit | b6dc2c49e8793c6dfa21275e61caf49ec1148b81 (patch) | |
tree | 68e44258d8f6aba23f71e449316639008bfd3a4c /yt_dlp/utils/traversal.py | |
parent | 76802f461332d444e596437c42374fa237fa5174 (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.py | 14 |
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) |