X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=youtube_dl%2Fextractor%2Ftwitch.py;h=d4169ec6dce32613243baa9ef553a2683178b7ef;hb=0d769bcb781b46a00ddf958d6ea945560f2d6cd5;hp=d92d2fd4071ce7158ff4d27f58840342e6063ef1;hpb=539a1641c6effa3a5b2be2fecd2fd4a6f35cef62;p=youtube-dl.git diff --git a/youtube_dl/extractor/twitch.py b/youtube_dl/extractor/twitch.py index d92d2fd40..d4169ec6d 100644 --- a/youtube_dl/extractor/twitch.py +++ b/youtube_dl/extractor/twitch.py @@ -17,6 +17,7 @@ from ..utils import ( encode_dict, ExtractorError, int_or_none, + orderedSet, parse_duration, parse_iso8601, sanitized_Request, @@ -251,6 +252,7 @@ class TwitchVodIE(TwitchItemBaseIE): self._USHER_BASE, item_id, compat_urllib_parse.urlencode({ 'allow_source': 'true', + 'allow_audio_only': 'true', 'allow_spectre': 'true', 'player': 'twitchweb', 'nauth': access_token['token'], @@ -271,7 +273,7 @@ class TwitchVodIE(TwitchItemBaseIE): class TwitchPlaylistBaseIE(TwitchBaseIE): _PLAYLIST_URL = '%s/kraken/channels/%%s/videos/?offset=%%d&limit=%%d' % TwitchBaseIE._API_BASE - _PAGE_LIMIT = 10 + _PAGE_LIMIT = 100 def _extract_playlist(self, channel_id): info = self._download_json( @@ -297,13 +299,13 @@ class TwitchPlaylistBaseIE(TwitchBaseIE): # is completely broken on the twitch side. It simply ignores # a limit and returns the whole offset number of videos. # Working around by just requesting all videos at once. + # Upd: pagination bug was fixed by twitch on 15.03.2016. if not broken_paging_detected and total and len(page_entries) > limit: self.report_warning( - 'Twitch paging is broken on twitch side, requesting all videos at once', + 'Twitch pagination is broken on twitch side, requesting all videos at once', channel_id) broken_paging_detected = True - limit = total - offset = 0 + offset = total counter_override = '(all at once)' continue entries.extend(page_entries) @@ -311,7 +313,7 @@ class TwitchPlaylistBaseIE(TwitchBaseIE): break offset += limit return self.playlist_result( - [self.url_result(entry) for entry in set(entries)], + [self.url_result(entry) for entry in orderedSet(entries)], channel_id, channel_name) def _extract_playlist_page(self, response): @@ -431,6 +433,7 @@ class TwitchStreamIE(TwitchBaseIE): query = { 'allow_source': 'true', + 'allow_audio_only': 'true', 'p': random.randint(1000000, 10000000), 'player': 'twitchweb', 'segment_preference': '4',