diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index b3a5884b7..d7ddcf09c 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -1166,7 +1166,7 @@ from .youtube import ( YoutubeUserIE, YoutubeWatchLaterIE, ) -from .yuvutu import YuvutuIE +from .yuvutu import YuvutuIE, YuvutuUserIE from .zapiks import ZapiksIE from .zdf import ZDFIE, ZDFChannelIE from .zingmp3 import ZingMp3IE diff --git a/youtube_dl/extractor/yuvutu.py b/youtube_dl/extractor/yuvutu.py index d54175e9e..71a505066 100644 --- a/youtube_dl/extractor/yuvutu.py +++ b/youtube_dl/extractor/yuvutu.py @@ -1,8 +1,14 @@ # coding: utf-8 from __future__ import unicode_literals +import itertools +import re + from .common import InfoExtractor -from ..utils import determine_ext +from ..utils import ( + determine_ext, + sanitized_Request, +) class YuvutuIE(InfoExtractor): @@ -44,3 +50,36 @@ class YuvutuIE(InfoExtractor): 'title': title, 'age_limit': 18, } + + +class YuvutuUserIE(InfoExtractor): + IE_DESC = 'Yuvutu user profile' + _VALID_URL = r'http://(?:www\.)?yuvutu\.com/modules\.php\?name=YuPeople&action=view_videos&user_id=(?P[0-9]+)' + _TEST = { + 'url': 'http://www.yuvutu.com/modules.php?name=YuPeople&action=view_videos&user_id=1072966', + 'info_dict': { + 'id': '1072966', + 'age_limit': 18, + }, + 'playlist_mincount': 90, + } + + def _real_extract(self, url): + user_id = self._match_id(url) + + entries = [] + for pagenum in itertools.count(1): + request = sanitized_Request( + 'http://www.yuvutu.com/modules.php?name=YuPeople&action=view_videos&user_id=%s&page=%d' % (user_id, pagenum)) + page = self._download_webpage(request, user_id, 'Downloading user page %d' % pagenum) + + video_ids = re.findall( + r'class=[\'"]thumb-image[\'"]>\s+