aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2016-08-26 04:48:40 +0700
committerSergey M․ <dstftw@gmail.com>2016-08-26 04:48:40 +0700
commitf9b373afda2a936c4f8303671f3160c532ccae67 (patch)
tree854b71c56dab1dc6ddd72f82deaffe87c2b9587d
parent298a120ab76008c900e30de50dc738dd63e79fb4 (diff)
downloadyoutube-dl-f9b373afda2a936c4f8303671f3160c532ccae67.tar.xz
[nhk:vod] Improve extraction (Closes #10424)
-rw-r--r--youtube_dl/extractor/nhk.py43
1 files changed, 32 insertions, 11 deletions
diff --git a/youtube_dl/extractor/nhk.py b/youtube_dl/extractor/nhk.py
index 90e935351..691bdfa4e 100644
--- a/youtube_dl/extractor/nhk.py
+++ b/youtube_dl/extractor/nhk.py
@@ -4,26 +4,47 @@ from .common import InfoExtractor
class NhkVodIE(InfoExtractor):
- _VALID_URL = r'http://www3\.nhk\.or\.jp/nhkworld/en/vod/(?P<id>.+)\.html'
- _TESTS = [{
+ _VALID_URL = r'https?://www3\.nhk\.or\.jp/nhkworld/en/vod/(?P<id>.+?)\.html'
+ _TEST = {
+ # Videos available only for a limited period of time. Visit
+ # http://www3.nhk.or.jp/nhkworld/en/vod/ for working samples.
'url': 'http://www3.nhk.or.jp/nhkworld/en/vod/tokyofashion/20160815.html',
'info_dict': {
'id': 'A1bnNiNTE6nY3jLllS-BIISfcC_PpvF5',
'ext': 'flv',
- 'title': '[nhkworld]VOD;2009-251-2016;TOKYO FASHION EXPRESS;The Kimono as Global Fashion;en',
+ 'title': 'TOKYO FASHION EXPRESS - The Kimono as Global Fashion',
+ 'description': 'md5:db338ee6ce8204f415b754782f819824',
+ 'series': 'TOKYO FASHION EXPRESS',
+ 'episode': 'The Kimono as Global Fashion',
},
- 'params': {
- 'skip_download': True # Videos available only for a limited period of time.
- },
- }]
+ 'skip': 'Videos available only for a limited period of time',
+ }
def _real_extract(self, url):
video_id = self._match_id(url)
+
webpage = self._download_webpage(url, video_id)
embed_code = self._search_regex(
- r'''nw_vod_ooplayer\('movie-area', '([^']+)'\);''',
- webpage,
- 'ooyala embed code')
+ r'nw_vod_ooplayer\([^,]+,\s*(["\'])(?P<id>(?:(?!\1).)+)\1',
+ webpage, 'ooyala embed code', group='id')
+
+ title = self._search_regex(
+ r'<div[^>]+class=["\']episode-detail["\']>\s*<h\d+>([^<]+)',
+ webpage, 'title', default=None)
+ description = self._html_search_regex(
+ r'(?s)<p[^>]+class=["\']description["\'][^>]*>(.+?)</p>',
+ webpage, 'description', default=None)
+ series = self._search_regex(
+ r'<h2[^>]+class=["\']detail-top-player-title[^>]+><a[^>]+>([^<]+)',
+ webpage, 'series', default=None)
- return self.url_result('ooyala:' + embed_code, 'Ooyala')
+ return {
+ '_type': 'url_transparent',
+ 'ie_key': 'Ooyala',
+ 'url': 'ooyala:%s' % embed_code,
+ 'title': '%s - %s' % (series, title) if series and title else title,
+ 'description': description,
+ 'series': series,
+ 'episode': title,
+ }