mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	Add regex operator and quoting to format filters (#2698)
Closes #2681 Authored by: lukasfink1
This commit is contained in:
		| @@ -1842,15 +1842,21 @@ class YoutubeDL(object): | ||||
|                 '^=': lambda attr, value: attr.startswith(value), | ||||
|                 '$=': lambda attr, value: attr.endswith(value), | ||||
|                 '*=': lambda attr, value: value in attr, | ||||
|                 '~=': lambda attr, value: value.search(attr) is not None | ||||
|             } | ||||
|             str_operator_rex = re.compile(r'''(?x)\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* | ||||
|                 (?P<negation>!\s*)?(?P<op>%s)\s*(?P<none_inclusive>\?\s*)? | ||||
|                 (?P<quote>["'])? | ||||
|                 (?P<value>(?(quote)(?:(?!(?P=quote))[^\\]|\\.)+|[\w.-]+)) | ||||
|                 (?(quote)(?P=quote))\s* | ||||
|                 ''' % '|'.join(map(re.escape, STR_OPERATORS.keys()))) | ||||
|             m = str_operator_rex.fullmatch(filter_spec) | ||||
|             if m: | ||||
|                 comparison_value = m.group('value') | ||||
|                 if m.group('op') == '~=': | ||||
|                     comparison_value = re.compile(m.group('value')) | ||||
|                 else: | ||||
|                     comparison_value = re.sub(r'''\\([\\"'])''', r'\1', m.group('value')) | ||||
|                 str_op = STR_OPERATORS[m.group('op')] | ||||
|                 if m.group('negation'): | ||||
|                     op = lambda attr, value: not str_op(attr, value) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Lukas Fink
					Lukas Fink