aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpukkandan <pukkandan@gmail.com>2020-10-26 21:14:00 +0530
committerpukkandan <pukkandan@gmail.com>2020-12-13 20:05:03 +0530
commitf96bff99cb2cf1d112b099e5149dd2c3a6a76af2 (patch)
tree9263dd0ab6c0b4f0fbfb7835d4e0cef8165c5910
parent3f6eaea676a2e4f4e3abed35ec9ffcf220e6298e (diff)
downloadhypervideo-pre-f96bff99cb2cf1d112b099e5149dd2c3a6a76af2.tar.lz
hypervideo-pre-f96bff99cb2cf1d112b099e5149dd2c3a6a76af2.tar.xz
hypervideo-pre-f96bff99cb2cf1d112b099e5149dd2c3a6a76af2.zip
Relaxed validation for format filters so that any arbitrary field can be used
-rw-r--r--README.md2
-rw-r--r--youtube_dlc/YoutubeDL.py2
2 files changed, 2 insertions, 2 deletions
diff --git a/README.md b/README.md
index d9470eb18..7fded6a33 100644
--- a/README.md
+++ b/README.md
@@ -767,7 +767,7 @@ Also filtering work for comparisons `=` (equals), `^=` (starts with), `$=` (ends
Any string comparison may be prefixed with negation `!` in order to produce an opposite comparison, e.g. `!*=` (does not contain).
-Note that none of the aforementioned meta fields are guaranteed to be present since this solely depends on the metadata obtained by particular extractor, i.e. the metadata offered by the video hoster.
+Note that none of the aforementioned meta fields are guaranteed to be present since this solely depends on the metadata obtained by particular extractor, i.e. the metadata offered by the video hoster. Any other field made available by the extractor can also be used for filtering.
Formats for which the value is not known are excluded unless you put a question mark (`?`) after the operator. You can combine format filters, so `-f "[height <=? 720][tbr>500]"` selects up to 720p videos (or videos where the height is not known) with a bitrate of at least 500 KBit/s.
diff --git a/youtube_dlc/YoutubeDL.py b/youtube_dlc/YoutubeDL.py
index 41a1ec724..ee6d74910 100644
--- a/youtube_dlc/YoutubeDL.py
+++ b/youtube_dlc/YoutubeDL.py
@@ -1142,7 +1142,7 @@ class YoutubeDL(object):
'*=': lambda attr, value: value in attr,
}
str_operator_rex = re.compile(r'''(?x)
- \s*(?P<key>ext|acodec|vcodec|container|protocol|format_id)
+ \s*(?P<key>[a-zA-Z0-9._-]+)
\s*(?P<negation>!\s*)?(?P<op>%s)(?P<none_inclusive>\s*\?)?
\s*(?P<value>[a-zA-Z0-9._-]+)
\s*$