2222
2323from 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
2632def valid_video_id (video_id ):
2733 if video_id .startswith ('videos' ):
@@ -74,10 +80,11 @@ def _legacy_video(video_id):
7480
7581def 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
103113def _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
124134def 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
165180def _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