X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=youtube_dl%2Fextractor%2Fniconico.py;h=7fb4e57dfb81029c0fc46dbab83ced5b2fbc766b;hb=d1dc7e39918ddfc3402a8ffd669e6c84ac971803;hp=45cbd4ee97b8cb66e3227d72e0ec7c3f238fa5f6;hpb=6110bbbfdd6418950beaf487e5a384cc7c483498;p=youtube-dl diff --git a/youtube_dl/extractor/niconico.py b/youtube_dl/extractor/niconico.py index 45cbd4ee9..7fb4e57df 100644 --- a/youtube_dl/extractor/niconico.py +++ b/youtube_dl/extractor/niconico.py @@ -5,14 +5,16 @@ import re import json from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_urllib_parse, compat_urllib_request, compat_urlparse, - unified_strdate, - parse_duration, - int_or_none, +) +from ..utils import ( ExtractorError, + int_or_none, + parse_duration, + unified_strdate, ) @@ -39,7 +41,7 @@ class NiconicoIE(InfoExtractor): }, } - _VALID_URL = r'https?://(?:www\.|secure\.)?nicovideo\.jp/watch/((?:[a-z]{2})?[0-9]+)' + _VALID_URL = r'https?://(?:www\.|secure\.)?nicovideo\.jp/watch/(?P(?:[a-z]{2})?[0-9]+)' _NETRC_MACHINE = 'niconico' # Determine whether the downloader used authentication to download video _AUTHENTICATED = False @@ -74,8 +76,7 @@ class NiconicoIE(InfoExtractor): return True def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group(1) + video_id = self._match_id(url) # Get video webpage. We are not actually interested in it, but need # the cookies in order to be able to download the info webpage @@ -111,7 +112,7 @@ class NiconicoIE(InfoExtractor): if 'deleted=' in flv_info_webpage: raise ExtractorError('The video has been deleted.', - expected=True) + expected=True) video_real_url = compat_urlparse.parse_qs(flv_info_webpage)['url'][0] # Start extracting information @@ -170,12 +171,13 @@ class NiconicoPlaylistIE(InfoExtractor): webpage = self._download_webpage(url, list_id) entries_json = self._search_regex(r'Mylist\.preload\(\d+, (\[.*\])\);', - webpage, 'entries') + webpage, 'entries') entries = json.loads(entries_json) entries = [{ '_type': 'url', 'ie_key': NiconicoIE.ie_key(), - 'url': 'http://www.nicovideo.jp/watch/%s' % entry['item_id'], + 'url': ('http://www.nicovideo.jp/watch/%s' % + entry['item_data']['video_id']), } for entry in entries] return {