diff options
| author | Sergey M․ <dstftw@gmail.com> | 2016-09-25 05:36:18 +0700 | 
|---|---|---|
| committer | Sergey M․ <dstftw@gmail.com> | 2016-09-25 05:36:18 +0700 | 
| commit | ddde91952f4eec796b14eb258c0cb33dda3935bc (patch) | |
| tree | 2f203543f140b2f43d131d17193c42d4f4c00065 | |
| parent | 63c583eb2c9a906ba1075da289afdde29b385fff (diff) | |
[prosiebensat1] Fix playlist support (Closes #10745)
| -rw-r--r-- | youtube_dl/extractor/prosiebensat1.py | 39 | 
1 files changed, 26 insertions, 13 deletions
| diff --git a/youtube_dl/extractor/prosiebensat1.py b/youtube_dl/extractor/prosiebensat1.py index 2f5aa530a..a064de05e 100644 --- a/youtube_dl/extractor/prosiebensat1.py +++ b/youtube_dl/extractor/prosiebensat1.py @@ -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) | 
