diff --git a/channels/mediasetplay.py b/channels/mediasetplay.py index cf205ddd..11e38eb1 100644 --- a/channels/mediasetplay.py +++ b/channels/mediasetplay.py @@ -87,24 +87,27 @@ def live(item): for key in it['tuningInstruction']['urn:theplatform:tv:location:any']: urls += key['publicUrls'] plot = support.typo(guide['currentListing']['mediasetlisting$epgTitle'],'bold') + '\n' + guide['currentListing']['mediasetlisting$shortDescription'] + '\n' + guide['currentListing']['description'] + '\n\n' + support.typo('A Seguire:' + guide['nextListing']['mediasetlisting$epgTitle'], 'bold') + itemlist.append(item.clone(title=support.typo(it['title'], 'bold'), - fulltitle=it['title'], - show=it['title'], - contentTitle=it['title'], - thumbnail=it['thumbnails']['channel_logo-100x100']['url'], - forcethumb = True, - urls=urls, - plot=plot, - action='play')) + fulltitle=it['title'], + show=it['title'], + contentTitle=it['title'], + thumbnail=it['thumbnails']['channel_logo-100x100']['url'], + forcethumb = True, + urls=urls, + plot=plot, + action='play')) return support.thumb(itemlist, live=True) def peliculas(item): support.info() itemlist = [] + titlelist = [] contentType = '' json = get_programs(item) for it in json: - if item.search.lower() in it['title'].lower(): + if item.search.lower() in it['title'].lower() and it['title'] not in titlelist: + titlelist.append(it['title']) if item.contentType == 'movie': action = 'findvideos' urls = [] @@ -184,8 +187,10 @@ def episodios(item): plot=it['longDescription'] if 'longDescription' in it else it['description'], urls=urls, url=it['mediasetprogram$pageUrl'])) - if episode: support.videolibrary(itemlist, item) - return sorted(itemlist, key=lambda it: it.title) + if episode: + itemlist = sorted(itemlist, key=lambda it: it.title) + support.videolibrary(itemlist, item) + return itemlist def findvideos(item): support.info() diff --git a/channels/raiplay.py b/channels/raiplay.py index cce4a064..66a0ae2a 100644 --- a/channels/raiplay.py +++ b/channels/raiplay.py @@ -3,9 +3,9 @@ # Canale per Rai Play # ------------------------------------------------------------ -import requests +import requests, sys from core import support -import sys +from platformcode import autorenumber if sys.version_info[0] >= 3: from concurrent import futures else: @@ -118,7 +118,6 @@ def replay(item): return itemlist def search(item, text): - # support.dbg() support.info() itemlist =[] try: @@ -224,13 +223,23 @@ def peliculas(item): def select(item): support.info() itemlist = [] - json = current_session.get(item.url).json()['blocks'] - for key in json: - itemlist.append(item.clone(title = support.typo(key['name'],'bold'), url = key['sets'], action = 'episodios')) - if len(itemlist) == 1: - return episodios(itemlist[0]) + if type(item.url) in [list, dict]: + json = item.url else: - return itemlist + json = current_session.get(item.url).json() + if 'blocks' in json: + json = json['blocks'] + season = '' + for key in json: + if item.fulltitle in key['name']: season = key['name'].replace(item.fulltitle, '').strip() + if not season.isdigit(): season = '' + itemlist.append(item.clone(title = support.typo(key['name'],'bold'), season = season, url = key['sets'], action = 'select')) + if len(itemlist) == 1: + return episodios(itemlist[0]) + else: + for key in item.url: + itemlist.append(item.clone(title = support.typo(key['name'], 'bold'), url = getUrl(key['path_id']), contentType = 'tvshow', action = 'episodios')) + return itemlist def episodios(item): @@ -241,6 +250,8 @@ def episodios(item): itemlist.append(item.clone(title = support.typo(key['name'], 'bold'), url = getUrl(key['path_id']), contentType = 'tvshow', action = 'episodios')) elif type(item.url) in [list, dict]: + for key in item.url: + load_episodes(key, item) with futures.ThreadPoolExecutor() as executor: itlist = [executor.submit(load_episodes, key, item) for key in item.url] for res in futures.as_completed(itlist): @@ -254,6 +265,7 @@ def episodios(item): itemlist = sorted(itemlist, key=lambda it: it.title) else: + date = '' if type(item.url) in [list, dict]: item.url = getUrl(item.url[0]['path_id']) json = current_session.get(item.url).json()['items'] for key in json: @@ -263,15 +275,30 @@ def episodios(item): episode = ep[1].zfill(2) title = support.re.sub(r'(?:St\s*\d+)?\s*Ep\s*\d+','',key['subtitle']) title = season + 'x' + episode + (' - ' + title if not title.startswith(' ') else title if title else '') + elif item.season and support.match(item.title.lower(), patron =r'(puntate)').match: + title = key['subtitle'].strip() + if not title: title = key['name'] + date = support.match(title, patron=r'(\d+/\d+/\d+)').match + if date: + date = title.split('/') + date = date[2][-2] + '/' + date[1] + '/' + date[0] + else: title = key['subtitle'].strip() - # title = key['subtitle'].strip() if not title: title = key['name'] itemlist.append(item.clone(title = support.typo(title, 'bold'), action = 'findvideos', VL=True if ep else False, plot = key['description'], - fanart = getUrl(key['images']['landscape']), url = key['video_url'], contentType = 'episode')) + fanart = getUrl(key['images']['landscape']), url = key['video_url'], contentType = 'episode', date=date)) + + if item.season and support.match(item.title.lower(), patron =r'(puntate)').match: + itemlist = sorted(itemlist, key=lambda it: it.date) + for i, it in enumerate(itemlist): + episode = str(i + 1) + it.title = support.typo(item.season + 'x' + episode, 'bold') + (' - ' + it.title) if itemlist and itemlist[0].VL: support.videolibrary(itemlist, item) + if itemlist and not support.match(itemlist[0].title, patron=r'[Ss]?(\d+)(?:x|_|\.|\s+)[Ee]?[Pp]?(\d+)').match: + autorenumber.start(itemlist, item) return itemlist