def listLiveTV(self): tvNow = tvnow.TvNow() if tvNow.login(): url = apiBase + "/module/teaserrow/epglivetv" r = requests.get(url) data = r.json() for item in data["items"]: baseJSON = item["station"][0]["now"] stationName = baseJSON["station"] stationID = baseJSON["id"] payTV = item["pay"] xbmcplugin.setPluginCategory(addon_handle, "LiveTV") xbmcplugin.setContent(addon_handle, 'episodes') if self.showlive and (payTV == False or self.showLivePay): url = common.build_url({ 'action': 'playLive', 'vod_url': stationID }) li = xbmcgui.ListItem() li.setProperty('IsPlayable', 'true') li.setInfo('video', "") li.setLabel('%s' % (stationName)) li.setArt({'poster': baseJSON["image"][0]["src"]}) xbmcplugin.addDirectoryItem(handle=addon_handle, url=url, listitem=li, isFolder=False) xbmcplugin.endOfDirectory(addon_handle, cacheToDisc=True)
def do_GET(self): """Loads the XML manifest for the requested resource""" try: params = parse_qs(urlparse(self.path).query) TvNow = tvnow.TvNow() loggedIn = TvNow.login() playBackUrl, drmProtected = TvNow.getPlayBackUrl(int(params['id'][0]), loggedIn, int(params['live'][0]) == 1) if playBackUrl != "": headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"} r = requests.get(playBackUrl,headers=headers) data = r.text data = re.sub(r'<ContentProtection[^>]*>\s*<(cenc:)?pssh[^>]*>[^>]*</(cenc:)?pssh>\s*</ContentProtection>', '', data) basePath = "/".join(playBackUrl.split('/')[:-1]) data = re.sub(r'<BaseURL>([^>]*)</BaseURL>', '<BaseURL>'+basePath+r'/\1</BaseURL>', data) self.send_response(200) self.send_header('Content-type', 'application/xml') self.end_headers() try: data = data.encode() except: pass self.wfile.write(data) else: self.send_response(404) self.send_header('Content-type', 'text/html') self.end_headers() except Exception as exc: self.send_response(400) self.send_header('Content-type', 'text/html') self.end_headers() self.wfile.write(str(exc))
def login(self): keyboard = xbmc.Keyboard('', 'E-Mail-Adresse') keyboard.doModal() if keyboard.isConfirmed() and keyboard.getText(): username = keyboard.getText() password = self.setLoginPW() if password != '': TvNow = tvnow.TvNow() if TvNow.sendLogin(username, password): xbmcgui.Dialog().notification( 'Login erfolgreich', 'Angemeldet als "' + username + '".', icon=xbmcgui.NOTIFICATION_INFO) return True else: return False