diff --git a/channels/raiplay.py b/channels/raiplay.py index 1f18a110..9455f706 100644 --- a/channels/raiplay.py +++ b/channels/raiplay.py @@ -5,7 +5,8 @@ import requests, sys, inspect from core import support -from platformcode import autorenumber, logger +from platformcode import autorenumber, logger, platformtools +from collections import OrderedDict if sys.version_info[0] >= 3: from concurrent import futures else: @@ -17,19 +18,19 @@ onair = host + '/palinsesto/onAir.json' @support.menu def mainlist(item): - top = [('Dirette {bold}', ['/dl/RaiPlay/2016/PublishingBlock-9a2ff311-fcf0-4539-8f8f-c4fee2a71d58.html?json', 'live']), + top = [('Dirette {bold}', ['', 'live']), ('Replay {bold}', ['/dl/RaiPlay/2016/PublishingBlock-9a2ff311-fcf0-4539-8f8f-c4fee2a71d58.html?json', 'replay_menu'])] - menu = [('Film {bullet bold}', ['/film/index.json', 'menu']), - ('Serie TV {bullet bold}', ['/serietv/index.json', 'menu']), - ('Fiction {bullet bold}', ['/fiction/index.json', 'menu']), - ('Documentari {bullet bold}', ['/documentari/index.json', 'menu']), - ('Programmi TV{bullet bold}', ['/programmi/index.json', 'menu']), - ('Programmi per Bambini {bullet bold}', ['/bambini/index.json', 'menu']), - ('Teen {bullet bold}', ['/teen/index.json', 'learning']), - ('Learning {bullet bold}', ['/learning/index.json', 'learning']), - ('Teche Rai {bullet bold storia}', ['/techerai/index.json', 'menu']), - ('Musica e Teatro {bullet bold}', ['/performing-arts/index.json', 'menu']) + menu = [('Film {bullet bold}', ['/tipologia/film/index.json', 'menu']), + ('Serie TV {bullet bold}', ['/tipologia/serietv/index.json', 'menu']), + ('Fiction {bullet bold}', ['/tipologia/fiction/index.json', 'menu']), + ('Documentari {bullet bold}', ['/tipologia/documentari/index.json', 'menu']), + ('Programmi TV{bullet bold}', ['/tipologia/programmi/index.json', 'menu']), + ('Programmi per Bambini {bullet bold}', ['/tipologia/bambini/index.json', 'menu']), + ('Teen {bullet bold}', ['/tipologia/teen/index.json', 'learning']), + ('Learning {bullet bold}', ['/tipologia/learning/index.json', 'learning']), + ('Teche Rai {bullet bold storia}', ['/tipologia/techerai/index.json', 'menu']), + ('Musica e Teatro {bullet bold}', ['/tipologia/musica-e-teatro/index.json', 'menu']) ] search = '' @@ -157,24 +158,33 @@ def Type(item): return select(item) -def live(item): - support.info() - itemlist =[] - info={} - json = current_session.get(item.url).json()['dirette'] +def liveDict(): + livedict = OrderedDict({}) + info = {} + url = host + '/dl/RaiPlay/2016/PublishingBlock-9a2ff311-fcf0-4539-8f8f-c4fee2a71d58.html?json' + json = current_session.get(url).json()['dirette'] onAir = current_session.get(onair).json()['on_air'] - support.info(onAir) for key in onAir: channel = key['channel'] info[channel] = {} info[channel]['fanart'] = getUrl(key['currentItem']['image']) info[channel]['plot'] = support.typo(key['currentItem']['name'],'bold')+ '\n\n' + key['currentItem']['description'] - - for i, key in enumerate(json): + for key in json: channel = key['channel'] - itemlist.append(item.clone(title = support.typo(channel, 'bold'), fulltitle = channel, show = channel, url = key['video']['contentUrl'], - thumbnail = key['transparent-icon'].replace("[RESOLUTION]", "256x-"), forcethumb = True , fanart = info[channel]['fanart'], - plot = info[channel]['plot'], action = 'play', no_return=True)) + livedict[channel] = {} + livedict[channel]['url'] = key['video']['contentUrl'] + livedict[channel]['plot'] = info[channel]['plot'] + livedict[channel]['fanart'] = info[channel]['fanart'] + + return livedict + + +def live(item): + support.info() + itemlist =[] + for channel, value in liveDict().items(): + itemlist.append(item.clone(title = support.typo(channel, 'bold'), fulltitle = channel, show = channel, url = value['url'], + plot = value['plot'], action = 'play', fanart = value['fanart'], no_return=True)) return support.thumb(itemlist, live=True) @@ -350,7 +360,7 @@ def getUrl(pathId): if url.endswith(".html?json"): url = url.replace(".html?json", ".json") elif url.endswith("/?json"): - url = url.replace("/?json","/index.json") + url = url.replace("/?json",".json") elif url.endswith("?json"): url = url.replace("?json",".json") @@ -407,3 +417,11 @@ def load_episodes(key, item): return itemlist +def play(item): + item.forcethumb=True + item.no_return=True + if item.filter: + d = liveDict() + item.clone(fulltitle = item.filter, url = d[item.filter]['url'], plot = d[item.filter]['plot'], forcethumb=True, no_return=True) + support.thumb(item, live=True) + return platformtools.play_video(item) \ No newline at end of file diff --git a/core/support.py b/core/support.py index 620fdd61..b243e539 100755 --- a/core/support.py +++ b/core/support.py @@ -1367,7 +1367,7 @@ def thumb(item_itemlist_string=None, genre=False, live=False): for item in item_itemlist_string: item.thumbnail = "https://raw.githubusercontent.com/kodiondemand/media/master/live/" + item.fulltitle.lower().replace(' ','_') + '.png' else: - item_itemlist_string.thumbnail = "https://raw.githubusercontent.com/kodiondemand/media/master/live/" + item.fulltitle.lower().replace(' ','_') + '.png' + item_itemlist_string.thumbnail = "https://raw.githubusercontent.com/kodiondemand/media/master/live/" + item_itemlist_string.fulltitle.lower().replace(' ','_') + '.png' return item_itemlist_string icon_dict = {'movie':['film', 'movie'], diff --git a/core/videolibrarytools.py b/core/videolibrarytools.py index 314db32c..835d60b2 100644 --- a/core/videolibrarytools.py +++ b/core/videolibrarytools.py @@ -500,7 +500,7 @@ def save_tvshow(item, episodelist, silent=False): if not filetools.exists(tvshow_path): # We create tvshow.nfo, if it does not exist, with the head_nfo, series info and watched episode marks logger.debug("Creating tvshow.nfo: " + tvshow_path) - head_nfo = scraper.get_nfo(item, search_groups=True, episodelist=episodelist) + head_nfo = scraper.get_nfo(item, search_groups=True) if not head_nfo: return 0, 0, 0, '' item.infoLabels['mediatype'] = "tvshow" diff --git a/platformcode/launcher.py b/platformcode/launcher.py index dc953b47..c884e45c 100644 --- a/platformcode/launcher.py +++ b/platformcode/launcher.py @@ -200,6 +200,7 @@ def run(item=None): if hasattr(channel, 'play'): logger.debug("Executing channel 'play' method") itemlist = channel.play(item) + if not itemlist: return b_favourite = item.isFavourite # Play should return a list of playable URLS if len(itemlist) > 0 and isinstance(itemlist[0], Item): diff --git a/platformcode/platformtools.py b/platformcode/platformtools.py index f03fbd4a..c8eed007 100644 --- a/platformcode/platformtools.py +++ b/platformcode/platformtools.py @@ -1462,7 +1462,7 @@ def prevent_busy(item): if not item.autoplay and not item.window: if item.globalsearch: xbmc.Player().play(os.path.join(config.get_runtime_path(), "resources", "kod.mp4")) else: xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, xbmcgui.ListItem(path=os.path.join(config.get_runtime_path(), "resources", "kod.mp4"))) - xbmc.sleep(100) + xbmc.sleep(200) xbmc.Player().stop() # xbmc.executebuiltin('Action(Stop)') # xbmc.sleep(500) diff --git a/specials/videolibrary.py b/specials/videolibrary.py index 649cd55d..6c89a4a8 100644 --- a/specials/videolibrary.py +++ b/specials/videolibrary.py @@ -559,6 +559,8 @@ def play(item): else: itemlist = [item.clone(url=item.url, server="local")] + if not itemlist: + return [] # For direct links in list format if isinstance(itemlist[0], list): item.video_urls = itemlist