def get_stream(url, airing_id, channel_id, program_id, series_id, tms_id, title, plot):
headers = {'Accept': '*/*',
'Content-type': 'application/x-www-form-urlencoded',
'Origin': 'https://vue.playstation.com',
'Accept-Language': 'en-US,en;q=0.8',
'Referer': 'https://vue.playstation.com/watch/live',
'Accept-Encoding': 'gzip, deflate, br',
'User-Agent': UA_ANDROID_TV,
'Connection': 'Keep-Alive',
'Host': 'media-framework.totsuko.tv',
'reqPayload': ADDON.getSetting(id='EPGreqPayload'),
'X-Requested-With': 'com.snei.vue.android'
}
r = requests.get(url, headers=headers, cookies=load_cookies(), verify=VERIFY)
json_source = r.json()
stream_url = json_source['body']['video']
headers = '|User-Agent='
headers += 'Adobe Primetime/1.4 Dalvik/2.1.0 (Linux; U; Android 6.0.1 Build/MOB31H)'
headers += '&Cookie=reqPayload=' + urllib.quote('"' + ADDON.getSetting(id='EPGreqPayload') + '"')
listitem = xbmcgui.ListItem()
# Checks to see if VideoPlayer info is already saved. If not then info is loaded from stream link
if xbmc.getCondVisibility('String.IsEmpty(ListItem.Title)'):
listitem = xbmcgui.ListItem(title, plot)
listitem.setInfo(type="Video", infoLabels={'title': title, 'plot': plot})
listitem.setMimeType("application/x-mpegURL")
else:
listitem = xbmcgui.ListItem()
listitem.setMimeType("application/x-mpegURL")
if xbmc.getCondVisibility('System.HasAddon(inputstream.adaptive)'):
stream_url = json_source['body']['video_alt'] # Uses alternate Sony stream to prevent Inputstream adaptive from crashing
listitem.setProperty('inputstreamaddon', 'inputstream.adaptive')
listitem.setProperty('inputstream.adaptive.manifest_type', 'hls')
listitem.setProperty('inputstream.adaptive.stream_headers', headers)
listitem.setProperty('inputstream.adaptive.license_key', headers)
else:
stream_url += headers
listitem.setPath(stream_url)
xbmcplugin.setResolvedUrl(addon_handle, True, listitem)
# Seek to time
#Give the stream sometime to start before checking
monitor = xbmc.Monitor()
monitor.waitForAbort(10)
xbmc.log("Is playing video? " + str(xbmc.Player().isPlayingVideo()))
while xbmc.Player().isPlayingVideo() and not monitor.abortRequested():
xbmc.log("Still playing...")
monitor.waitForAbort(3)
xbmc.log("We're done, write info back to ps servers!!!")
sony = SONY()
sony.put_resume_time(airing_id, channel_id, program_id, series_id, tms_id)
评论列表
文章目录