Skip to content

Commit 0506cac

Browse files
authored
Merge pull request #80 from anxdpanic/pr_isengard
2.0.16
2 parents d3badb5 + d747f34 commit 0506cac

File tree

2 files changed

+32
-15
lines changed

2 files changed

+32
-15
lines changed

Diff for: addon.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2-
<addon id="script.module.python.twitch" name="python-twitch for Kodi" version="2.0.16~beta2" provider-name="anxdpanic, A Talented Community">
2+
<addon id="script.module.python.twitch" name="python-twitch for Kodi" version="2.0.16" provider-name="anxdpanic, A Talented Community">
33
<requires>
44
<import addon="xbmc.python" version="2.20.0"/>
55
<import addon="script.module.six" version="1.11.0"/>

Diff for: resources/lib/twitch/api/usher.py

+31-14
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,12 @@
2222

2323
from six.moves.urllib.parse import urlencode
2424

25+
ACCESS_TOKEN_EXCEPTION = {
26+
'error': 'Error',
27+
'message': 'Failed to retrieve access token',
28+
'status': 404
29+
}
30+
2531

2632
def valid_video_id(video_id):
2733
if video_id.startswith('videos'):
@@ -74,10 +80,11 @@ def _legacy_video(video_id):
7480

7581
def live_request(channel, platform=keys.WEB, headers={}):
7682
token = channel_token(channel, platform=platform, headers=headers)
77-
if keys.ERROR in token:
78-
return token
83+
token = token[0][keys.DATA][keys.STREAM_PLAYBACK_ACCESS_TOKEN]
84+
85+
if not token:
86+
return ACCESS_TOKEN_EXCEPTION
7987
else:
80-
token = token[0][keys.DATA][keys.STREAM_PLAYBACK_ACCESS_TOKEN]
8188
signature = token[keys.SIGNATURE]
8289
access_token = token[keys.VALUE]
8390
q = UsherQuery('api/channel/hls/{channel}.m3u8', headers=headers)
@@ -94,16 +101,19 @@ def live_request(channel, platform=keys.WEB, headers={}):
94101
q.add_param(keys.RTQOS, keys.CONTROL)
95102
q.add_param(keys.PLAYER_BACKEND, keys.MEDIAPLAYER)
96103
url = '?'.join([q.url, urlencode(q.params)])
97-
request_dict = {'url': url, 'headers': q.headers}
104+
request_dict = {
105+
'url': url,
106+
'headers': q.headers
107+
}
98108
log.debug('live_request: |{0}|'.format(str(request_dict)))
99109
return request_dict
100110

101111

102112
@query
103113
def _live(channel, token, headers={}):
104-
token = token[0][keys.DATA][keys.STREAM_PLAYBACK_ACCESS_TOKEN]
105114
signature = token[keys.SIGNATURE]
106115
access_token = token[keys.VALUE]
116+
107117
q = UsherQuery('api/channel/hls/{channel}.m3u8', headers=headers)
108118
q.add_urlkw(keys.CHANNEL, channel)
109119
q.add_param(keys.SIG, signature.encode('utf-8'))
@@ -123,8 +133,9 @@ def _live(channel, token, headers={}):
123133
@m3u8
124134
def live(channel, platform=keys.WEB, headers={}):
125135
token = channel_token(channel, platform=platform, headers=headers)
126-
if keys.ERROR in token:
127-
return token
136+
token = token[0][keys.DATA][keys.STREAM_PLAYBACK_ACCESS_TOKEN]
137+
if not token:
138+
return ACCESS_TOKEN_EXCEPTION
128139
else:
129140
return _live(channel, token, headers=headers)
130141

@@ -133,10 +144,11 @@ def video_request(video_id, platform=keys.WEB, headers={}):
133144
video_id = valid_video_id(video_id)
134145
if video_id:
135146
token = vod_token(video_id, platform=platform, headers=headers)
136-
if keys.ERROR in token:
137-
return token
147+
token = token[0][keys.DATA][keys.VIDEO_PLAYBACK_ACCESS_TOKEN]
148+
149+
if not token:
150+
return ACCESS_TOKEN_EXCEPTION
138151
else:
139-
token = token[0][keys.DATA][keys.VIDEO_PLAYBACK_ACCESS_TOKEN]
140152
signature = token[keys.SIGNATURE]
141153
access_token = token[keys.VALUE]
142154
q = UsherQuery('vod/{id}', headers=headers)
@@ -154,7 +166,10 @@ def video_request(video_id, platform=keys.WEB, headers={}):
154166
q.add_param(keys.BAKING_BROWNIES, Boolean.TRUE)
155167
q.add_param(keys.BAKING_BROWNIES_TIMEOUT, 1050)
156168
url = '?'.join([q.url, urlencode(q.params)])
157-
request_dict = {'url': url, 'headers': q.headers}
169+
request_dict = {
170+
'url': url,
171+
'headers': q.headers
172+
}
158173
log.debug('video_request: |{0}|'.format(str(request_dict)))
159174
return request_dict
160175
else:
@@ -163,9 +178,9 @@ def video_request(video_id, platform=keys.WEB, headers={}):
163178

164179
@query
165180
def _vod(video_id, token, headers={}):
166-
token = token[0][keys.DATA][keys.VIDEO_PLAYBACK_ACCESS_TOKEN]
167181
signature = token[keys.SIGNATURE]
168182
access_token = token[keys.VALUE]
183+
169184
q = UsherQuery('vod/{id}', headers=headers)
170185
q.add_urlkw(keys.ID, video_id)
171186
q.add_param(keys.NAUTHSIG, signature.encode('utf-8'))
@@ -188,8 +203,10 @@ def video(video_id, platform=keys.WEB, headers={}):
188203
video_id = valid_video_id(video_id)
189204
if video_id:
190205
token = vod_token(video_id, platform=platform, headers=headers)
191-
if keys.ERROR in token:
192-
return token
206+
token = token[0][keys.DATA][keys.VIDEO_PLAYBACK_ACCESS_TOKEN]
207+
208+
if not token:
209+
return ACCESS_TOKEN_EXCEPTION
193210
else:
194211
return _vod(video_id, token, headers=headers)
195212
else:

0 commit comments

Comments
 (0)