diff options
| author | remitamine <remitamine@gmail.com> | 2015-08-08 12:59:10 +0100 | 
|---|---|---|
| committer | remitamine <remitamine@gmail.com> | 2015-08-08 12:59:10 +0100 | 
| commit | 59e89e62d7b45554cef502dc4986f35618110679 (patch) | |
| tree | 4050c94f565b3bd98da31a4cde1d6d21c064cba3 /youtube_dl/extractor/shahid.py | |
| parent | c29458f3ec77072e9c17169b78871bf4473134d6 (diff) | |
[shahid] add default fallbacks for extracting api vars
Diffstat (limited to 'youtube_dl/extractor/shahid.py')
| -rw-r--r-- | youtube_dl/extractor/shahid.py | 28 | 
1 files changed, 19 insertions, 9 deletions
diff --git a/youtube_dl/extractor/shahid.py b/youtube_dl/extractor/shahid.py index b2050525e..399140189 100644 --- a/youtube_dl/extractor/shahid.py +++ b/youtube_dl/extractor/shahid.py @@ -33,20 +33,30 @@ class ShahidIE(InfoExtractor):          }      ] +    _api_vars = { +        'type': 'player', +        'url': 'http://api.shahid.net/api/v1_1', +        'playerType': 'episode', +    } +      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(): -            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'] +        flash_vars = self._search_regex('var flashvars = ({[^}]+})', webpage, 'flashvars', None) +        if flash_vars is not None: +            for line in flash_vars.splitlines(): +                if '+' not in line and '(' not in line and ')' not in line: +                    player_info += line +            player_info = self._parse_json(player_info, video_id, js_to_json, False) +            if player_info is not None: +                for key in self._api_vars: +                    if key in player_info: +                        self._api_vars[key] = player_info[key]          player_json_data = self._download_json( -            'https://shahid.mbc.net/arContent/getPlayerContent-param-.id-' + video_id + '.type-' + player_info['type'] + '.html', +            'https://shahid.mbc.net/arContent/getPlayerContent-param-.id-' + video_id + '.type-' + self._api_vars['type'] + '.html',              video_id          )['data']          if 'url' in player_json_data: @@ -57,13 +67,13 @@ class ShahidIE(InfoExtractor):          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', +            self._api_vars['url'] + '/' + self._api_vars['playerType'] + '/' + video_id + '?apiKey=sh%40hid0nlin3&hash=b2wMCTHpSmyxGqQjJFOycRmLSex%2BBpTK%2Fooxy6vHaqs%3D',              video_id          )['data']          if video_info.get('error'):              for error in video_info['error']:                  raise ExtractorError(error) -        video_info = video_info[player_type] +        video_info = video_info[self._api_vars['playerType']]          title = video_info['title']          thumbnail = video_info.get('thumbnailUrl')          categories = [category['name'] for category in video_info.get('genres')]  | 
