diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index 802e498f9..b3a9fdfba 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -847,7 +847,7 @@ from .nowness import ( NownessSeriesIE, ) from .noz import NozIE -from .npo import BNNVaraIE, NPOIE, ONIE +from .npo import BNNVaraIE, NPOIE, ONIE, VPROIE from .npr import NprIE from .nrk import ( NRKIE, diff --git a/youtube_dl/extractor/npo.py b/youtube_dl/extractor/npo.py index d48a4cda0..84b41443b 100644 --- a/youtube_dl/extractor/npo.py +++ b/youtube_dl/extractor/npo.py @@ -204,6 +204,7 @@ class VPROIE(NPOIE): formats = [] for result in results: formats.extend(self._download_by_product_id(result, video_id)) + break # TODO find a better solution, VPRO pages can have multiple videos embedded if not formats: raise ExtractorError('Could not find a POMS product id in the provided URL.') @@ -213,3 +214,24 @@ class VPROIE(NPOIE): 'title': video_id, 'formats': formats, } + + +class ZAPPIE(NPOIE): + IE_NAME = 'zapp' + IE_DESC = 'zapp.nl' + _VALID_URL = r'https?://(?:www\.)?zapp.nl/.*' + + _TESTS = [{ + 'url': 'https://www.zapp.nl/programmas/zappsport/gemist/AT_300003973', + }] + + def _real_extract(self, url): + video_id = url.rstrip('/').split('/')[-1] + + formats = self._download_by_product_id(url, video_id) + + return { + 'id': video_id, + 'title': video_id, + 'formats': formats, + }