diff options
| author | Philipp Hagemeister <phihag@phihag.de> | 2015-01-23 17:22:45 +0100 | 
|---|---|---|
| committer | Philipp Hagemeister <phihag@phihag.de> | 2015-01-23 17:22:45 +0100 | 
| commit | d229ee70da4fbfa25a02c75f02a8c39abadbe970 (patch) | |
| tree | 54ffa4cd99473bb4eb15473643998b99e8d605b9 /youtube_dl/extractor/twitch.py | |
| parent | 26e274666d285026dfb6033cdad74cc2a108e2bc (diff) | |
| parent | ebd46aed5119899826629cf751ba5abe7a65d50b (diff) | |
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'youtube_dl/extractor/twitch.py')
| -rw-r--r-- | youtube_dl/extractor/twitch.py | 41 | 
1 files changed, 36 insertions, 5 deletions
| diff --git a/youtube_dl/extractor/twitch.py b/youtube_dl/extractor/twitch.py index 340cadcf5..741df7cbc 100644 --- a/youtube_dl/extractor/twitch.py +++ b/youtube_dl/extractor/twitch.py @@ -220,12 +220,18 @@ class TwitchPlaylistBaseIE(TwitchBaseIE):              response = self._download_json(                  self._PLAYLIST_URL % (channel_id, offset, limit),                  channel_id, 'Downloading %s videos JSON page %d' % (self._PLAYLIST_TYPE, counter)) -            videos = response['videos'] -            if not videos: +            page_entries = self._extract_playlist_page(response) +            if not page_entries:                  break -            entries.extend([self.url_result(video['url']) for video in videos]) +            entries.extend(page_entries)              offset += limit -        return self.playlist_result(entries, channel_id, channel_name) +        return self.playlist_result( +            [self.url_result(entry) for entry in set(entries)], +            channel_id, channel_name) + +    def _extract_playlist_page(self, response): +        videos = response.get('videos') +        return [video['url'] for video in videos] if videos else []      def _real_extract(self, url):          return self._extract_playlist(self._match_id(url)) @@ -262,6 +268,31 @@ class TwitchPastBroadcastsIE(TwitchPlaylistBaseIE):      } +class TwitchBookmarksIE(TwitchPlaylistBaseIE): +    IE_NAME = 'twitch:bookmarks' +    _VALID_URL = r'%s/(?P<id>[^/]+)/profile/bookmarks/?(?:\#.*)?$' % TwitchBaseIE._VALID_URL_BASE +    _PLAYLIST_URL = '%s/api/bookmark/?user=%%s&offset=%%d&limit=%%d' % TwitchBaseIE._API_BASE +    _PLAYLIST_TYPE = 'bookmarks' + +    _TEST = { +        'url': 'http://www.twitch.tv/ognos/profile/bookmarks', +        'info_dict': { +            'id': 'ognos', +            'title': 'Ognos', +        }, +        'playlist_mincount': 3, +    } + +    def _extract_playlist_page(self, response): +        entries = [] +        for bookmark in response.get('bookmarks', []): +            video = bookmark.get('video') +            if not video: +                continue +            entries.append(video['url']) +        return entries + +  class TwitchStreamIE(TwitchBaseIE):      IE_NAME = 'twitch:stream'      _VALID_URL = r'%s/(?P<id>[^/]+)/?(?:\#.*)?$' % TwitchBaseIE._VALID_URL_BASE @@ -348,4 +379,4 @@ class TwitchStreamIE(TwitchBaseIE):              'view_count': view_count,              'formats': formats,              'is_live': True, -        } +        }
\ No newline at end of file | 
