projects
/
youtube-dl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[get_exe_version] Do version probes with <&-
[youtube-dl]
/
youtube_dl
/
extractor
/
twitch.py
diff --git
a/youtube_dl/extractor/twitch.py
b/youtube_dl/extractor/twitch.py
index 359a8859c8099d5eb9e2e8b1071737e900b8fb45..46c2cfe7b251beb65422238a2158b48ad0a1d795 100644
(file)
--- a/
youtube_dl/extractor/twitch.py
+++ b/
youtube_dl/extractor/twitch.py
@@
-32,6
+32,7
@@
class TwitchBaseIE(InfoExtractor):
_API_BASE = 'https://api.twitch.tv'
_USHER_BASE = 'https://usher.ttvnw.net'
_LOGIN_URL = 'http://www.twitch.tv/login'
_API_BASE = 'https://api.twitch.tv'
_USHER_BASE = 'https://usher.ttvnw.net'
_LOGIN_URL = 'http://www.twitch.tv/login'
+ _CLIENT_ID = 'jzkbprff40iqj646a697cyrvl0zt2m6'
_NETRC_MACHINE = 'twitch'
def _handle_error(self, response):
_NETRC_MACHINE = 'twitch'
def _handle_error(self, response):
@@
-44,15
+45,9
@@
class TwitchBaseIE(InfoExtractor):
expected=True)
def _call_api(self, path, item_id, note):
expected=True)
def _call_api(self, path, item_id, note):
- headers = {
- 'Referer': 'http://api.twitch.tv/crossdomain/receiver.html?v=2',
- 'X-Requested-With': 'XMLHttpRequest',
- }
- for cookie in self._downloader.cookiejar:
- if cookie.name == 'api_token':
- headers['Twitch-Api-Token'] = cookie.value
response = self._download_json(
response = self._download_json(
- '%s/%s' % (self._API_BASE, path), item_id, note)
+ '%s/%s' % (self._API_BASE, path), item_id, note,
+ headers={'Client-ID': self._CLIENT_ID})
self._handle_error(response)
return response
self._handle_error(response)
return response
@@
-252,6
+247,7
@@
class TwitchVodIE(TwitchItemBaseIE):
# m3u8 download
'skip_download': True,
},
# m3u8 download
'skip_download': True,
},
+ 'skip': 'HTTP Error 404: Not Found',
}]
def _real_extract(self, url):
}]
def _real_extract(self, url):
@@
-405,11
+401,8
@@
class TwitchStreamIE(TwitchBaseIE):
'kraken/streams/%s' % channel_id, channel_id,
'Downloading stream JSON').get('stream')
'kraken/streams/%s' % channel_id, channel_id,
'Downloading stream JSON').get('stream')
- # Fallback on profile extraction if stream is offline
if not stream:
if not stream:
- return self.url_result(
- 'http://www.twitch.tv/%s/profile' % channel_id,
- 'TwitchProfile', channel_id)
+ raise ExtractorError('%s is offline' % channel_id, expected=True)
# Channel name may be typed if different case than the original channel name
# (e.g. http://www.twitch.tv/TWITCHPLAYSPOKEMON) that will lead to constructing
# Channel name may be typed if different case than the original channel name
# (e.g. http://www.twitch.tv/TWITCHPLAYSPOKEMON) that will lead to constructing