ps_vue.py 文件源码

python
阅读 20 收藏 0 点赞 0 评论 0

项目:plugin.video.psvue 作者: eracknaphobia 项目源码 文件源码
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)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号