[vpro] Fix extraction and add support for vpro playlists

This commit is contained in:
Sergey M․ 2015-07-17 00:34:24 +06:00
parent 03f32a7ead
commit 611ac379bb
2 changed files with 26 additions and 11 deletions

View File

@ -389,7 +389,7 @@ from .npo import (
NPOLiveIE, NPOLiveIE,
NPORadioIE, NPORadioIE,
NPORadioFragmentIE, NPORadioFragmentIE,
TegenlichtVproIE, VPROIE,
WNLIE WNLIE
) )
from .nrk import ( from .nrk import (

View File

@ -404,9 +404,8 @@ class NPORadioFragmentIE(InfoExtractor):
} }
class TegenlichtVproIE(NPOIE): class VPROIE(NPOIE):
IE_NAME = 'tegenlicht.vpro.nl' _VALID_URL = r'https?://(?:www\.)?(?:tegenlicht\.)?vpro\.nl/(?:[^/]+/){2,}(?P<id>[^/]+)\.html'
_VALID_URL = r'https?://tegenlicht\.vpro\.nl/afleveringen/.*?'
_TESTS = [ _TESTS = [
{ {
@ -416,19 +415,35 @@ class TegenlichtVproIE(NPOIE):
'id': 'VPWON_1169289', 'id': 'VPWON_1169289',
'ext': 'm4v', 'ext': 'm4v',
'title': 'Tegenlicht', 'title': 'Tegenlicht',
'description': 'md5:d6476bceb17a8c103c76c3b708f05dd1', 'description': 'md5:52cf4eefbc96fffcbdc06d024147abea',
'upload_date': '20130225', 'upload_date': '20130225',
}, },
}, },
{
'url': 'http://www.vpro.nl/programmas/2doc/2015/sergio-herman.html',
'info_dict': {
'id': 'sergio-herman',
'title': 'Sergio Herman: Fucking perfect',
},
'playlist_count': 2,
}
] ]
def _real_extract(self, url): def _real_extract(self, url):
name = url_basename(url) playlist_id = self._match_id(url)
webpage = self._download_webpage(url, name)
urn = self._html_search_meta('mediaurn', webpage) webpage = self._download_webpage(url, playlist_id)
info_page = self._download_json(
'http://rs.vpro.nl/v2/api/media/%s.json' % urn, name) entries = [
return self._get_info(info_page['mid']) self.url_result('npo:%s' % video_id, 'NPO')
for video_id in re.findall(r'data-media-id="([^"]+)"', webpage)
]
playlist_title = self._search_regex(
r'<title>\s*([^>]+?)\s*-\s*Teledoc\s*-\s*VPRO\s*</title>',
webpage, 'playlist title', default=None) or self._og_search_title(webpage)
return self.playlist_result(entries, playlist_id, playlist_title)
class WNLIE(InfoExtractor): class WNLIE(InfoExtractor):