X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=youtube_dl%2Fextractor%2Fcanvas.py;h=8ac62c1a680ccb0ab8a8c038bf0c7270c510d3e6;hb=a42839e548d81ae20e5164ae690075d2c423477e;hp=c7e9b8ff9c4970724aa2a2496a29db892df76ed2;hpb=7913e0fca7df6840e8434449f534f9744c9394f2;p=youtube-dl diff --git a/youtube_dl/extractor/canvas.py b/youtube_dl/extractor/canvas.py index c7e9b8ff9..8ac62c1a6 100644 --- a/youtube_dl/extractor/canvas.py +++ b/youtube_dl/extractor/canvas.py @@ -5,8 +5,6 @@ import json from .common import InfoExtractor from .gigya import GigyaBaseIE - - from ..compat import compat_HTTPError from ..utils import ( ExtractorError, @@ -192,7 +190,7 @@ class VrtNUIE(GigyaBaseIE): 'season_number': 1, 'episode_number': 1, }, - # 'skip': 'This video is only available for registered users' + 'skip': 'This video is only available for registered users' }] _NETRC_MACHINE = 'vrtnu' _APIKEY = '3_0Z2HujMtiWq_pkAjgnS2Md2E11a1AwZjYiBETtwNE-EoEHDINgtnvcAOpNgmrVGy' @@ -204,7 +202,7 @@ class VrtNUIE(GigyaBaseIE): def _login(self): username, password = self._get_login_info() if username is None: - self.raise_login_required() + return auth_data = { 'APIKey': self._APIKEY, @@ -248,7 +246,7 @@ class VrtNUIE(GigyaBaseIE): def _real_extract(self, url): display_id = self._match_id(url) - webpage = self._download_webpage(url, display_id) + webpage, urlh = self._download_webpage_handle(url, display_id) title = self._html_search_regex( r'(?ms)

(.+?)

', @@ -278,18 +276,24 @@ class VrtNUIE(GigyaBaseIE): webpage, 'release_date', default=None)) # If there's a ? or a # in the URL, remove them and everything after - clean_url = url.split('?')[0].split('#')[0].strip('/') + clean_url = urlh.geturl().split('?')[0].split('#')[0].strip('/') securevideo_url = clean_url + '.mssecurevideo.json' - json = self._download_json(securevideo_url, display_id) + try: + video = self._download_json(securevideo_url, display_id) + except ExtractorError as e: + if isinstance(e.cause, compat_HTTPError) and e.cause.code == 401: + self.raise_login_required() + raise + # We are dealing with a '../.relevant' URL - redirect_url = json.get('url') + redirect_url = video.get('url') if redirect_url: - return self.url_result('https:' + redirect_url) - else: - # There is only one entry, but with an unknown key, so just get - # the first one - video_id = list(json.values())[0].get('videoid') + return self.url_result(self._proto_relative_url(redirect_url, 'https:')) + + # There is only one entry, but with an unknown key, so just get + # the first one + video_id = list(video.values())[0].get('videoid') return { '_type': 'url_transparent',