projects
/
youtube-dl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'akamai_pv' of https://github.com/remitamine/youtube-dl into remitamine...
[youtube-dl]
/
youtube_dl
/
extractor
/
twitch.py
diff --git
a/youtube_dl/extractor/twitch.py
b/youtube_dl/extractor/twitch.py
index 0cf240e1e532b74d2a1b7d05a5c1943cde62ec9e..36ee1adff2288570fc39936640bacd3abafe9ed2 100644
(file)
--- a/
youtube_dl/extractor/twitch.py
+++ b/
youtube_dl/extractor/twitch.py
@@
-9,18
+9,18
@@
from .common import InfoExtractor
from ..compat import (
compat_parse_qs,
compat_str,
from ..compat import (
compat_parse_qs,
compat_str,
- compat_urllib_parse,
+ compat_urllib_parse
_urlencode
,
compat_urllib_parse_urlparse,
compat_urlparse,
)
from ..utils import (
compat_urllib_parse_urlparse,
compat_urlparse,
)
from ..utils import (
- encode_dict,
ExtractorError,
int_or_none,
orderedSet,
parse_duration,
parse_iso8601,
sanitized_Request,
ExtractorError,
int_or_none,
orderedSet,
parse_duration,
parse_iso8601,
sanitized_Request,
+ urlencode_postdata,
)
)
@@
-82,7
+82,7
@@
class TwitchBaseIE(InfoExtractor):
post_url = compat_urlparse.urljoin(redirect_url, post_url)
request = sanitized_Request(
post_url = compat_urlparse.urljoin(redirect_url, post_url)
request = sanitized_Request(
- post_url,
compat_urllib_parse.urlencode(encode_dict(login_form)).encode('utf-8'
))
+ post_url,
urlencode_postdata(login_form
))
request.add_header('Referer', redirect_url)
response = self._download_webpage(
request, None, 'Logging in as %s' % username)
request.add_header('Referer', redirect_url)
response = self._download_webpage(
request, None, 'Logging in as %s' % username)
@@
-250,8
+250,9
@@
class TwitchVodIE(TwitchItemBaseIE):
formats = self._extract_m3u8_formats(
'%s/vod/%s?%s' % (
self._USHER_BASE, item_id,
formats = self._extract_m3u8_formats(
'%s/vod/%s?%s' % (
self._USHER_BASE, item_id,
- compat_urllib_parse
.
urlencode({
+ compat_urllib_parse
_
urlencode({
'allow_source': 'true',
'allow_source': 'true',
+ 'allow_audio_only': 'true',
'allow_spectre': 'true',
'player': 'twitchweb',
'nauth': access_token['token'],
'allow_spectre': 'true',
'player': 'twitchweb',
'nauth': access_token['token'],
@@
-298,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.
# 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(
if not broken_paging_detected and total and len(page_entries) > limit:
self.report_warning(
- 'Twitch pagin
g
is broken on twitch side, requesting all videos at once',
+ 'Twitch pagin
ation
is broken on twitch side, requesting all videos at once',
channel_id)
broken_paging_detected = True
channel_id)
broken_paging_detected = True
- limit = total
- offset = 0
+ offset = total
counter_override = '(all at once)'
continue
entries.extend(page_entries)
counter_override = '(all at once)'
continue
entries.extend(page_entries)
@@
-432,6
+433,7
@@
class TwitchStreamIE(TwitchBaseIE):
query = {
'allow_source': 'true',
query = {
'allow_source': 'true',
+ 'allow_audio_only': 'true',
'p': random.randint(1000000, 10000000),
'player': 'twitchweb',
'segment_preference': '4',
'p': random.randint(1000000, 10000000),
'player': 'twitchweb',
'segment_preference': '4',
@@
-440,7
+442,7
@@
class TwitchStreamIE(TwitchBaseIE):
}
formats = self._extract_m3u8_formats(
'%s/api/channel/hls/%s.m3u8?%s'
}
formats = self._extract_m3u8_formats(
'%s/api/channel/hls/%s.m3u8?%s'
- % (self._USHER_BASE, channel_id, compat_urllib_parse
.
urlencode(query)),
+ % (self._USHER_BASE, channel_id, compat_urllib_parse
_
urlencode(query)),
channel_id, 'mp4')
self._prefer_source(formats)
channel_id, 'mp4')
self._prefer_source(formats)