def live(): # Request dvr try: req = requests.get("http://www.rtp.pt/play/direto", headers=HEADERS).text except: raise_notification() match = re.compile( r'<a title=".+? - (.+?)" href="/play/direto/(.+?)".*?\n.*?\n.*?<img alt=".+?" src ="(.+?)".*?\n.*?\n.*?width:(.+?)%' ).findall(req) for rtp_channel in RTP_CHANNELS: dvr = "Not available" progimg = "" progpercent = 0 for prog, key, img, percent in match: if key.lower() == rtp_channel["id"]: dvr = prog if img.startswith("/"): img = "http:{}".format(img) progimg = img progpercent = percent break liz = ListItem("[B][COLOR blue]{}[/COLOR][/B] ({}) [B]{}%[/B]".format( kodiutils.compat_py23str(rtp_channel["name"]), kodiutils.strip_html_tags(kodiutils.compat_py23str(dvr)), kodiutils.compat_py23str(progpercent))) liz.setArt({ "thumb": progimg, "icon": progimg, "fanart": kodiutils.FANART }) liz.setProperty('IsPlayable', 'true') liz.setInfo("Video", infoLabels={ "plot": kodiutils.strip_html_tags( kodiutils.compat_py23str(dvr)) }) addDirectoryItem( plugin.handle, plugin.url_for(live_play, label=kodiutils.compat_py23str(rtp_channel["name"]), channel=kodiutils.compat_py23str(rtp_channel["id"]), img=kodiutils.compat_py23str(progimg), prog=kodiutils.compat_py23str(dvr)), liz, False) endOfDirectory(plugin.handle)
def programs_category(): page = plugin.args["page"][0] cat_id = plugin.args["id"][0] cat_name = plugin.args["name"][0] try: req = requests.get("https://www.rtp.pt/play/bg_l_pg/?listcategory={}&page={}".format( cat_id, page), headers=HEADERS_VOD) req.encoding = "latin-1" req = req.text except: raise_notification() return pagei = ListItem("[B]{}[/B] - {} {}".format(kodiutils.compat_py23str(cat_name), kodiutils.get_string(32009), page)) pagei.setProperty('IsPlayable', 'false') addDirectoryItem(handle=plugin.handle, listitem=pagei, isFolder=False, url="") soup = BeautifulSoup(req, 'html.parser') for a in soup.find_all('a'): url = a.get('href') title = a.get('title') img = a.find('img').get('src') metas = a.find_next_sibling('i').find_all('meta') description = metas[1].get('content') ep = metas[0].get('content')[-12:] liz = ListItem("{} ({})".format( kodiutils.compat_py23str(title), kodiutils.compat_py23str(ep)) ) liz.setArt({"thumb": img, "icon": img, "fanart": kodiutils.FANART}) liz.setInfo("Video", infoLabels={"plot": kodiutils.strip_html_tags(kodiutils.compat_py23str(description)), "title": kodiutils.compat_py23str(title)}) addDirectoryItem( plugin.handle, plugin.url_for( programs_episodes, title=kodiutils.compat_py23str(title), ep=kodiutils.compat_py23str(ep), img=img, description=kodiutils.compat_py23str(description), url=kodiutils.compat_py23str(url), page=1 ), liz, True) newpage = str(int(page) + 1) nextpage = ListItem("[B]{}[/B] - {} {} >>>".format(kodiutils.compat_py23str(cat_name), kodiutils.get_string(32009), newpage)) addDirectoryItem(handle=plugin.handle, listitem=nextpage, isFolder=True, url=plugin.url_for(programs_category, name=kodiutils.compat_py23str(cat_name), id=cat_id, page=newpage)) endOfDirectory(plugin.handle)
def live(): # Request dvr try: req = requests.get("http://www.rtp.pt/play/direto", headers=HEADERS).text except: raise_notification() return match = re.compile(r'<a.+?title=".+? - (.+?)" href="/play/(.+?)".*?\n.*?\n.*?<img alt="(.+?)" src="(.+?)".*?\n.*?\n.*?width:(.+?)%').findall(req) for prog, key, emissao, img, percent in match: dvr = prog if img.startswith("/"): img = "http:{}".format(img) progimg = img progpercent = percent prefix = "em direto" name = emissao[emissao.index(prefix) + len(prefix):].strip() if prefix in emissao else emissao liz = ListItem("[B][COLOR blue]{}[/COLOR][/B] ({}) [B]{}%[/B]".format( kodiutils.compat_py23str(name), kodiutils.strip_html_tags(kodiutils.compat_py23str(dvr)), kodiutils.compat_py23str(progpercent)) ) liz.setArt({"thumb": progimg, "icon": progimg, "fanart": kodiutils.FANART}) liz.setProperty('IsPlayable', 'true') liz.setInfo("Video", infoLabels={"plot": kodiutils.strip_html_tags(kodiutils.compat_py23str(dvr))}) addDirectoryItem( plugin.handle, plugin.url_for( live_play, label=kodiutils.compat_py23str(name), channel=kodiutils.compat_py23str(key.lower()), img=kodiutils.compat_py23str(progimg), prog=kodiutils.compat_py23str(dvr) ), liz, False) endOfDirectory(plugin.handle)
def search(): input_text = Dialog().input(kodiutils.get_string(32007), "", INPUT_ALPHANUM) try: req = requests.get( "https://www.rtp.pt/play/pesquisa?q={}".format(input_text), headers=HEADERS_VOD).text except: raise_notification() pagei = ListItem("{} [B]{}[/B]".format(kodiutils.get_string(32008), input_text)) addDirectoryItem(handle=plugin.handle, listitem=pagei, isFolder=False, url="") soup = BeautifulSoup(req, 'html.parser') for a in soup.find('section').find_all('a'): url = a.get('href') title = a.get('title') img = a.find('img').get('src') metas = a.find_next_sibling('i').find_all('meta') description = metas[1].get('content') liz = ListItem("{}".format(kodiutils.compat_py23str(title))) liz.setArt({"thumb": img, "icon": img, "fanart": kodiutils.FANART}) liz.setInfo("Video", infoLabels={ "plot": kodiutils.strip_html_tags( kodiutils.compat_py23str(description)), "title": kodiutils.compat_py23str(title) }) addDirectoryItem( plugin.handle, plugin.url_for(programs_episodes, title=kodiutils.compat_py23str(title), ep=kodiutils.compat_py23str(title), img=kodiutils.compat_py23str(img), description=kodiutils.compat_py23str(description), url=kodiutils.compat_py23str(url), page=1), liz, True) endOfDirectory(plugin.handle)
def programs_episodes(): title = plugin.args["title"][0] ep = plugin.args["ep"][0] img = plugin.args["img"][0] url = plugin.args["url"][0] page = plugin.args["page"][0] if url.find("estudoemcasa") >= 0: prog_id = url.split("/")[3][1:] mainurl = "https://www.rtp.pt/play/estudoemcasa" else: prog_id = url.split("/")[2][1:] mainurl = "https://www.rtp.pt/play" try: req = requests.get("{}/bg_l_ep/?listProgram={}&page={}".format( mainurl, prog_id, page), headers=HEADERS_VOD) req.encoding = "latin-1" req = req.text except: raise_notification() return pagei = ListItem("[B]{}[/B] - {} {}".format(kodiutils.compat_py23str(title), kodiutils.get_string(32009), page)) pagei.setProperty('IsPlayable', 'false') addDirectoryItem(handle=plugin.handle, listitem=pagei, isFolder=False, url="") soup = BeautifulSoup(req, 'html.parser') for a in soup.find_all('a'): url = a.get('href') if a.find('script') != None: match = re.search(r'\'(.+?)\'', str(a.find('script'))) if len(match.groups()) > 0: img = match.group(1) metas = a.find_next_sibling('i').find_all('meta') description = metas[1].get('content') ep = metas[0].get('content') liz = ListItem(ep) liz.setArt({"thumb": img, "icon": img, "fanart": kodiutils.FANART}) liz.setInfo("Video", infoLabels={"plot": kodiutils.strip_html_tags(kodiutils.compat_py23str(description)) + "...", "title": kodiutils.compat_py23str(ep)}) liz.setProperty('IsPlayable', 'true') addDirectoryItem( plugin.handle, plugin.url_for( programs_play, title=kodiutils.compat_py23str(title), ep=kodiutils.compat_py23str(ep), img=kodiutils.compat_py23str(img), description=kodiutils.compat_py23str(description), url=kodiutils.compat_py23str(url) ), liz, False) newpage = str(int(page) + 1) nextpage = ListItem("[B]{}[/B] - {} {} >>>".format(kodiutils.compat_py23str(title), kodiutils.get_string(32009), newpage)) addDirectoryItem(handle=plugin.handle, listitem=nextpage, isFolder=True, url=plugin.url_for(programs_episodes, title=kodiutils.compat_py23str(title), ep=kodiutils.compat_py23str(ep), img=kodiutils.compat_py23str(img), url=kodiutils.compat_py23str(url), page=newpage)) endOfDirectory(plugin.handle)