diff options
Diffstat (limited to 'youtube_dl/extractor/rutube.py')
| -rw-r--r-- | youtube_dl/extractor/rutube.py | 28 | 
1 files changed, 13 insertions, 15 deletions
| diff --git a/youtube_dl/extractor/rutube.py b/youtube_dl/extractor/rutube.py index 4922dd764..f1ce66433 100644 --- a/youtube_dl/extractor/rutube.py +++ b/youtube_dl/extractor/rutube.py @@ -2,7 +2,6 @@  from __future__ import unicode_literals  import re -import json  import itertools  from .common import InfoExtractor @@ -20,8 +19,9 @@ class RutubeIE(InfoExtractor):      _TEST = {          'url': 'http://rutube.ru/video/3eac3b4561676c17df9132a9a1e62e3e/', -        'file': '3eac3b4561676c17df9132a9a1e62e3e.mp4',          'info_dict': { +            'id': '3eac3b4561676c17df9132a9a1e62e3e', +            'ext': 'mp4',              'title': 'Раненный кенгуру забежал в аптеку',              'description': 'http://www.ntdtv.ru ',              'duration': 80, @@ -38,15 +38,15 @@ class RutubeIE(InfoExtractor):      def _real_extract(self, url):          mobj = re.match(self._VALID_URL, url)          video_id = mobj.group('id') -         -        api_response = self._download_webpage('http://rutube.ru/api/video/%s/?format=json' % video_id, -                                              video_id, 'Downloading video JSON') -        video = json.loads(api_response) -         -        api_response = self._download_webpage('http://rutube.ru/api/play/trackinfo/%s/?format=json' % video_id, -                                              video_id, 'Downloading trackinfo JSON') -        trackinfo = json.loads(api_response) -         + +        video = self._download_json( +            'http://rutube.ru/api/video/%s/?format=json' % video_id, +            video_id, 'Downloading video JSON') + +        trackinfo = self._download_json( +            'http://rutube.ru/api/play/trackinfo/%s/?format=json' % video_id, +            video_id, 'Downloading trackinfo JSON') +          # Some videos don't have the author field          author = trackinfo.get('author') or {}          m3u8_url = trackinfo['video_balancer'].get('m3u8') @@ -79,10 +79,9 @@ class RutubeChannelIE(InfoExtractor):      def _extract_videos(self, channel_id, channel_title=None):          entries = []          for pagenum in itertools.count(1): -            api_response = self._download_webpage( +            page = self._download_json(                  self._PAGE_TEMPLATE % (channel_id, pagenum),                  channel_id, 'Downloading page %s' % pagenum) -            page = json.loads(api_response)              results = page['results']              if not results:                  break @@ -108,10 +107,9 @@ class RutubeMovieIE(RutubeChannelIE):      def _real_extract(self, url):          mobj = re.match(self._VALID_URL, url)          movie_id = mobj.group('id') -        api_response = self._download_webpage( +        movie = self._download_json(              self._MOVIE_TEMPLATE % movie_id, movie_id,              'Downloading movie JSON') -        movie = json.loads(api_response)          movie_name = movie['name']          return self._extract_videos(movie_id, movie_name) | 
