X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=youtube_dl%2Fextractor%2Ffivemin.py;h=5b24b921c13d497d09474fa405df5b164451dd80;hb=d5524947b560c1d0e1dfa2ef7f1969efe07866fa;hp=b596bf587b77045c1b16bba932df3e3823b9ebef;hpb=8f5c0218d8b1ed3975d84789b73b34cc7c67d188;p=youtube-dl diff --git a/youtube_dl/extractor/fivemin.py b/youtube_dl/extractor/fivemin.py index b596bf587..5b24b921c 100644 --- a/youtube_dl/extractor/fivemin.py +++ b/youtube_dl/extractor/fivemin.py @@ -1,18 +1,19 @@ from __future__ import unicode_literals -import re - from .common import InfoExtractor -from ..utils import ( +from ..compat import ( compat_str, compat_urllib_parse, ) +from ..utils import ( + ExtractorError, +) class FiveMinIE(InfoExtractor): IE_NAME = '5min' _VALID_URL = r'''(?x) - (?:https?://[^/]*?5min\.com/Scripts/PlayerSeed\.js\?(.*?&)?playList=| + (?:https?://[^/]*?5min\.com/Scripts/PlayerSeed\.js\?(?:.*?&)?playList=| 5min:) (?P\d+) ''' @@ -40,16 +41,11 @@ class FiveMinIE(InfoExtractor): }, ] - @classmethod - def _build_result(cls, video_id): - return cls.url_result('5min:%s' % video_id, cls.ie_key()) - def _real_extract(self, url): - mobj = re.match(self._VALID_URL, url) - video_id = mobj.group('id') + video_id = self._match_id(url) embed_url = 'https://embed.5min.com/playerseed/?playList=%s' % video_id embed_page = self._download_webpage(embed_url, video_id, - 'Downloading embed page') + 'Downloading embed page') sid = self._search_regex(r'sid=(\d+)', embed_page, 'sid') query = compat_urllib_parse.urlencode({ 'func': 'GetResults', @@ -58,9 +54,17 @@ class FiveMinIE(InfoExtractor): 'isPlayerSeed': 'true', 'url': embed_url, }) - info = self._download_json( + response = self._download_json( 'https://syn.5min.com/handlers/SenseHandler.ashx?' + query, - video_id)['binding'][0] + video_id) + if not response['success']: + err_msg = response['errorMessage'] + if err_msg == 'ErrorVideoUserNotGeo': + msg = 'Video not available from your location' + else: + msg = 'Aol said: %s' % err_msg + raise ExtractorError(msg, expected=True, video_id=video_id) + info = response['binding'][0] second_id = compat_str(int(video_id[:-2]) + 1) formats = []