X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;ds=inline;f=youtube_dl%2Fextractor%2Fvk.py;h=9d6ec43821405363d23e4831ddf59365ead4c7d1;hb=5f6a1245ffa9276c1af59b0835afeef67e2fb5b1;hp=d96abd16ead850cd0976b5927454fa0457316c75;hpb=cad985ab4d78ef00a77932e87cee5aba8a1e3320;p=youtube-dl diff --git a/youtube_dl/extractor/vk.py b/youtube_dl/extractor/vk.py index d96abd16e..9d6ec4382 100644 --- a/youtube_dl/extractor/vk.py +++ b/youtube_dl/extractor/vk.py @@ -11,7 +11,8 @@ from ..utils import ( compat_urllib_parse, compat_str, unescapeHTML, - unified_strdate) + unified_strdate, + orderedSet) class VKIE(InfoExtractor): @@ -73,21 +74,6 @@ class VKIE(InfoExtractor): }, 'skip': 'Requires vk account credentials', }, - { - # VIDEO NOW REMOVED - # please update if you find a video whose URL follows the same pattern - 'url': 'http://vk.com/feed?z=video-43215063_166094326%2Fbb50cacd3177146d7a', - 'md5': 'd82c22e449f036282d1d3f7f4d276869', - 'info_dict': { - 'id': '166094326', - 'ext': 'mp4', - 'uploader': 'Киномания - лучшее из мира кино', - 'title': 'Запах женщины (1992)', - 'duration': 9392, - 'upload_date': '20130914' - }, - 'skip': 'Requires vk account credentials', - }, { 'url': 'http://vk.com/hd_kino_mania?z=video-43215063_168067957%2F15c66b9b533119788d', 'md5': '4d7a5ef8cf114dfa09577e57b2993202', @@ -114,6 +100,11 @@ class VKIE(InfoExtractor): }, 'skip': 'Only works from Russia', }, + { + # removed video, just testing that we match the pattern + 'url': 'http://vk.com/feed?z=video-43215063_166094326%2Fbb50cacd3177146d7a', + 'only_matching': True, + }, ] def _login(self): @@ -209,33 +200,20 @@ class VKIE(InfoExtractor): class VKUserVideosIE(InfoExtractor): IE_NAME = 'vk.com:user-videos' IE_DESC = 'vk.com:All of a user\'s videos' - _VALID_URL = r'https?://(?:m\.)?vk\.com/videos([0-9]+)(?:m\?.*)?' + _VALID_URL = r'https?://vk\.com/videos(?P[0-9]+)(?:m\?.*)?' _TEMPLATE_URL = 'https://vk.com/videos' _TEST = { 'url': 'http://vk.com/videos205387401', 'playlist_mincount': 4, } - def extract_videos_from_page(self, page): - ids_in_page = [] - for mobj in re.finditer(r'href="/video([0-9_]+)"', page): - if mobj.group(1) not in ids_in_page: - ids_in_page.append(mobj.group(1)) - return ids_in_page - def _real_extract(self, url): - # Extract page id - mobj = re.match(self._VALID_URL, url) - if mobj is None: - raise ExtractorError('Invalid URL: %s' % url) - - # Download page and get video ids - page_id = mobj.group(1) + page_id = self._match_id(url) page = self._download_webpage(url, page_id) - video_ids = self.extract_videos_from_page(page) - - self._downloader.to_screen('[vk] User videos %s: Found %i videos' % (page_id, len(video_ids))) - - url_entries = [self.url_result('http://vk.com/video' + video_id, 'VK', video_id=video_id) - for video_id in video_ids] - return self.playlist_result(url_entries, page_id) \ No newline at end of file + video_ids = orderedSet( + m.group(1) for m in re.finditer(r'href="/video([0-9_]+)"', page)) + url_entries = [ + self.url_result( + 'http://vk.com/video' + video_id, 'VK', video_id=video_id) + for video_id in video_ids] + return self.playlist_result(url_entries, page_id)