[npo] Validate and filter format URLs (closes #15709)

pull/15706/merge
Sergey M․ 7 years ago
parent 6ab35f5e16
commit d1b6187012
No known key found for this signature in database
GPG Key ID: 2C393E0F18A9236D

@ -195,6 +195,10 @@ class NPOIE(NPOBaseIE):
formats = [] formats = []
urls = set() urls = set()
def is_legal_url(format_url):
return format_url and format_url not in urls and re.match(
r'^(?:https?:)?//', format_url)
QUALITY_LABELS = ('Laag', 'Normaal', 'Hoog') QUALITY_LABELS = ('Laag', 'Normaal', 'Hoog')
QUALITY_FORMATS = ('adaptive', 'wmv_sb', 'h264_sb', 'wmv_bb', 'h264_bb', 'wvc1_std', 'h264_std') QUALITY_FORMATS = ('adaptive', 'wmv_sb', 'h264_sb', 'wmv_bb', 'h264_bb', 'wvc1_std', 'h264_std')
@ -208,7 +212,7 @@ class NPOIE(NPOBaseIE):
})['items'][0] })['items'][0]
for num, item in enumerate(items): for num, item in enumerate(items):
item_url = item.get('url') item_url = item.get('url')
if not item_url or item_url in urls: if not is_legal_url(item_url):
continue continue
urls.add(item_url) urls.add(item_url)
format_id = self._search_regex( format_id = self._search_regex(
@ -279,7 +283,7 @@ class NPOIE(NPOBaseIE):
if not is_live: if not is_live:
for num, stream in enumerate(metadata.get('streams', [])): for num, stream in enumerate(metadata.get('streams', [])):
stream_url = stream.get('url') stream_url = stream.get('url')
if not stream_url or stream_url in urls: if not is_legal_url(stream_url):
continue continue
urls.add(stream_url) urls.add(stream_url)
# smooth streaming is not supported # smooth streaming is not supported

Loading…
Cancel
Save