diff options
author | dst <dstftw@gmail.com> | 2014-01-28 08:47:17 +0700 |
---|---|---|
committer | dst <dstftw@gmail.com> | 2014-01-28 08:47:17 +0700 |
commit | e3a9f32f52bbd9be8b38d70a529808f123126ce7 (patch) | |
tree | 31f19a6f3d41a11e2df16f079cbfb04a0fca635d | |
parent | 87fac3238d09a4298d6cfa66f8753c734b81e5b7 (diff) |
[rutube] Add support for user videos
-rw-r--r-- | youtube_dl/extractor/__init__.py | 3 | ||||
-rw-r--r-- | youtube_dl/extractor/rutube.py | 22 |
2 files changed, 17 insertions, 8 deletions
diff --git a/youtube_dl/extractor/__init__.py b/youtube_dl/extractor/__init__.py index 19ca5d6b4..e89b5cf9d 100644 --- a/youtube_dl/extractor/__init__.py +++ b/youtube_dl/extractor/__init__.py @@ -164,7 +164,8 @@ from .rtlnow import RTLnowIE from .rutube import ( RutubeIE, RutubeChannelIE, - RutubeMovieIE + RutubeMovieIE, + RutubePersonIE, ) from .servingsys import ServingSysIE from .sina import SinaIE diff --git a/youtube_dl/extractor/rutube.py b/youtube_dl/extractor/rutube.py index 6075296ff..9a20facfd 100644 --- a/youtube_dl/extractor/rutube.py +++ b/youtube_dl/extractor/rutube.py @@ -16,7 +16,7 @@ from ..utils import ( class RutubeIE(InfoExtractor): IE_NAME = 'rutube' IE_DESC = 'Rutube videos' - _VALID_URL = r'https?://rutube\.ru/video/(?P<long_id>\w+)' + _VALID_URL = r'https?://rutube\.ru/video/(?P<id>[\da-z]{32})' _TEST = { 'url': 'http://rutube.ru/video/3eac3b4561676c17df9132a9a1e62e3e/', @@ -34,14 +34,14 @@ class RutubeIE(InfoExtractor): def _real_extract(self, url): mobj = re.match(self._VALID_URL, url) - long_id = mobj.group('long_id') + video_id = mobj.group('id') - api_response = self._download_webpage('http://rutube.ru/api/video/%s/?format=json' % long_id, - long_id, 'Downloading video JSON') + 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' % long_id, - long_id, 'Downloading trackinfo JSON') + 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) # Some videos don't have the author field @@ -108,4 +108,12 @@ class RutubeMovieIE(RutubeChannelIE): 'Downloading movie JSON') movie = json.loads(api_response) movie_name = movie['name'] - return self._extract_videos(movie_id, movie_name)
\ No newline at end of file + return self._extract_videos(movie_id, movie_name) + + +class RutubePersonIE(RutubeChannelIE): + IE_NAME = 'rutube:person' + 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'
\ No newline at end of file |