+ item_type = self._html_search_regex(self._ITEM_TYPE_REGEXES, webpage, 'item type', default='CLIP')
+ if item_type == 'CLIP':
+ return self._clip_extract(url, webpage)
+ elif item_type == 'PLAYLIST':
+ playlist_id = self._html_search_regex(self._ITEM_ID_REGEXES, webpage, 'playlist id')
+
+ for regex in self._PLAYLIST_CLIPS_REGEXES:
+ playlist_clips = re.findall(regex, webpage, re.DOTALL)
+ if playlist_clips:
+ title = self._html_search_regex(self._TITLE_REGEXES, webpage, 'title')
+ description = self._html_search_regex(self._DESCRIPTION_REGEXES, webpage, 'description', fatal=False)
+ root_url = re.match('(.+?//.+?)/', url).group(1)
+
+ return {
+ '_type': 'playlist',
+ 'id': playlist_id,
+ 'title': title,
+ 'description': description,
+ 'entries': [self._clip_extract(root_url + clip_path) for clip_path in playlist_clips]
+ }
+ else:
+ raise ExtractorError('Unknown item type "%s"' % item_type)
+
+ def _clip_extract(self, url, webpage=None):
+ if webpage is None:
+ video_id = self._match_id(url)
+ webpage = self._download_webpage(url, video_id)
+