]> git.bitcoin.ninja Git - youtube-dl/commitdiff
[theplatform] Improve error detection (#13222)
authorSergey M․ <dstftw@gmail.com>
Mon, 29 Oct 2018 17:22:18 +0000 (00:22 +0700)
committerSergey M․ <dstftw@gmail.com>
Mon, 29 Oct 2018 17:22:44 +0000 (00:22 +0700)
youtube_dl/extractor/theplatform.py

index ffef5bf06bc0de32f3249474e960e52bf603ff05..18162061578f93d10b0c66c1cc11cae5b76fac6b 100644 (file)
@@ -39,9 +39,17 @@ class ThePlatformBaseIE(OnceIE):
             smil_url, video_id, note=note, query={'format': 'SMIL'},
             headers=self.geo_verification_headers())
         error_element = find_xpath_attr(meta, _x('.//smil:ref'), 'src')
-        if error_element is not None and error_element.attrib['src'].startswith(
-                'http://link.theplatform.%s/s/errorFiles/Unavailable.' % self._TP_TLD):
-            raise ExtractorError(error_element.attrib['abstract'], expected=True)
+        if error_element is not None:
+            exception = find_xpath_attr(
+                error_element, _x('.//smil:param'), 'name', 'exception')
+            if exception is not None:
+                if exception.get('value') == 'GeoLocationBlocked':
+                    self.raise_geo_restricted(error_element.attrib['abstract'])
+                elif error_element.attrib['src'].startswith(
+                        'http://link.theplatform.%s/s/errorFiles/Unavailable.'
+                        % self._TP_TLD):
+                    raise ExtractorError(
+                        error_element.attrib['abstract'], expected=True)
 
         smil_formats = self._parse_smil_formats(
             meta, smil_url, video_id, namespace=default_ns,