[ivi] improve error detection
authorRemita Amine <remitamine@gmail.com>
Sat, 16 Nov 2019 00:51:31 +0000 (01:51 +0100)
committerRemita Amine <remitamine@gmail.com>
Sat, 16 Nov 2019 00:51:48 +0000 (01:51 +0100)
youtube_dl/extractor/ivi.py

index 1dcb17c9b36e5b83aaa74ad6471552433f5963ff..7f1146d957531f144bf54f8a59265bd4ef6782c2 100644 (file)
@@ -119,17 +119,20 @@ class IviIE(InfoExtractor):
 
         error = video_json.get('error')
         if error:
-            origin = error['origin']
+            origin = error.get('origin')
+            message = error.get('message') or error.get('user_message')
+            extractor_msg = 'Unable to download video %s'
             if origin == 'NotAllowedForLocation':
-                self.raise_geo_restricted(
-                    msg=error['message'], countries=self._GEO_COUNTRIES)
+                self.raise_geo_restricted(message, self._GEO_COUNTRIES)
             elif origin == 'NoRedisValidData':
-                raise ExtractorError('Video %s does not exist' % video_id, expected=True)
-            elif origin == 'NotAllowedError':
-                raise ExtractorError('pycryptodome not found. Please install it.', expected=True)
-            raise ExtractorError(
-                'Unable to download video %s: %s' % (video_id, error['message']),
-                expected=True)
+                extractor_msg = 'Video %s does not exist'
+            elif message:
+                if 'недоступен для просмотра на площадке s183' in message:
+                    raise ExtractorError(
+                        'pycryptodome not found. Please install it.',
+                        expected=True)
+                extractor_msg += ': ' + message
+            raise ExtractorError(extractor_msg % video_id, expected=True)
 
         result = video_json['result']
         title = result['title']