about summary refs log tree commit diff
path: root/youtube_dl/extractor/theplatform.py
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2018-10-30 00:22:18 +0700
committerSergey M․ <dstftw@gmail.com>2018-10-30 00:22:44 +0700
commit9aac22c195cf41ff46a644bd027481629d0e6d06 (patch)
tree3e2659ad052d22b1469d80bcd51aef5e74cadac6 /youtube_dl/extractor/theplatform.py
parent94db1f7f3b7269d5843b815ef2aa5b71d0361e6f (diff)
downloadyoutube-dl-9aac22c195cf41ff46a644bd027481629d0e6d06.tar.gz
youtube-dl-9aac22c195cf41ff46a644bd027481629d0e6d06.tar.xz
youtube-dl-9aac22c195cf41ff46a644bd027481629d0e6d06.zip
[theplatform] Improve error detection (#13222)
Diffstat (limited to 'youtube_dl/extractor/theplatform.py')
-rw-r--r--youtube_dl/extractor/theplatform.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/youtube_dl/extractor/theplatform.py b/youtube_dl/extractor/theplatform.py
index ffef5bf06..181620615 100644
--- a/youtube_dl/extractor/theplatform.py
+++ b/youtube_dl/extractor/theplatform.py
@@ -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,