aboutsummaryrefslogtreecommitdiffstats
path: root/yt_dlp/extractor/generic.py
diff options
context:
space:
mode:
authorbashonly <bashonly@bashonly.com>2023-01-29 00:59:37 -0600
committerbashonly <bashonly@bashonly.com>2023-01-29 00:59:37 -0600
commit8aa0bd5d10627ece3c1815c01d02fb8bf22847a7 (patch)
tree9066e5884d9e752b9fc74762bd0d8476e593a020 /yt_dlp/extractor/generic.py
parent37e325b92ff9d784715ac0e5d1f7d96bf5f45ad9 (diff)
downloadhypervideo-pre-8aa0bd5d10627ece3c1815c01d02fb8bf22847a7.tar.lz
hypervideo-pre-8aa0bd5d10627ece3c1815c01d02fb8bf22847a7.tar.xz
hypervideo-pre-8aa0bd5d10627ece3c1815c01d02fb8bf22847a7.zip
[extractor/generic] Avoid catastrophic backtracking in KVS regex
Authored by: bashonly
Diffstat (limited to 'yt_dlp/extractor/generic.py')
-rw-r--r--yt_dlp/extractor/generic.py6
1 files changed, 3 insertions, 3 deletions
diff --git a/yt_dlp/extractor/generic.py b/yt_dlp/extractor/generic.py
index 04677b23f..9e4df4cea 100644
--- a/yt_dlp/extractor/generic.py
+++ b/yt_dlp/extractor/generic.py
@@ -2637,11 +2637,11 @@ class GenericIE(InfoExtractor):
# Look for generic KVS player (before json-ld bc of some urls that break otherwise)
found = self._search_regex((
- r'<script\b[^>]+?\bsrc\s*=\s*(["\'])https?://(?:\S+?/)+kt_player\.js\?v=(?P<ver>\d+(?:\.\d+)+)\1[^>]*>',
- r'kt_player\s*\(\s*(["\'])(?:(?!\1)[\w\W])+\1\s*,\s*(["\'])https?://(?:\S+?/)+kt_player\.swf\?v=(?P<ver>\d+(?:\.\d+)+)\2\s*,',
+ r'<script\b[^>]+?\bsrc\s*=\s*(["\'])https?://(?:(?!\1)[^?#])+/kt_player\.js\?v=(?P<ver>\d+(?:\.\d+)+)\1[^>]*>',
+ r'kt_player\s*\(\s*(["\'])(?:(?!\1)[\w\W])+\1\s*,\s*(["\'])https?://(?:(?!\2)[^?#])+/kt_player\.swf\?v=(?P<ver>\d+(?:\.\d+)+)\2\s*,',
), webpage, 'KVS player', group='ver', default=False)
if found:
- self.report_detected('KWS Player')
+ self.report_detected('KVS Player')
if found.split('.')[0] not in ('4', '5', '6'):
self.report_warning(f'Untested major version ({found}) in player engine - download may fail.')
return [self._extract_kvs(url, webpage, video_id)]