[shahid] generic errors handling and check with flake8
authorremitamine <remitamine@gmail.com>
Thu, 6 Aug 2015 18:37:45 +0000 (19:37 +0100)
committerremitamine <remitamine@gmail.com>
Thu, 6 Aug 2015 18:37:45 +0000 (19:37 +0100)
youtube_dl/extractor/shahid.py

index b3b45da2412cc15218d1db53373dbf89cf12d440..57c1598333c6e95fb18e001bea88ebd0dd6793f7 100644 (file)
@@ -1,3 +1,6 @@
+# coding: utf-8
+from __future__ import unicode_literals
+
 from .common import InfoExtractor
 from ..utils import (
     js_to_json,
@@ -5,6 +8,7 @@ from ..utils import (
     int_or_none
 )
 
+
 class ShahidIE(InfoExtractor):
     _VALID_URL = r'https?://shahid\.mbc\.net/ar/episode/(?P<id>\d+)/?'
     _TESTS = [
@@ -23,7 +27,7 @@ class ShahidIE(InfoExtractor):
             }
         },
         {
-            #shahid plus subscriber only
+            # shahid plus subscriber only
             'url': 'https://shahid.mbc.net/ar/series/90497/%D9%85%D8%B1%D8%A7%D9%8A%D8%A7-2011.html',
             'only_matching': True
         }
@@ -32,42 +36,40 @@ class ShahidIE(InfoExtractor):
     def _real_extract(self, url):
         video_id = self._match_id(url)
         webpage = self._download_webpage(url, video_id)
+
         player_info = ''
-        for line in self._search_regex( 'var flashvars = ({[^}]+})', webpage, 'flashvars').splitlines():
+        for line in self._search_regex('var flashvars = ({[^}]+})', webpage, 'flashvars').splitlines():
             if '+' not in line and '(' not in line and ')' not in line:
                 player_info += line
         player_info = self._parse_json(js_to_json(player_info), video_id)
         video_id = player_info['id']
         player_type = player_info['playerType']
 
+        player_json_data = self._download_json(
+            'https://shahid.mbc.net/arContent/getPlayerContent-param-.id-' + video_id + '.type-' + player_info['type'] + '.html',
+            video_id
+        )['data']
+        if 'url' in player_json_data:
+            m3u8_url = player_json_data['url']
+        else:
+            for error in player_json_data['error'].values():
+                raise ExtractorError(error)
+        formats = self._extract_m3u8_formats(m3u8_url, video_id)
+
         video_info = self._download_json(
-            player_info['url'] + '/' + player_type + '/' + video_id + 
-                '?apiKey=sh%40hid0nlin3&hash=b2wMCTHpSmyxGqQjJFOycRmLSex%2BBpTK%2Fooxy6vHaqs%3D',
+            player_info['url'] + '/' + player_type + '/' + video_id + '?apiKey=sh%40hid0nlin3&hash=b2wMCTHpSmyxGqQjJFOycRmLSex%2BBpTK%2Fooxy6vHaqs%3D',
             video_id
         )['data']
-        if video_info['error']:
+        if video_info.get('error'):
             for error in video_info['error']:
                 raise ExtractorError(error)
         video_info = video_info[player_type]
-        if video_info.get('availabilities').get('plus'):
-            raise ExtractorError('plus members only')
         title = video_info['title']
         thumbnail = video_info.get('thumbnailUrl')
         categories = [category['name'] for category in video_info.get('genres')]
         description = video_info.get('description')
         duration = int_or_none(video_info.get('duration'))
 
-        player_json_data = self._download_json(
-            'https://shahid.mbc.net/arContent/getPlayerContent-param-.id-' + video_id + '.type-' + player_info['type'] + '.html',
-            video_id
-        )['data']
-        if 'url' in player_json_data:
-            m3u8_url = player_json_data['url']
-        else:
-            for error in player_json_data['error'].values():
-                raise ExtractorError(error)
-            return
-        formats = self._extract_m3u8_formats(m3u8_url, video_id)
         return {
             'id': video_id,
             'title': title,