Merge remote-tracking branch 'dstftw/rutube-channel'
authorPhilipp Hagemeister <phihag@phihag.de>
Tue, 28 Jan 2014 02:32:22 +0000 (03:32 +0100)
committerPhilipp Hagemeister <phihag@phihag.de>
Tue, 28 Jan 2014 02:32:22 +0000 (03:32 +0100)
1  2 
youtube_dl/extractor/rutube.py

index f58c775bac29cc7f8457c893e7b086c1eb067aff,83459c52251110c9adfa3c5cb1cfcc577f3c7354..4922dd764eb119a4993bad607a3a01afccf99f51
@@@ -15,7 -15,7 +15,7 @@@ from ..utils import 
  
  class RutubeIE(InfoExtractor):
      IE_NAME = 'rutube'
 -    IE_DESC = 'Rutube videos'    
 +    IE_DESC = 'Rutube videos'
      _VALID_URL = r'https?://rutube\.ru/video/(?P<id>[\da-z]{32})'
  
      _TEST = {
          'file': '3eac3b4561676c17df9132a9a1e62e3e.mp4',
          'info_dict': {
              'title': 'Раненный кенгуру забежал в аптеку',
+             'description': 'http://www.ntdtv.ru ',
+             'duration': 80,
              'uploader': 'NTDRussian',
              'uploader_id': '29790',
+             'upload_date': '20131016',
          },
          'params': {
              # It requires ffmpeg (m3u8 download)
@@@ -68,7 -71,7 +71,7 @@@
  
  class RutubeChannelIE(InfoExtractor):
      IE_NAME = 'rutube:channel'
 -    IE_DESC = 'Rutube channels'    
 +    IE_DESC = 'Rutube channels'
      _VALID_URL = r'http://rutube\.ru/tags/video/(?P<id>\d+)'
  
      _PAGE_TEMPLATE = 'http://rutube.ru/api/tags/video/%s/?page=%s&format=json'
      def _extract_videos(self, channel_id, channel_title=None):
          entries = []
          for pagenum in itertools.count(1):
 -            api_response = self._download_webpage(self._PAGE_TEMPLATE % (channel_id, pagenum),
 -                                                   channel_id, 'Downloading page %s' % pagenum)
 +            api_response = self._download_webpage(
 +                self._PAGE_TEMPLATE % (channel_id, pagenum),
 +                channel_id, 'Downloading page %s' % pagenum)
              page = json.loads(api_response)
              results = page['results']
 -            if len(results) == 0:
 -                break;
 +            if not results:
 +                break
              entries.extend(self.url_result(result['video_url'], 'Rutube') for result in results)
 -            if page['has_next'] is False:
 -                break;
 +            if not page['has_next']:
 +                break
          return self.playlist_result(entries, channel_id, channel_title)
  
      def _real_extract(self, url):
@@@ -96,7 -98,7 +99,7 @@@
  
  class RutubeMovieIE(RutubeChannelIE):
      IE_NAME = 'rutube:movie'
 -    IE_DESC = 'Rutube movies'    
 +    IE_DESC = 'Rutube movies'
      _VALID_URL = r'http://rutube\.ru/metainfo/tv/(?P<id>\d+)'
  
      _MOVIE_TEMPLATE = 'http://rutube.ru/api/metainfo/tv/%s/?format=json'
      def _real_extract(self, url):
          mobj = re.match(self._VALID_URL, url)
          movie_id = mobj.group('id')
 -        api_response = self._download_webpage(self._MOVIE_TEMPLATE % movie_id, movie_id,
 -                                            'Downloading movie JSON')
 +        api_response = self._download_webpage(
 +            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)
@@@ -118,4 -119,4 +121,4 @@@ class RutubePersonIE(RutubeChannelIE)
      IE_DESC = 'Rutube person videos'
      _VALID_URL = r'http://rutube\.ru/video/person/(?P<id>\d+)'
  
 -    _PAGE_TEMPLATE = 'http://rutube.ru/api/video/person/%s/?page=%s&format=json'
 +    _PAGE_TEMPLATE = 'http://rutube.ru/api/video/person/%s/?page=%s&format=json'