[prosiebensat1] Fix playlist support (Closes #10745)
This commit is contained in:
		| @@ -310,6 +310,10 @@ class ProSiebenSat1IE(ProSiebenSat1BaseIE): | ||||
|             'url': 'http://www.sat1gold.de/tv/edel-starck/video/11-staffel-1-episode-1-partner-wider-willen-ganze-folge', | ||||
|             'only_matching': True, | ||||
|         }, | ||||
|         { | ||||
|             'url': 'http://www.sat1gold.de/tv/edel-starck/playlist/die-gesamte-1-staffel', | ||||
|             'only_matching': True, | ||||
|         }, | ||||
|     ] | ||||
|  | ||||
|     _TOKEN = 'prosieben' | ||||
| @@ -381,19 +385,28 @@ class ProSiebenSat1IE(ProSiebenSat1BaseIE): | ||||
|     def _extract_playlist(self, url, webpage): | ||||
|         playlist_id = self._html_search_regex( | ||||
|             self._PLAYLIST_ID_REGEXES, webpage, 'playlist id') | ||||
|         for regex in self._PLAYLIST_CLIP_REGEXES: | ||||
|             playlist_clips = re.findall(regex, webpage) | ||||
|             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) | ||||
|                 entries = [ | ||||
|                     self.url_result( | ||||
|                         re.match('(.+?//.+?)/', url).group(1) + clip_path, | ||||
|                         'ProSiebenSat1') | ||||
|                     for clip_path in playlist_clips] | ||||
|                 return self.playlist_result(entries, playlist_id, title, description) | ||||
|         playlist = self._parse_json( | ||||
|             self._search_regex( | ||||
|                 'var\s+contentResources\s*=\s*(\[.+?\]);\s*</script', | ||||
|                 webpage, 'playlist'), | ||||
|             playlist_id) | ||||
|         entries = [] | ||||
|         for item in playlist: | ||||
|             clip_id = item.get('id') or item.get('upc') | ||||
|             if not clip_id: | ||||
|                 continue | ||||
|             info = self._extract_video_info(url, clip_id) | ||||
|             info.update({ | ||||
|                 'id': clip_id, | ||||
|                 'title': item.get('title') or item.get('teaser', {}).get('headline'), | ||||
|                 'description': item.get('teaser', {}).get('description'), | ||||
|                 'thumbnail': item.get('poster'), | ||||
|                 'duration': float_or_none(item.get('duration')), | ||||
|                 'series': item.get('tvShowTitle'), | ||||
|                 'uploader': item.get('broadcastPublisher'), | ||||
|             }) | ||||
|             entries.append(info) | ||||
|         return self.playlist_result(entries, playlist_id) | ||||
|  | ||||
|     def _real_extract(self, url): | ||||
|         video_id = self._match_id(url) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user