From 25903f82c8d123ec2a22ae36ee7015a694bc2420 Mon Sep 17 00:00:00 2001 From: dirkf Date: Sun, 1 Aug 2021 20:58:45 +0100 Subject: [PATCH] Sanitise format_id to match format selection Valid characters in format selection expression RHS are [a-zA-Z0-9_.-] --- youtube_dl/YoutubeDL.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index fe30758ef..d03224fdb 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -1597,7 +1597,9 @@ class YoutubeDL(object): format['format_id'] = compat_str(i) else: # Sanitize format_id from characters used in format selector expression - format['format_id'] = re.sub(r'[\s,/+\[\]()]', '_', format['format_id']) + # In fact, replace anything that's not allowed as a value in format selection, + # or (eg) excluding a format_id can crash. See method _build_format_filter() + format['format_id'] = re.sub(r'[^a-zA-Z0-9._-]', '_', format['format_id']) format_id = format['format_id'] if format_id not in formats_dict: formats_dict[format_id] = []