From 9ce9d546d99672a8ce500fa97a75058a2ebee3db Mon Sep 17 00:00:00 2001 From: Jeroen Meulemeester Date: Fri, 25 Dec 2015 20:12:09 +0100 Subject: [PATCH 01/15] [nieuwsblad] Add new extractor --- youtube_dl/extractor/nieuwsblad.py | 90 ++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 youtube_dl/extractor/nieuwsblad.py diff --git a/youtube_dl/extractor/nieuwsblad.py b/youtube_dl/extractor/nieuwsblad.py new file mode 100644 index 000000000..d11cb5368 --- /dev/null +++ b/youtube_dl/extractor/nieuwsblad.py @@ -0,0 +1,90 @@ +# coding: utf-8 +from __future__ import unicode_literals + +import re + +from .common import InfoExtractor +from ..utils import ( + smuggle_url +) + + +class NieuwsbladIE(InfoExtractor): + _VALID_URL = r'https?://(?:www\.)?nieuwsblad\.be/.+?/dmf([0-9]+?)_(?P[0-9]+)' + _TESTS = [ + # Source: VMMA + { + 'url': 'http://www.nieuwsblad.be/cnt/dmf20151224_02036890', + 'md5': '3dcf2c3a140d8e54dd8376d4c4a609f4', + 'info_dict': { + 'id': '02036890', + 'ext': 'mp4', + 'title': 'Krijgt zieke Pauline (3) het mooiste kerstcadeau?', + 'thumbnail': 're:http.*jpg$', + } + }, + # Source: VRT + { + 'url': 'http://www.nieuwsblad.be/cnt/dmf20151124_01986463', + 'md5': '8e46cb7ddfddeb64735fa39f105002c2', + 'info_dict': { + 'id': '01986463', + 'ext': 'mp4', + 'title': 'Angst voor terreur: fotograaf toont hoe hij de werkelijkheid kan manipuleren', + 'thumbnail': 're:http.*jpg$', + } + }, + # Source: Mediahuis (using kaltura) + { + 'url': 'http://www.nieuwsblad.be/cnt/dmf20151225_02037264', + 'md5': 'a9580438899f6355550fe1d44d4cddb9', + 'info_dict': { + 'id': '1_z4jndqki', + 'ext': 'mp4', + 'title': 'autobrand Peer', + 'thumbnail': 're:^https?://.*/thumbnail/.*', + 'timestamp': int, + 'upload_date': '20151225', + 'uploader_id': 'dcc-video-manager-hbvl@mediahuis.be' + } + }, + ] + + def _real_extract(self, url): + video_id = self._match_id(url) + webpage = self._download_webpage(url, video_id) + + iframe_m = re.search(r']+src="(.+?kaltura.com.*?)"', webpage) + if iframe_m: + return self._extract_kaltura(url, webpage) + + thumbnail = self._og_search_thumbnail(webpage) + title = self._og_search_title(webpage) + + iframe_m = re.search(r']+src="(.+?vrt.be.*?)"', webpage) + if iframe_m: + webpage = self._download_webpage(iframe_m.group(1), "vrt-iframe") + video_url = self._search_regex(r'sources.pdl = "(.*?)";', webpage, 'vrt-video') + + iframe_m = re.search(r']+src="(.+?vmma.be.*?)"', webpage) + if iframe_m: + webpage = self._download_webpage(iframe_m.group(1), "vmma-iframe") + video_url = self._search_regex(r' Date: Wed, 12 Apr 2017 01:04:02 +0200 Subject: [PATCH 02/15] [nieuwsblad] Add new extractor (Closes #7662) Fix regex used to extract kaltura url fields (id, wid and uiconf_id) Update unit test with new kaltura file format: Changed from mp4 to mov --- youtube_dl/extractor/nieuwsblad.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/youtube_dl/extractor/nieuwsblad.py b/youtube_dl/extractor/nieuwsblad.py index d11cb5368..5f01f26f5 100644 --- a/youtube_dl/extractor/nieuwsblad.py +++ b/youtube_dl/extractor/nieuwsblad.py @@ -10,6 +10,7 @@ from ..utils import ( class NieuwsbladIE(InfoExtractor): + """ Extractor for www.nieuwsblad.be """ _VALID_URL = r'https?://(?:www\.)?nieuwsblad\.be/.+?/dmf([0-9]+?)_(?P[0-9]+)' _TESTS = [ # Source: VMMA @@ -37,10 +38,10 @@ class NieuwsbladIE(InfoExtractor): # Source: Mediahuis (using kaltura) { 'url': 'http://www.nieuwsblad.be/cnt/dmf20151225_02037264', - 'md5': 'a9580438899f6355550fe1d44d4cddb9', + 'md5': 'd4decdc7f105c26767b928c54c7d5184', 'info_dict': { 'id': '1_z4jndqki', - 'ext': 'mp4', + 'ext': 'mov', 'title': 'autobrand Peer', 'thumbnail': 're:^https?://.*/thumbnail/.*', 'timestamp': int, @@ -51,6 +52,7 @@ class NieuwsbladIE(InfoExtractor): ] def _real_extract(self, url): + """ Extract the video info from the given 'nieuwsblad' URL """ video_id = self._match_id(url) webpage = self._download_webpage(url, video_id) @@ -79,12 +81,13 @@ class NieuwsbladIE(InfoExtractor): } def _extract_kaltura(self, url, web_page): - kaltura_id = self._search_regex(r'\'entry_id\': \'(.+?)\'', web_page, 'kaltura_id') - kaltura_wid = self._search_regex(r'\'wid\': \'(.+?)\'', web_page, 'kaltura_wid') - kaltura_uiconf_id = self._search_regex(r'\'uiconf_id\': \'(.+?)\'', web_page, 'kaltura_uiconf_id') + """ Delegate the video extraction to 'Kaltura' extractor """ + kaltura_id = self._search_regex(r'entry_id\s*:\s*\"(.+?)\"', web_page, 'kaltura_id') + kaltura_wid = self._search_regex(r'wid\s*\:\s*\"(.+?)\"', web_page, 'kaltura_wid') + kaltura_uiconf_id = self._search_regex(r'uiconf_id\s*:\s*\"(.+?)\"', web_page, 'kaltura_uiconf_id') kaltura_url = ( - 'https://cdnapisec.kaltura.com/index.php/kwidget/wid/%s/uiconf_id/%s/entry_id/%s' % - (kaltura_wid, kaltura_uiconf_id, kaltura_id) + 'https://cdnapisec.kaltura.com/index.php/kwidget/wid/{0}/uiconf_id/{1}/entry_id/{2}' + .format(kaltura_wid, kaltura_uiconf_id, kaltura_id) ) url_with_source = smuggle_url(kaltura_url, {'source_url': url}) return self.url_result(url_with_source, 'Kaltura') From f880f2847b98faddd31bbb1cd6c2d8cf61e55378 Mon Sep 17 00:00:00 2001 From: Jeroen Meulemeester Date: Wed, 12 Apr 2017 22:15:27 +0200 Subject: [PATCH 03/15] Fix remarks on review of #8008 Use the generic extraction method KalturaIE._extract_url() Add support for embedded vier.be partner videos --- youtube_dl/extractor/nieuwsblad.py | 42 +++++++++++++++++++++--------- youtube_dl/extractor/vier.py | 22 +++++++++++++--- 2 files changed, 48 insertions(+), 16 deletions(-) diff --git a/youtube_dl/extractor/nieuwsblad.py b/youtube_dl/extractor/nieuwsblad.py index 5f01f26f5..eaf6df333 100644 --- a/youtube_dl/extractor/nieuwsblad.py +++ b/youtube_dl/extractor/nieuwsblad.py @@ -4,6 +4,7 @@ from __future__ import unicode_literals import re from .common import InfoExtractor +from .kaltura import KalturaIE from ..utils import ( smuggle_url ) @@ -21,6 +22,8 @@ class NieuwsbladIE(InfoExtractor): 'id': '02036890', 'ext': 'mp4', 'title': 'Krijgt zieke Pauline (3) het mooiste kerstcadeau?', + 'description': 'Er is misschien toch goed nieuws voor de zieke Pauline (3). Het Riziv buigt zich' + ' namelijk over de vraag om de peperdure behandeling van 15.000 euro terug t...', 'thumbnail': 're:http.*jpg$', } }, @@ -32,6 +35,8 @@ class NieuwsbladIE(InfoExtractor): 'id': '01986463', 'ext': 'mp4', 'title': 'Angst voor terreur: fotograaf toont hoe hij de werkelijkheid kan manipuleren', + 'description': 'De metro rijdt niet, de scholen en crèches zijn dicht, vele winkels zijn gesloten. ' + 'Fotograaf Jimmy Kets brengt Brussel vandaag in beeld. Maar hij toont ook...', 'thumbnail': 're:http.*jpg$', } }, @@ -49,6 +54,19 @@ class NieuwsbladIE(InfoExtractor): 'uploader_id': 'dcc-video-manager-hbvl@mediahuis.be' } }, + # Source: Vier.be + { + 'url': 'http://www.nieuwsblad.be/cnt/dmf20170411_02829396', + 'md5': '35cb487bfd8c61fe38c9838420fd0de6', + 'info_dict': { + 'id': '02829396', + 'ext': 'mp4', + 'title': 'Dit is het nieuwste speeltje van Michel Van den Brande', + 'description': 'In de jongste aflevering van \'The Sky is the Limit\' pronkt Michel Van den Brande' + ' met zijn nieuwste speeltje: een glanzende BMW. Een van zijn medewerkers ma...', + 'thumbnail': 're:^https?://.*\.png$', + } + }, ] def _real_extract(self, url): @@ -58,10 +76,19 @@ class NieuwsbladIE(InfoExtractor): iframe_m = re.search(r']+src="(.+?kaltura.com.*?)"', webpage) if iframe_m: - return self._extract_kaltura(url, webpage) + kaltura_url = KalturaIE._extract_url(webpage) + url_with_source = smuggle_url(kaltura_url, {'source_url': url}) + return self.url_result(url_with_source, 'Kaltura') + + iframe_m = re.search(r']+src="(.+?vier.be.*?)"', webpage) + if iframe_m: + vier_url = iframe_m.group(1) + url_with_source = smuggle_url(vier_url, {'source_url': url, 'video_id': video_id}) + return self.url_result(url_with_source, 'Vier') thumbnail = self._og_search_thumbnail(webpage) title = self._og_search_title(webpage) + description = self._og_search_description(webpage) iframe_m = re.search(r']+src="(.+?vrt.be.*?)"', webpage) if iframe_m: @@ -77,17 +104,6 @@ class NieuwsbladIE(InfoExtractor): 'url': video_url, 'id': video_id, 'title': title, + 'description': description, 'thumbnail': thumbnail } - - def _extract_kaltura(self, url, web_page): - """ Delegate the video extraction to 'Kaltura' extractor """ - kaltura_id = self._search_regex(r'entry_id\s*:\s*\"(.+?)\"', web_page, 'kaltura_id') - kaltura_wid = self._search_regex(r'wid\s*\:\s*\"(.+?)\"', web_page, 'kaltura_wid') - kaltura_uiconf_id = self._search_regex(r'uiconf_id\s*:\s*\"(.+?)\"', web_page, 'kaltura_uiconf_id') - kaltura_url = ( - 'https://cdnapisec.kaltura.com/index.php/kwidget/wid/{0}/uiconf_id/{1}/entry_id/{2}' - .format(kaltura_wid, kaltura_uiconf_id, kaltura_id) - ) - url_with_source = smuggle_url(kaltura_url, {'source_url': url}) - return self.url_result(url_with_source, 'Kaltura') diff --git a/youtube_dl/extractor/vier.py b/youtube_dl/extractor/vier.py index 5ef7635b6..21a9d2f9c 100644 --- a/youtube_dl/extractor/vier.py +++ b/youtube_dl/extractor/vier.py @@ -5,12 +5,19 @@ import re import itertools from .common import InfoExtractor +from ..utils import ( + unsmuggle_url +) class VierIE(InfoExtractor): IE_NAME = 'vier' IE_DESC = 'vier.be and vijf.be' - _VALID_URL = r'https?://(?:www\.)?(?Pvier|vijf)\.be/(?:[^/]+/videos/(?P[^/]+)(?:/(?P\d+))?|video/v3/embed/(?P\d+))' + _VALID_URL = r'https?://(?:www\.)?(?Pvier|vijf)\.be/(' \ + r'?:[^/]+/videos/(?P[^/]+)(?:/(?P\d+))' \ + r'?|video/partner/embed/v2/(?P\d+)/' \ + r'?|video/v3/embed/(?P\d+)' \ + r')' _TESTS = [{ 'url': 'http://www.vier.be/planb/videos/het-wordt-warm-de-moestuin/16129', 'info_dict': { @@ -30,7 +37,7 @@ class VierIE(InfoExtractor): 'id': '2561614', 'display_id': 'zo-grappig-temptation-island-hosts-moeten-kiezen-tussen-onmogelijke-dilemmas', 'ext': 'mp4', - 'title': 'ZO grappig: Temptation Island hosts moeten kiezen tussen onmogelijke dilemma\'s', + 'title': 'EXTRA: Temptation Island hosts moeten kiezen tussen onmogelijke dilemma\'s', 'description': 'Het spel is simpel: Annelien Coorevits en Rick Brandsteder krijgen telkens 2 dilemma\'s voorgeschoteld en ze MOETEN een keuze maken.', }, 'params': { @@ -43,11 +50,15 @@ class VierIE(InfoExtractor): }, { 'url': 'http://www.vier.be/video/v3/embed/16129', 'only_matching': True, + }, { + 'url': 'http://www.vier.be/video/partner/embed/v2/2658547/4b5a8c17b5358cb1d1b48e57966721bbef6df328/srnieuwsblad/asmh', + 'only_matching': True, }] def _real_extract(self, url): + url, smuggled_data = unsmuggle_url(url, {}) mobj = re.match(self._VALID_URL, url) - embed_id = mobj.group('embed_id') + embed_id = mobj.group('embed_id') or mobj.group('partner_embed_id') display_id = mobj.group('display_id') or embed_id site = mobj.group('site') @@ -67,6 +78,11 @@ class VierIE(InfoExtractor): formats = self._extract_wowza_formats(playlist_url, display_id, skip_protocols=['dash']) self._sort_formats(formats) + video_id = smuggled_data.get('video_id') or video_id + source_url = smuggled_data.get('source_url') + if source_url: + webpage = self._download_webpage(source_url, display_id) + title = self._og_search_title(webpage, default=display_id) description = self._og_search_description(webpage, default=None) thumbnail = self._og_search_thumbnail(webpage, default=None) From 8d54077791db54278e51067cec8b850671e7e464 Mon Sep 17 00:00:00 2001 From: Jeroen Meulemeester Date: Sun, 16 Apr 2017 14:43:31 +0200 Subject: [PATCH 04/15] Fix remarks on review of #8008 Add support for 'Dynamic Embed' urls in Kaltura extractor --- youtube_dl/extractor/kaltura.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/youtube_dl/extractor/kaltura.py b/youtube_dl/extractor/kaltura.py index 41c1f3d96..b32938ea1 100644 --- a/youtube_dl/extractor/kaltura.py +++ b/youtube_dl/extractor/kaltura.py @@ -137,6 +137,14 @@ class KalturaIE(InfoExtractor): (?:(?!(?P=q1)).)* [?&]entry_id=(?P(?:(?!(?P=q1))[^&])+) (?P=q1) + ''', webpage) or + re.search( + r'''(?xs) + (?P["']) + (?:https?:)?//cdnapi(?:sec)?\.kaltura\.com(?::\d+)?/*\b + (?:p|partner_id)/(?P\d+)*.* + entry_?[Ii]d=(?P[\w_]+).*? + (?P=q1) ''', webpage) ) if mobj: From e8e1dcb937051bac9c0b37ddfebc6a02d1b8be21 Mon Sep 17 00:00:00 2001 From: Jeroen Meulemeester Date: Sun, 16 Apr 2017 14:45:19 +0200 Subject: [PATCH 05/15] Fix remarks on review of #8008 Rename nieuwsblad to more generic publisher 'Mediahuis' and add support for: - Het Nieuwsblad - De Standaard - Gazet van Antwerpen - Het Belang van Limburg --- youtube_dl/extractor/extractors.py | 1 + youtube_dl/extractor/mediahuis.py | 180 +++++++++++++++++++++++++++++ youtube_dl/extractor/nieuwsblad.py | 109 ----------------- youtube_dl/extractor/vier.py | 11 +- 4 files changed, 182 insertions(+), 119 deletions(-) create mode 100644 youtube_dl/extractor/mediahuis.py delete mode 100644 youtube_dl/extractor/nieuwsblad.py diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index a92cbefed..4f8e1b598 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -653,6 +653,7 @@ from .nick import ( NickNightIE, ) from .niconico import NiconicoIE, NiconicoPlaylistIE +from .mediahuis import MediahuisIE from .ninecninemedia import ( NineCNineMediaStackIE, NineCNineMediaIE, diff --git a/youtube_dl/extractor/mediahuis.py b/youtube_dl/extractor/mediahuis.py new file mode 100644 index 000000000..30c88eb98 --- /dev/null +++ b/youtube_dl/extractor/mediahuis.py @@ -0,0 +1,180 @@ +# coding: utf-8 +from __future__ import unicode_literals + +import re + +from .common import InfoExtractor +from .kaltura import KalturaIE +from ..utils import ( + smuggle_url +) + + +class MediahuisIE(InfoExtractor): + """ Extractor for Mediahuis news sites """ + _VALID_URL = r'https?://(?:(?:www\.)?nieuwsblad\.be|(?:www\.)?gva\.be|(?:www\.)?standaard\.be|(?:www\.)?hbvl\.be)/.+?/dmf([0-9]+?)_(?P[0-9]+)' + IE_DESC = 'Het Nieuwsblad, de Standaard, Gazet van Antwerpen and Het Belang van Limburg' + _TESTS = [ + # Source: VMMA + { + 'url': 'http://www.nieuwsblad.be/cnt/dmf20151224_02036890', + 'md5': '3dcf2c3a140d8e54dd8376d4c4a609f4', + 'info_dict': { + 'id': '02036890', + 'ext': 'mp4', + 'title': 'Krijgt zieke Pauline (3) het mooiste kerstcadeau?', + 'description': 'Er is misschien toch goed nieuws voor de zieke Pauline (3). Het Riziv buigt zich' + ' namelijk over de vraag om de peperdure behandeling van 15.000 euro terug t...', + 'thumbnail': 're:http.*jpg$', + } + }, + # Source: VRT + { + 'url': 'http://www.nieuwsblad.be/cnt/dmf20151124_01986463', + 'md5': '8e46cb7ddfddeb64735fa39f105002c2', + 'info_dict': { + 'id': '01986463', + 'ext': 'mp4', + 'title': 'Angst voor terreur: fotograaf toont hoe hij de werkelijkheid kan manipuleren', + 'description': 'De metro rijdt niet, de scholen en crèches zijn dicht, vele winkels zijn gesloten. ' + 'Fotograaf Jimmy Kets brengt Brussel vandaag in beeld. Maar hij toont ook...', + 'thumbnail': 're:http.*jpg$', + } + }, + # Source: Kaltura + { + 'url': 'http://www.nieuwsblad.be/cnt/dmf20151225_02037264', + 'md5': 'd4decdc7f105c26767b928c54c7d5184', + 'info_dict': { + 'id': '02037264', + 'ext': 'mov', + 'title': 'Exclusieve sportwagen brandt uit op weg naar winterberging', + 'description': 'Een exclusieve TVR Tuscon S is kerstdag op de Burkel helemaal uitgebrand. ' + 'De eigenaar van deze Britse sportauto was rond 11 uur onderweg om het voertuig na...', + 'thumbnail': 're:http.*jpg$', + 'timestamp': int, + 'upload_date': '20151225', + 'uploader_id': 'dcc-video-manager-hbvl@mediahuis.be' + } + }, + # Source: Vier.be + { + 'url': 'http://www.nieuwsblad.be/cnt/dmf20170411_02829396', + 'md5': '35cb487bfd8c61fe38c9838420fd0de6', + 'info_dict': { + 'id': '02829396', + 'ext': 'mp4', + 'title': 'Dit is het nieuwste speeltje van Michel Van den Brande', + 'description': 'In de jongste aflevering van \'The Sky is the Limit\' pronkt Michel Van den Brande' + ' met zijn nieuwste speeltje: een glanzende BMW. Een van zijn medewerkers ma...', + 'thumbnail': 're:^https?://.*\.png$', + } + }, + # Gazet van Antwerpen + { + 'url': 'http://www.gva.be/cnt/dmf20170412_02832220/blind-meisje-met-autisme-reageert-op-hartverwarmende-wijze-wanneer-ze-straatmuzikant-hoort-spelen', + 'md5': '54fc7fb24dd187adb25ccd698c45ddef', + 'info_dict': { + 'id': '02832220', + 'ext': 'mp4', + 'title': 'Blind meisje met autisme reageert op hartverwarmende wijze wanneer ze straatmuzikant hoort spelen', + 'description': 'De zevenjarige Lacie is blind en lijdt aan autisme, maar haar liefde voor muziek is ze ' + 'duidelijk niet verloren. Toen het meisje afgelopen vrijdag samen met...', + 'thumbnail': 're:http.*jpg$', + 'upload_date': '20170412', + 'uploader_id': 'videoredactie@mediahuis.be', + 'timestamp': 1492014190, + + } + }, + # Het Belang van Limburg + { + 'url': 'http://www.hbvl.be/cnt/dmf20170413_02832693/video-bestuurder-krijgt-appelflauwte-en-rijdt-recht-woonkamer-binnen', + 'md5': '308f2683c3e22051c9751580607ace3d', + 'info_dict': { + 'id': '02832693', + 'ext': 'mov', + 'title': 'VIDEO. Bestuurder krijgt appelflauwte en rijdt recht woonkamer binnen', + 'description': 'Een BMW is donderdagmiddag in de living van een woning beland langs de Oudenaardse' + 'steenweg in het Oost-Vlaamse Erpe-Mere. De BMW kwam van de oprit E40 gere...', + 'thumbnail': 're:http.*jpg$', + 'upload_date': '20170413', + 'uploader_id': 'video', + 'timestamp': 1492092669, + } + }, + # De Standaard (Kaltura, Dynamic Embed) + { + 'url': 'http://www.standaard.be/cnt/dmf20170412_02831280', + 'md5': '490f0874ad308a6010292edd1a041b14', + 'info_dict': { + 'id': '02831280', + 'ext': 'mp4', + 'title': 'Zo klinkt een gitaar gemaakt van papier', + 'description': 'Gitaarbouwer Walter Verreydt bouwde een gitaar uit krantenpapier. Kan een papieren ' + 'gitaar zo goed klinken als een gitaar van tropisch hout? Blijkbaar wel. ...', + 'thumbnail': 're:http.*jpg$', + 'upload_date': '20170412', + 'uploader_id': 'videoredactie@mediahuis.be', + 'timestamp': 1492009206, + } + }, + # De Standaard (Kaltura, Auto Embed) + { + 'url': 'http://www.standaard.be/cnt/dmf20170413_02832378', + 'md5': 'c3be760e20a9b49b3eac2536bc045b5b', + 'info_dict': { + 'id': '02832378', + 'ext': 'mp4', + 'title': 'VIDEO. Is bio ons geld waard?', + 'description': 'Is biologisch eten beter voor de wereld, of een sprookje voor naïeve consumenten? ' + 'Correspondente en voedingsjournaliste Dorien Knockaert neemt de kritiek v...', + 'thumbnail': 're:http.*jpg$', + 'upload_date': '20170412', + 'uploader_id': 'batchUser', + 'timestamp': 1491990547, + } + } + ] + + def _real_extract(self, url): + """ Extract the video info from the given mediahuis URL """ + video_id = self._match_id(url) + webpage = self._download_webpage(url, video_id) + thumbnail = self._og_search_thumbnail(webpage) + title = self._og_search_title(webpage) + description = self._og_search_description(webpage) + url_type = None + + iframe_m = re.search(r']+src="(.+?kaltura.com.*?)"', webpage) + if iframe_m: + video_url = smuggle_url(KalturaIE._extract_url(webpage), {'source_url': url}) + url_type = 'url_transparent' + + iframe_m = re.search(r']+src="(.+?vier.be.*?)"', webpage) + if iframe_m: + video_url = (iframe_m.group(1)) + url_type = 'url_transparent' + + iframe_m = re.search(r']+src="(.+?vrt.be.*?)"', webpage) + if iframe_m: + webpage = self._download_webpage(iframe_m.group(1), "vrt-iframe") + video_url = self._search_regex(r'sources.pdl = "(.*?)";', webpage, 'vrt-video') + + iframe_m = re.search(r']+src="(.+?vmma.be.*?)"', webpage) + if iframe_m: + webpage = self._download_webpage(iframe_m.group(1), "vmma-iframe") + video_url = self._search_regex(r'[0-9]+)' - _TESTS = [ - # Source: VMMA - { - 'url': 'http://www.nieuwsblad.be/cnt/dmf20151224_02036890', - 'md5': '3dcf2c3a140d8e54dd8376d4c4a609f4', - 'info_dict': { - 'id': '02036890', - 'ext': 'mp4', - 'title': 'Krijgt zieke Pauline (3) het mooiste kerstcadeau?', - 'description': 'Er is misschien toch goed nieuws voor de zieke Pauline (3). Het Riziv buigt zich' - ' namelijk over de vraag om de peperdure behandeling van 15.000 euro terug t...', - 'thumbnail': 're:http.*jpg$', - } - }, - # Source: VRT - { - 'url': 'http://www.nieuwsblad.be/cnt/dmf20151124_01986463', - 'md5': '8e46cb7ddfddeb64735fa39f105002c2', - 'info_dict': { - 'id': '01986463', - 'ext': 'mp4', - 'title': 'Angst voor terreur: fotograaf toont hoe hij de werkelijkheid kan manipuleren', - 'description': 'De metro rijdt niet, de scholen en crèches zijn dicht, vele winkels zijn gesloten. ' - 'Fotograaf Jimmy Kets brengt Brussel vandaag in beeld. Maar hij toont ook...', - 'thumbnail': 're:http.*jpg$', - } - }, - # Source: Mediahuis (using kaltura) - { - 'url': 'http://www.nieuwsblad.be/cnt/dmf20151225_02037264', - 'md5': 'd4decdc7f105c26767b928c54c7d5184', - 'info_dict': { - 'id': '1_z4jndqki', - 'ext': 'mov', - 'title': 'autobrand Peer', - 'thumbnail': 're:^https?://.*/thumbnail/.*', - 'timestamp': int, - 'upload_date': '20151225', - 'uploader_id': 'dcc-video-manager-hbvl@mediahuis.be' - } - }, - # Source: Vier.be - { - 'url': 'http://www.nieuwsblad.be/cnt/dmf20170411_02829396', - 'md5': '35cb487bfd8c61fe38c9838420fd0de6', - 'info_dict': { - 'id': '02829396', - 'ext': 'mp4', - 'title': 'Dit is het nieuwste speeltje van Michel Van den Brande', - 'description': 'In de jongste aflevering van \'The Sky is the Limit\' pronkt Michel Van den Brande' - ' met zijn nieuwste speeltje: een glanzende BMW. Een van zijn medewerkers ma...', - 'thumbnail': 're:^https?://.*\.png$', - } - }, - ] - - def _real_extract(self, url): - """ Extract the video info from the given 'nieuwsblad' URL """ - video_id = self._match_id(url) - webpage = self._download_webpage(url, video_id) - - iframe_m = re.search(r']+src="(.+?kaltura.com.*?)"', webpage) - if iframe_m: - kaltura_url = KalturaIE._extract_url(webpage) - url_with_source = smuggle_url(kaltura_url, {'source_url': url}) - return self.url_result(url_with_source, 'Kaltura') - - iframe_m = re.search(r']+src="(.+?vier.be.*?)"', webpage) - if iframe_m: - vier_url = iframe_m.group(1) - url_with_source = smuggle_url(vier_url, {'source_url': url, 'video_id': video_id}) - return self.url_result(url_with_source, 'Vier') - - thumbnail = self._og_search_thumbnail(webpage) - title = self._og_search_title(webpage) - description = self._og_search_description(webpage) - - iframe_m = re.search(r']+src="(.+?vrt.be.*?)"', webpage) - if iframe_m: - webpage = self._download_webpage(iframe_m.group(1), "vrt-iframe") - video_url = self._search_regex(r'sources.pdl = "(.*?)";', webpage, 'vrt-video') - - iframe_m = re.search(r']+src="(.+?vmma.be.*?)"', webpage) - if iframe_m: - webpage = self._download_webpage(iframe_m.group(1), "vmma-iframe") - video_url = self._search_regex(r' Date: Sun, 16 Apr 2017 18:37:18 +0200 Subject: [PATCH 06/15] Add extraction of syndication.vmma|medialaan.be --- youtube_dl/extractor/medialaan.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/youtube_dl/extractor/medialaan.py b/youtube_dl/extractor/medialaan.py index 6e067474b..6212bf8e6 100644 --- a/youtube_dl/extractor/medialaan.py +++ b/youtube_dl/extractor/medialaan.py @@ -17,11 +17,11 @@ from ..utils import ( class MedialaanIE(InfoExtractor): _VALID_URL = r'''(?x) https?:// - (?:www\.)? + (?:www\.|syndication\.)? (?: - (?Pvtm|q2|vtmkzoom)\.be/ + (?Pvtm|q2|vtmkzoom|vmma|medialaan)\.be/ (?: - video(?:/[^/]+/id/|/?\?.*?\baid=)| + video(?:/[^/]+/id/|/?\?.*?\baid=)|syndication/\?vID=| (?:[^/]+/)* ) ) @@ -148,6 +148,7 @@ class MedialaanIE(InfoExtractor): video = player[-1] info = { 'id': video_id, + # 'id': str_or_none(video['id']) or video_id, 'url': video['videoUrl'], 'title': video['title'], 'thumbnail': video.get('imageUrl'), From 231242be87ecb9d7bebe89bd430cf6f15f33f006 Mon Sep 17 00:00:00 2001 From: midas02 Date: Sun, 16 Apr 2017 18:45:58 +0200 Subject: [PATCH 07/15] Defer extraction of vmma.be to medialaan.py --- youtube_dl/extractor/mediahuis.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/youtube_dl/extractor/mediahuis.py b/youtube_dl/extractor/mediahuis.py index 30c88eb98..0fc15d481 100644 --- a/youtube_dl/extractor/mediahuis.py +++ b/youtube_dl/extractor/mediahuis.py @@ -12,8 +12,8 @@ from ..utils import ( class MediahuisIE(InfoExtractor): """ Extractor for Mediahuis news sites """ - _VALID_URL = r'https?://(?:(?:www\.)?nieuwsblad\.be|(?:www\.)?gva\.be|(?:www\.)?standaard\.be|(?:www\.)?hbvl\.be)/.+?/dmf([0-9]+?)_(?P[0-9]+)' - IE_DESC = 'Het Nieuwsblad, de Standaard, Gazet van Antwerpen and Het Belang van Limburg' + _VALID_URL = r'https?://(?:(?:www\.)?nieuwsblad\.be|(?:www\.)?gva\.be|(?:www\.)?standaard\.be|(?:www\.)?hbvl\.be|(?:www\.)?limburger\.nl)/.+?/dmf([0-9]+?)_(?P[0-9]+)' + IE_DESC = 'Het Nieuwsblad, de Standaard, Gazet van Antwerpen, Het Belang van Limburg, and De Limburger' _TESTS = [ # Source: VMMA { @@ -163,8 +163,9 @@ class MediahuisIE(InfoExtractor): iframe_m = re.search(r']+src="(.+?vmma.be.*?)"', webpage) if iframe_m: - webpage = self._download_webpage(iframe_m.group(1), "vmma-iframe") - video_url = self._search_regex(r' Date: Sun, 16 Apr 2017 20:15:51 +0200 Subject: [PATCH 08/15] Update test after applying patches from midas02 for #8008 --- youtube_dl/extractor/mediahuis.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/youtube_dl/extractor/mediahuis.py b/youtube_dl/extractor/mediahuis.py index 0fc15d481..8374e1c32 100644 --- a/youtube_dl/extractor/mediahuis.py +++ b/youtube_dl/extractor/mediahuis.py @@ -26,6 +26,8 @@ class MediahuisIE(InfoExtractor): 'description': 'Er is misschien toch goed nieuws voor de zieke Pauline (3). Het Riziv buigt zich' ' namelijk over de vraag om de peperdure behandeling van 15.000 euro terug t...', 'thumbnail': 're:http.*jpg$', + 'upload_date': '20151224', + 'timestamp': 1450982472, } }, # Source: VRT From fb398c9d3514101dab82822774e47f0a3fb8c63d Mon Sep 17 00:00:00 2001 From: Jeroen Meulemeester Date: Mon, 17 Apr 2017 09:18:20 +0200 Subject: [PATCH 09/15] Skip VMMA test, geo-restricted to Belgium #8008 --- youtube_dl/extractor/mediahuis.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/youtube_dl/extractor/mediahuis.py b/youtube_dl/extractor/mediahuis.py index 8374e1c32..ea90db214 100644 --- a/youtube_dl/extractor/mediahuis.py +++ b/youtube_dl/extractor/mediahuis.py @@ -28,7 +28,8 @@ class MediahuisIE(InfoExtractor): 'thumbnail': 're:http.*jpg$', 'upload_date': '20151224', 'timestamp': 1450982472, - } + }, + 'skip': 'Georestricted to Belgium', }, # Source: VRT { From e175715193125db923919fbc584a744851ef5102 Mon Sep 17 00:00:00 2001 From: midas02 Date: Mon, 17 Apr 2017 17:41:45 +0200 Subject: [PATCH 10/15] Identify direct video links Detect vtm.be and medialaancdn.be hosted mp4 videos Ex: http://www.gva.be/cnt/dmf20170105_02660060/nieuwe-vtm-programma-groeten-uit-groeit-uit-tot-nostalgische-hit --- youtube_dl/extractor/mediahuis.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/youtube_dl/extractor/mediahuis.py b/youtube_dl/extractor/mediahuis.py index ea90db214..7399cf847 100644 --- a/youtube_dl/extractor/mediahuis.py +++ b/youtube_dl/extractor/mediahuis.py @@ -170,6 +170,11 @@ class MediahuisIE(InfoExtractor): url_type = 'url_transparent' # return self.url_result(video_url, 'Medialaan') + # Source: flvpd.vtm.be/video.medialaancdn.be + iframe_m = re.search(r']+videoUrl:\'(.+?)\'', webpage) + if iframe_m: + video_url = (iframe_m.group(1)) + info = { 'url': video_url, 'id': video_id, From 5051dcbb4456fd494dca0a958be24bcabecea4b9 Mon Sep 17 00:00:00 2001 From: midas02 Date: Mon, 24 Apr 2017 23:11:03 +0200 Subject: [PATCH 11/15] Fixes - one left, still need to replace the re.search's (#2) * Add test for syndication.medialaan.be * Fixes for remarks on mediahuis/medialaan extractor --- youtube_dl/extractor/mediahuis.py | 11 +++++------ youtube_dl/extractor/medialaan.py | 8 ++++++-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/youtube_dl/extractor/mediahuis.py b/youtube_dl/extractor/mediahuis.py index 7399cf847..088a01fab 100644 --- a/youtube_dl/extractor/mediahuis.py +++ b/youtube_dl/extractor/mediahuis.py @@ -149,26 +149,25 @@ class MediahuisIE(InfoExtractor): description = self._og_search_description(webpage) url_type = None - iframe_m = re.search(r']+src="(.+?kaltura.com.*?)"', webpage) + iframe_m = re.search(r']+src="(.+?kaltura\.com.*?)"', webpage) if iframe_m: video_url = smuggle_url(KalturaIE._extract_url(webpage), {'source_url': url}) url_type = 'url_transparent' - iframe_m = re.search(r']+src="(.+?vier.be.*?)"', webpage) + iframe_m = re.search(r']+src="(.+?vier\.be.*?)"', webpage) if iframe_m: video_url = (iframe_m.group(1)) url_type = 'url_transparent' - iframe_m = re.search(r']+src="(.+?vrt.be.*?)"', webpage) + iframe_m = re.search(r']+src="(.+?vrt\.be.*?)"', webpage) if iframe_m: webpage = self._download_webpage(iframe_m.group(1), "vrt-iframe") - video_url = self._search_regex(r'sources.pdl = "(.*?)";', webpage, 'vrt-video') + video_url = self._search_regex(r'sources.pdl\s*=\s*"(.*?)";', webpage, 'vrt-video') - iframe_m = re.search(r']+src="(.+?vmma.be.*?)"', webpage) + iframe_m = re.search(r']+src="(.+?vmma\.be.*?)"', webpage) if iframe_m: video_url = (iframe_m.group(1)) url_type = 'url_transparent' - # return self.url_result(video_url, 'Medialaan') # Source: flvpd.vtm.be/video.medialaancdn.be iframe_m = re.search(r']+videoUrl:\'(.+?)\'', webpage) diff --git a/youtube_dl/extractor/medialaan.py b/youtube_dl/extractor/medialaan.py index 6212bf8e6..a2a566636 100644 --- a/youtube_dl/extractor/medialaan.py +++ b/youtube_dl/extractor/medialaan.py @@ -7,6 +7,7 @@ from ..compat import compat_str from ..utils import ( ExtractorError, int_or_none, + str_or_none, parse_duration, try_get, unified_timestamp, @@ -85,6 +86,10 @@ class MedialaanIE(InfoExtractor): # clip 'url': 'http://vtmkzoom.be/k3-dansstudio/een-nieuw-seizoen-van-k3-dansstudio', 'only_matching': True, + }, { + # syndication.medialaan.be + 'url': 'https://syndication.medialaan.be/syndication/?vID=50534bb11fe5827eb25cad5c3445c5ae', + 'only_matching': True, }] def _real_initialize(self): @@ -147,8 +152,7 @@ class MedialaanIE(InfoExtractor): if player: video = player[-1] info = { - 'id': video_id, - # 'id': str_or_none(video['id']) or video_id, + 'id': str_or_none(video['id']) or video_id, 'url': video['videoUrl'], 'title': video['title'], 'thumbnail': video.get('imageUrl'), From b7c0e9dc2704b17e61550b4f00b653c484a8a968 Mon Sep 17 00:00:00 2001 From: Jeroen Meulemeester Date: Mon, 1 May 2017 15:05:25 +0200 Subject: [PATCH 12/15] Fix moved or deleted test urls --- youtube_dl/extractor/mediahuis.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/youtube_dl/extractor/mediahuis.py b/youtube_dl/extractor/mediahuis.py index 088a01fab..42cdd2336 100644 --- a/youtube_dl/extractor/mediahuis.py +++ b/youtube_dl/extractor/mediahuis.py @@ -75,10 +75,10 @@ class MediahuisIE(InfoExtractor): }, # Gazet van Antwerpen { - 'url': 'http://www.gva.be/cnt/dmf20170412_02832220/blind-meisje-met-autisme-reageert-op-hartverwarmende-wijze-wanneer-ze-straatmuzikant-hoort-spelen', + 'url': 'http://www.gva.be/cnt/dmf20170412_02831246/blind-meisje-met-autisme-reageert-op-hartverwarmende-wijze-wanneer-ze-straatmuzikant-hoort-spelen', 'md5': '54fc7fb24dd187adb25ccd698c45ddef', 'info_dict': { - 'id': '02832220', + 'id': '02831246', 'ext': 'mp4', 'title': 'Blind meisje met autisme reageert op hartverwarmende wijze wanneer ze straatmuzikant hoort spelen', 'description': 'De zevenjarige Lacie is blind en lijdt aan autisme, maar haar liefde voor muziek is ze ' @@ -92,18 +92,18 @@ class MediahuisIE(InfoExtractor): }, # Het Belang van Limburg { - 'url': 'http://www.hbvl.be/cnt/dmf20170413_02832693/video-bestuurder-krijgt-appelflauwte-en-rijdt-recht-woonkamer-binnen', - 'md5': '308f2683c3e22051c9751580607ace3d', + 'url': 'http://www.hbvl.be/cnt/dmf20170331_02809751/video-limburger-treft-ravage-aan-na-oplichting-met-vastgoed', + 'md5': 'e3e46234966ed704cc5b07ede18f02af', 'info_dict': { - 'id': '02832693', - 'ext': 'mov', - 'title': 'VIDEO. Bestuurder krijgt appelflauwte en rijdt recht woonkamer binnen', - 'description': 'Een BMW is donderdagmiddag in de living van een woning beland langs de Oudenaardse' - 'steenweg in het Oost-Vlaamse Erpe-Mere. De BMW kwam van de oprit E40 gere...', + 'id': '02809751', + 'ext': 'mp4', + 'title': 'VIDEO. Limburger treft ravage aan na oplichting met vastgoed', + 'description': '“Eén huis is een ware ravage”, zegt Bilzenaar Danny Kwanten, die pas naar Detroit is ' + 'gevlogen waar hij zijn spaarcenten heeft geïnvesteerd in de aankoop va...', 'thumbnail': 're:http.*jpg$', - 'upload_date': '20170413', - 'uploader_id': 'video', - 'timestamp': 1492092669, + 'upload_date': '20170331', + 'uploader_id': 'dcc-video-manager-hbvl@mediahuis.be', + 'timestamp': 1490959817, } }, # De Standaard (Kaltura, Dynamic Embed) From f809fc24bf6451791d77bc4ff64fc23e7bff6038 Mon Sep 17 00:00:00 2001 From: Jeroen Meulemeester Date: Mon, 1 May 2017 15:08:33 +0200 Subject: [PATCH 13/15] Make thumbnail matcher more robust, add 'r' prefix for Python 3.6 --- youtube_dl/extractor/mediahuis.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/youtube_dl/extractor/mediahuis.py b/youtube_dl/extractor/mediahuis.py index 42cdd2336..34a9735d4 100644 --- a/youtube_dl/extractor/mediahuis.py +++ b/youtube_dl/extractor/mediahuis.py @@ -25,7 +25,7 @@ class MediahuisIE(InfoExtractor): 'title': 'Krijgt zieke Pauline (3) het mooiste kerstcadeau?', 'description': 'Er is misschien toch goed nieuws voor de zieke Pauline (3). Het Riziv buigt zich' ' namelijk over de vraag om de peperdure behandeling van 15.000 euro terug t...', - 'thumbnail': 're:http.*jpg$', + 'thumbnail': r're:^https?://.*\.jpg$', 'upload_date': '20151224', 'timestamp': 1450982472, }, @@ -41,7 +41,7 @@ class MediahuisIE(InfoExtractor): 'title': 'Angst voor terreur: fotograaf toont hoe hij de werkelijkheid kan manipuleren', 'description': 'De metro rijdt niet, de scholen en crèches zijn dicht, vele winkels zijn gesloten. ' 'Fotograaf Jimmy Kets brengt Brussel vandaag in beeld. Maar hij toont ook...', - 'thumbnail': 're:http.*jpg$', + 'thumbnail': r're:^https?://.*\.jpg$', } }, # Source: Kaltura @@ -54,7 +54,7 @@ class MediahuisIE(InfoExtractor): 'title': 'Exclusieve sportwagen brandt uit op weg naar winterberging', 'description': 'Een exclusieve TVR Tuscon S is kerstdag op de Burkel helemaal uitgebrand. ' 'De eigenaar van deze Britse sportauto was rond 11 uur onderweg om het voertuig na...', - 'thumbnail': 're:http.*jpg$', + 'thumbnail': r're:^https?://.*\.jpg$', 'timestamp': int, 'upload_date': '20151225', 'uploader_id': 'dcc-video-manager-hbvl@mediahuis.be' @@ -70,7 +70,7 @@ class MediahuisIE(InfoExtractor): 'title': 'Dit is het nieuwste speeltje van Michel Van den Brande', 'description': 'In de jongste aflevering van \'The Sky is the Limit\' pronkt Michel Van den Brande' ' met zijn nieuwste speeltje: een glanzende BMW. Een van zijn medewerkers ma...', - 'thumbnail': 're:^https?://.*\.png$', + 'thumbnail': r're:^https?://.*\.png$', } }, # Gazet van Antwerpen @@ -83,7 +83,7 @@ class MediahuisIE(InfoExtractor): 'title': 'Blind meisje met autisme reageert op hartverwarmende wijze wanneer ze straatmuzikant hoort spelen', 'description': 'De zevenjarige Lacie is blind en lijdt aan autisme, maar haar liefde voor muziek is ze ' 'duidelijk niet verloren. Toen het meisje afgelopen vrijdag samen met...', - 'thumbnail': 're:http.*jpg$', + 'thumbnail': r're:^https?://.*\.jpg$', 'upload_date': '20170412', 'uploader_id': 'videoredactie@mediahuis.be', 'timestamp': 1492014190, @@ -100,7 +100,7 @@ class MediahuisIE(InfoExtractor): 'title': 'VIDEO. Limburger treft ravage aan na oplichting met vastgoed', 'description': '“Eén huis is een ware ravage”, zegt Bilzenaar Danny Kwanten, die pas naar Detroit is ' 'gevlogen waar hij zijn spaarcenten heeft geïnvesteerd in de aankoop va...', - 'thumbnail': 're:http.*jpg$', + 'thumbnail': r're:^https?://.*\.jpg$', 'upload_date': '20170331', 'uploader_id': 'dcc-video-manager-hbvl@mediahuis.be', 'timestamp': 1490959817, @@ -116,7 +116,7 @@ class MediahuisIE(InfoExtractor): 'title': 'Zo klinkt een gitaar gemaakt van papier', 'description': 'Gitaarbouwer Walter Verreydt bouwde een gitaar uit krantenpapier. Kan een papieren ' 'gitaar zo goed klinken als een gitaar van tropisch hout? Blijkbaar wel. ...', - 'thumbnail': 're:http.*jpg$', + 'thumbnail': r're:^https?://.*\.jpg$', 'upload_date': '20170412', 'uploader_id': 'videoredactie@mediahuis.be', 'timestamp': 1492009206, @@ -132,7 +132,7 @@ class MediahuisIE(InfoExtractor): 'title': 'VIDEO. Is bio ons geld waard?', 'description': 'Is biologisch eten beter voor de wereld, of een sprookje voor naïeve consumenten? ' 'Correspondente en voedingsjournaliste Dorien Knockaert neemt de kritiek v...', - 'thumbnail': 're:http.*jpg$', + 'thumbnail': r're:^https?://.*\.jpg$', 'upload_date': '20170412', 'uploader_id': 'batchUser', 'timestamp': 1491990547, From 9b91681a1a6406c38be1f926a4013856fab4ca54 Mon Sep 17 00:00:00 2001 From: Jeroen Meulemeester Date: Mon, 1 May 2017 15:31:54 +0200 Subject: [PATCH 14/15] Add missing test for flvpd.vtm.be/video.medialaancdn.be --- youtube_dl/extractor/mediahuis.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/youtube_dl/extractor/mediahuis.py b/youtube_dl/extractor/mediahuis.py index 34a9735d4..d0046bb5b 100644 --- a/youtube_dl/extractor/mediahuis.py +++ b/youtube_dl/extractor/mediahuis.py @@ -137,6 +137,20 @@ class MediahuisIE(InfoExtractor): 'uploader_id': 'batchUser', 'timestamp': 1491990547, } + }, + + # Gazet van Antwerpen (flvpd.vtm.be/video.medialaancdn.be) + { + 'url': 'http://www.gva.be/cnt/dmf20170105_02660060/nieuwe-vtm-programma-groeten-uit-groeit-uit-tot-nostalgische-hit', + 'md5': '1ec96a60672a7aab8ae8590c2c03eb27', + 'info_dict': { + 'id': '02660060', + 'ext': 'mp4', + 'title': 'Nieuw VTM-programma "Groeten uit" groeit uit tot nostalgische hit', + 'description': 'Bekende Vlamingen worden met hun gezin teruggestuurd naar het jaar waarin ze twaalf waren. ' + 'Dat is het opzet van de nieuwe VTM-reeks "Groeten uit". Staf Cop...', + 'thumbnail': r're:^https?://.*\.jpg$', + } } ] From 762cc052d4934aef8edb07ea4ab746d6d325b601 Mon Sep 17 00:00:00 2001 From: Jeroen Meulemeester Date: Mon, 1 May 2017 15:44:45 +0200 Subject: [PATCH 15/15] Use exact match for 'dot' char in regex used to extract vrt.be video_url --- youtube_dl/extractor/mediahuis.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/extractor/mediahuis.py b/youtube_dl/extractor/mediahuis.py index d0046bb5b..e3e280402 100644 --- a/youtube_dl/extractor/mediahuis.py +++ b/youtube_dl/extractor/mediahuis.py @@ -176,7 +176,7 @@ class MediahuisIE(InfoExtractor): iframe_m = re.search(r']+src="(.+?vrt\.be.*?)"', webpage) if iframe_m: webpage = self._download_webpage(iframe_m.group(1), "vrt-iframe") - video_url = self._search_regex(r'sources.pdl\s*=\s*"(.*?)";', webpage, 'vrt-video') + video_url = self._search_regex(r'sources\.pdl\s*=\s*"(.*?)";', webpage, 'vrt-video') iframe_m = re.search(r']+src="(.+?vmma\.be.*?)"', webpage) if iframe_m: