29
29
}
30
30
31
31
32
+ def get_access_token (token ):
33
+ stream_access_token = None
34
+ video_access_token = None
35
+ if isinstance (token , list ):
36
+ if token :
37
+ data = token [0 ].get (keys .DATA , {})
38
+ stream_access_token = data .get (keys .STREAM_PLAYBACK_ACCESS_TOKEN )
39
+ video_access_token = data .get (keys .VIDEO_PLAYBACK_ACCESS_TOKEN )
40
+ return stream_access_token or video_access_token or token
41
+
42
+
32
43
def valid_video_id (video_id ):
33
44
if video_id .startswith ('videos' ):
34
45
video_id = 'v' + video_id [6 :]
@@ -80,10 +91,12 @@ def _legacy_video(video_id):
80
91
81
92
def live_request (channel , platform = keys .WEB , headers = {}):
82
93
token = channel_token (channel , platform = platform , headers = headers )
83
- token = token [ 0 ][ keys . DATA ][ keys . STREAM_PLAYBACK_ACCESS_TOKEN ]
94
+ token = get_access_token ( token )
84
95
85
96
if not token :
86
97
return ACCESS_TOKEN_EXCEPTION
98
+ elif isinstance (token , dict ) and 'error' in token :
99
+ return token
87
100
else :
88
101
signature = token [keys .SIGNATURE ]
89
102
access_token = token [keys .VALUE ]
@@ -133,9 +146,11 @@ def _live(channel, token, headers={}):
133
146
@m3u8
134
147
def live (channel , platform = keys .WEB , headers = {}):
135
148
token = channel_token (channel , platform = platform , headers = headers )
136
- token = token [ 0 ][ keys . DATA ][ keys . STREAM_PLAYBACK_ACCESS_TOKEN ]
149
+ token = get_access_token ( token )
137
150
if not token :
138
151
return ACCESS_TOKEN_EXCEPTION
152
+ elif isinstance (token , dict ) and 'error' in token :
153
+ return token
139
154
else :
140
155
return _live (channel , token , headers = headers )
141
156
@@ -144,10 +159,12 @@ def video_request(video_id, platform=keys.WEB, headers={}):
144
159
video_id = valid_video_id (video_id )
145
160
if video_id :
146
161
token = vod_token (video_id , platform = platform , headers = headers )
147
- token = token [ 0 ][ keys . DATA ][ keys . VIDEO_PLAYBACK_ACCESS_TOKEN ]
162
+ token = get_access_token ( token )
148
163
149
164
if not token :
150
165
return ACCESS_TOKEN_EXCEPTION
166
+ elif isinstance (token , dict ) and 'error' in token :
167
+ return token
151
168
else :
152
169
signature = token [keys .SIGNATURE ]
153
170
access_token = token [keys .VALUE ]
@@ -203,10 +220,12 @@ def video(video_id, platform=keys.WEB, headers={}):
203
220
video_id = valid_video_id (video_id )
204
221
if video_id :
205
222
token = vod_token (video_id , platform = platform , headers = headers )
206
- token = token [ 0 ][ keys . DATA ][ keys . VIDEO_PLAYBACK_ACCESS_TOKEN ]
223
+ token = get_access_token ( token )
207
224
208
225
if not token :
209
226
return ACCESS_TOKEN_EXCEPTION
227
+ elif isinstance (token , dict ) and 'error' in token :
228
+ return token
210
229
else :
211
230
return _vod (video_id , token , headers = headers )
212
231
else :
0 commit comments