From ead0fefd01477746fb79ac1a5db5daf7a5212c41 Mon Sep 17 00:00:00 2001 From: Alhaziel Date: Sat, 19 Oct 2019 10:01:07 +0200 Subject: [PATCH 1/5] Migliorie ad auto_filter, vosi -> sub-ita --- RIAVVIARE AD AGGIORNAMENTO TERMINATO! --- --- .github/ISSUE_TEMPLATE/test-canale.md | 2 +- channels/0example.json | 2 +- channels/altadefinizione01.json | 2 +- channels/altadefinizione01_link.json | 2 +- channels/altadefinizioneclick.json | 2 +- channels/animeleggendari.json | 2 +- channels/animesubita.json | 4 +- channels/animeworld.json | 2 +- channels/casacinema.json | 2 +- channels/casacinemaInfo.json | 2 +- channels/cb01anime.json | 2 +- channels/cineblog01.json | 4 +- channels/dreamsub.json | 2 +- channels/fastsubita.json | 2 +- channels/italiaserie.json | 2 +- channels/mondolunatico2.json | 2 +- channels/toonitalia.json | 2 +- channelselector.py | 58 +++++++++++++++------------ platformcode/config.py | 2 +- platformcode/unify.py | 6 +-- resources/language/English/strings.po | 4 ++ resources/language/Italian/strings.po | 4 ++ resources/settings.xml | 2 +- specials/news.py | 6 +-- specials/search.py | 2 +- 25 files changed, 69 insertions(+), 53 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/test-canale.md b/.github/ISSUE_TEMPLATE/test-canale.md index 74759500..de8af5e7 100644 --- a/.github/ISSUE_TEMPLATE/test-canale.md +++ b/.github/ISSUE_TEMPLATE/test-canale.md @@ -45,7 +45,7 @@ Per aprirli non servono programmi particolari un semplice editor di testo è suf Occorrente: file .json **1. Indica la coerenza delle voci presenti in "language" con i contenuti presenti sul sito:** -valori: ita, vosi (sub-ita) +valori: ita, sub-ita (sub-ita) - [ ] coerenti - [ ] non coerenti diff --git a/channels/0example.json b/channels/0example.json index a66bf1a8..783193c6 100644 --- a/channels/0example.json +++ b/channels/0example.json @@ -19,7 +19,7 @@ se vanno cancellati tutti deve rimanere la voce: { "id": "nome del file .json", "name": "Nome del canale visualizzato in KOD", - "language": ["ita", "vosi"], + "language": ["ita", "sub-ita"], "active": false, "adult": false, "thumbnail": "", diff --git a/channels/altadefinizione01.json b/channels/altadefinizione01.json index a8690559..8f0d698a 100644 --- a/channels/altadefinizione01.json +++ b/channels/altadefinizione01.json @@ -1,7 +1,7 @@ { "id": "altadefinizione01", "name": "Altadefinizione01", - "language": ["ita", "vosi"], + "language": ["ita", "sub-ita"], "active": true, "adult": false, "thumbnail": "https://raw.githubusercontent.com/Zanzibar82/images/master/posters/altadefinizione01.png", diff --git a/channels/altadefinizione01_link.json b/channels/altadefinizione01_link.json index 068a1ee4..fe102b43 100644 --- a/channels/altadefinizione01_link.json +++ b/channels/altadefinizione01_link.json @@ -3,7 +3,7 @@ "name": "Altadefinizione01 L", "active": true, "adult": false, - "language": ["ita","vosi"], + "language": ["ita","sub-ita"], "thumbnail": "altadefinizione01_L.png", "banner": "altadefinizione01_L.png", "categories": ["movie","vos"], diff --git a/channels/altadefinizioneclick.json b/channels/altadefinizioneclick.json index dbf3ca0a..d5190e8c 100644 --- a/channels/altadefinizioneclick.json +++ b/channels/altadefinizioneclick.json @@ -3,7 +3,7 @@ "name": "AltadefinizioneClick", "active": true, "adult": false, - "language": ["ita","vosi"], + "language": ["ita","sub-ita"], "thumbnail": "https:\/\/raw.githubusercontent.com\/Zanzibar82\/images\/master\/posters\/altadefinizioneclick.png", "bannermenu": "https:\/\/raw.githubusercontent.com\/Zanzibar82\/images\/master\/posters\/altadefinizioneciclk.png", "categories": ["movie","vos"], diff --git a/channels/animeleggendari.json b/channels/animeleggendari.json index 24509255..5fd0cf6b 100644 --- a/channels/animeleggendari.json +++ b/channels/animeleggendari.json @@ -3,7 +3,7 @@ "name": "AnimePerTutti", "active": true, "adult": false, - "language": ["ita", "vosi"], + "language": ["ita", "sub-ita"], "thumbnail": "animepertutti.png", "bannermenu": "animepertutti.png", "categories": ["anime", "vos"], diff --git a/channels/animesubita.json b/channels/animesubita.json index 60140b85..aa00009f 100644 --- a/channels/animesubita.json +++ b/channels/animesubita.json @@ -3,10 +3,10 @@ "name": "AnimeSubIta", "active": true, "adult": false, - "language": ["vosi"], + "language": ["sub-ita"], "thumbnail": "animesubita.png", "bannermenu": "animesubita.png", - "categories": ["anime", "vosi", "movie"], + "categories": ["anime", "vos", "movie"], "settings": [] } diff --git a/channels/animeworld.json b/channels/animeworld.json index 6d619898..0aa9aa1d 100644 --- a/channels/animeworld.json +++ b/channels/animeworld.json @@ -3,7 +3,7 @@ "name": "AnimeWorld", "active": true, "adult": false, - "language": ["ita", "vosi"], + "language": ["ita", "sub-ita"], "thumbnail": "animeworld.png", "banner": "animeworld.png", "categories": ["anime", "vos"], diff --git a/channels/casacinema.json b/channels/casacinema.json index ee2514ad..8f092063 100644 --- a/channels/casacinema.json +++ b/channels/casacinema.json @@ -1,7 +1,7 @@ { "id": "casacinema", "name": "Casacinema", - "language": ["ita", "vosi"], + "language": ["ita", "sub-ita"], "active": true, "adult": false, "thumbnail": "https://raw.githubusercontent.com/Zanzibar82/images/master/posters/casacinema.png", diff --git a/channels/casacinemaInfo.json b/channels/casacinemaInfo.json index ff6d339b..f8e17a26 100644 --- a/channels/casacinemaInfo.json +++ b/channels/casacinemaInfo.json @@ -1,7 +1,7 @@ { "id": "casacinemaInfo", "name": "La Casa del Cinema", - "language": ["ita", "vosi"], + "language": ["ita", "sub-ita"], "active": true, "adult": false, "thumbnail": "", diff --git a/channels/cb01anime.json b/channels/cb01anime.json index b985c4e8..24fd0c8d 100644 --- a/channels/cb01anime.json +++ b/channels/cb01anime.json @@ -1,7 +1,7 @@ { "id": "cb01anime", "name": "Cb01anime", - "language": ["ita", "vos", "vosi"], + "language": ["ita", "vos", "sub-ita"], "active": true, "adult": false, "thumbnail": "cb01anime.png", diff --git a/channels/cineblog01.json b/channels/cineblog01.json index ddf2eaca..a758b139 100644 --- a/channels/cineblog01.json +++ b/channels/cineblog01.json @@ -1,11 +1,11 @@ { "id": "cineblog01", "name": "CB01", - "language": ["ita"], + "language": ["ita", "sub-ita"], "active": true, "adult": false, "thumbnail": "cb01.png", "banner": "cb01.png", - "categories": ["tvshow", "movie", "vosi"], + "categories": ["tvshow", "movie", "vos"], "settings": [] } \ No newline at end of file diff --git a/channels/dreamsub.json b/channels/dreamsub.json index b5ed2795..d0d39ea9 100644 --- a/channels/dreamsub.json +++ b/channels/dreamsub.json @@ -1,7 +1,7 @@ { "id": "dreamsub", "name": "DreamSub", - "language": ["ita", "vosi"], + "language": ["ita", "sub-ita"], "active": true, "adult": false, "thumbnail": "dreamsub.png", diff --git a/channels/fastsubita.json b/channels/fastsubita.json index 9c0cb466..aad4d706 100644 --- a/channels/fastsubita.json +++ b/channels/fastsubita.json @@ -1,7 +1,7 @@ { "id": "fastsubita", "name": "Fastsubita", - "language": ["vosi"], + "language": ["sub-ita"], "active": true, "adult": false, "thumbnail": "fastsubita.png", diff --git a/channels/italiaserie.json b/channels/italiaserie.json index bb53c218..5d487c0a 100644 --- a/channels/italiaserie.json +++ b/channels/italiaserie.json @@ -3,7 +3,7 @@ "name": "Italia Serie", "active": true, "adult": false, - "language": ["ita","vosi"], + "language": ["ita","sub-ita"], "thumbnail": "https:\/\/raw.githubusercontent.com\/Zanzibar82\/images\/master\/posters\/italiaserie.png", "bannermenu": "https:\/\/raw.githubusercontent.com\/Zanzibar82\/images\/master\/posters\/italiaserie.png", "categories": ["tvshow"], diff --git a/channels/mondolunatico2.json b/channels/mondolunatico2.json index ed77f7a2..c07479c2 100644 --- a/channels/mondolunatico2.json +++ b/channels/mondolunatico2.json @@ -6,7 +6,7 @@ "adult": false, "thumbnail": "mondolunatico2.png", "banner": "mondolunatico2.png", - "categories": ["tvshow", "movie", "vosi", "anime"], + "categories": ["tvshow", "movie", "vos", "anime"], "settings": [ { "id": "include_in_global_search", diff --git a/channels/toonitalia.json b/channels/toonitalia.json index a8cd2928..deaa9b02 100644 --- a/channels/toonitalia.json +++ b/channels/toonitalia.json @@ -6,7 +6,7 @@ "adult": false, "thumbnail": "toonitalia.png", "banner": "toonitalia.png", - "categories": ["tvshow", "movie", "vosi", "anime"], + "categories": ["tvshow", "movie", "vos", "anime"], "settings": [ { "id": "include_in_global_search", diff --git a/channelselector.py b/channelselector.py index d594766d..c3e63042 100644 --- a/channelselector.py +++ b/channelselector.py @@ -88,7 +88,7 @@ def getchanneltypes(view="thumb_"): channel_types.append("adult") # channel_language = config.get_setting("channel_language", default="all") - channel_language = auto_filter()[0] + channel_language = auto_filter() logger.info("channel_language=%s" % channel_language) # Ahora construye el itemlist ordenadamente @@ -138,7 +138,7 @@ def filterchannels(category, view="thumb_"): logger.info("channel_files encontrados %s" % (len(channel_files))) # channel_language = config.get_setting("channel_language", default="all") - channel_language, channel_language_list = auto_filter() + channel_language = auto_filter() logger.info("channel_language=%s" % channel_language) for channel_path in channel_files: @@ -193,15 +193,14 @@ def filterchannels(category, view="thumb_"): # Se muestran sólo los idiomas filtrados, cast o lat # Los canales de adultos se mostrarán siempre que estén activos - for c in channel_language_list: - if c in channel_parameters["language"]: - L = True - else: - L = False + # for channel_language_list in channel_language_list: + # if c in channel_parameters["language"]: + # L = True + # else: + # L = False # logger.info('CCLANG= ' + channel_language + ' ' + str(channel_language_list)) if channel_language != "all" and "*" not in channel_parameters["language"] \ - and L == False and channel_language not in channel_parameters["language"]: - logger.info('STOP!!!!') + and channel_language not in str(channel_parameters["language"]): continue # Se salta el canal si está en una categoria filtrado @@ -291,12 +290,13 @@ def set_channel_info(parameters): content = '' langs = parameters['language'] lang_dict = {'ita':'Italiano', - 'vosi':'Sottotitolato in Italiano', + 'sub-ita':'Sottotitolato in Italiano', '*':'Italiano, Sottotitolato in Italiano'} + for lang in langs: # if 'vos' in parameters['categories']: # lang = '*' - # if 'vosi' in parameters['categories']: + # if 'sub-ita' in parameters['categories']: # lang = 'ita' if lang in lang_dict: @@ -320,25 +320,33 @@ def set_channel_info(parameters): def auto_filter(auto_lang=False): - import xbmc, xbmcaddon - - addon = xbmcaddon.Addon('metadata.themoviedb.org') - def_lang = addon.getSetting('language') - lang = 'all' - lang_list = ['all'] - - lang_dict = {'it':'ita'} - lang_list_dict = {'it':['ita','vosi']} - if config.get_setting("channel_language") == 'auto' or auto_lang == True: - lang = lang_dict[def_lang] - lang_list = lang_list_dict[def_lang] + lang = config.get_localized_string(20001) else: lang = config.get_setting("channel_language", default="all") - lang_list = lang_list_dict[def_lang] - return lang, lang_list + return lang + + # import xbmc, xbmcaddon + + # addon = xbmcaddon.Addon('metadata.themoviedb.org') + # def_lang = addon.getSetting('language') + # lang = 'all' + # lang_list = ['all'] + + # lang_dict = {'it':'ita'} + # lang_list_dict = {'it':['ita','vosi']} + + # if config.get_setting("channel_language") == 'auto' or auto_lang == True: + # lang = lang_dict[def_lang] + # lang_list = lang_list_dict[def_lang] + + # else: + # lang = config.get_setting("channel_language", default="all") + # lang_list = lang_list_dict[def_lang] + + # return lang, lang_list def thumb(itemlist=[], genre=False): diff --git a/platformcode/config.py b/platformcode/config.py index a4da4250..87ea5ea1 100644 --- a/platformcode/config.py +++ b/platformcode/config.py @@ -366,7 +366,7 @@ def get_localized_string(code): def get_localized_category(categ): categories = {'movie': get_localized_string(30122), 'tvshow': get_localized_string(30123), 'anime': get_localized_string(30124), 'documentary': get_localized_string(30125), - 'vos': get_localized_string(30136), 'vosi': get_localized_string(70566), 'adult': get_localized_string(30126), + 'vos': get_localized_string(30136), 'sub-ita': get_localized_string(70566), 'adult': get_localized_string(30126), 'direct': get_localized_string(30137), 'torrent': get_localized_string(70015)} return categories[categ] if categ in categories else categ diff --git a/platformcode/unify.py b/platformcode/unify.py index c06f6eb1..0c8c41af 100644 --- a/platformcode/unify.py +++ b/platformcode/unify.py @@ -253,7 +253,7 @@ def set_lang(language): lat=['latino','lat','la', 'espanol latino', 'espaol latino', 'zl', 'mx', 'co', 'vl'] vose=['subtitulado','subtitulada','sub','sub espanol','vose','espsub','su','subs castellano', 'sub: español', 'vs', 'zs', 'vs', 'english-spanish subs', 'ingles sub espanol'] - vosi=['sottotitolato','sottotitolata','sub','sub ita','vosi','sub-ita','subs italiano', + sub_ita=['sottotitolato','sottotitolata','sub','sub ita','subs italiano', 'sub: italiano', 'inglese sottotitolato'] vos=['vos', 'sub ingles', 'engsub','ingles subtitulado', 'sub: ingles'] vo=['ingles', 'en','vo', 'ovos', 'eng','v.o', 'english'] @@ -272,8 +272,8 @@ def set_lang(language): language = 'lat' elif language in ita: language = 'ita' - elif language in vosi: - language = 'vosi' + elif language in sub_ita: + language = 'sub-ita' elif language in vose: language = 'vose' elif language in vos: diff --git a/resources/language/English/strings.po b/resources/language/English/strings.po index 34aaf082..9ec7c01e 100644 --- a/resources/language/English/strings.po +++ b/resources/language/English/strings.po @@ -21,6 +21,10 @@ msgctxt "#20000" msgid "KOD" msgstr "" +msgctxt "#20001" +msgid "eng" +msgstr "" + msgctxt "#30001" msgid "Check for updates:" msgstr "" diff --git a/resources/language/Italian/strings.po b/resources/language/Italian/strings.po index ccf02711..65efc50a 100644 --- a/resources/language/Italian/strings.po +++ b/resources/language/Italian/strings.po @@ -21,6 +21,10 @@ msgctxt "#20000" msgid "KOD" msgstr "KOD" +msgctxt "#20001" +msgid "eng" +msgstr "ita" + msgctxt "#30001" msgid "Check for updates:" msgstr "Verifica aggiornamenti:" diff --git a/resources/settings.xml b/resources/settings.xml index d5bf0175..89b0e9cb 100644 --- a/resources/settings.xml +++ b/resources/settings.xml @@ -106,7 +106,7 @@ - Date: Sat, 19 Oct 2019 12:21:01 +0200 Subject: [PATCH 2/5] Filtri Personalizzati per Community Channels --- specials/community.py | 220 +++++++++++++++++++++++++++++++++--------- 1 file changed, 174 insertions(+), 46 deletions(-) diff --git a/specials/community.py b/specials/community.py index 7aac5509..aa4b2bc7 100644 --- a/specials/community.py +++ b/specials/community.py @@ -3,14 +3,13 @@ # -*- Created for Alfa-addon -*- # -*- By the Alfa Develop Group -*- -import re, urllib, os, inspect -import requests +import re, os, inspect, requests from core import httptools, scrapertoolsV2, servertools, jsontools, tmdb, support from core.item import Item from core.support import typo from channelselector import get_thumb -from platformcode import logger, config, platformtools +from platformcode import config, platformtools from specials import autoplay @@ -20,6 +19,7 @@ list_language = ['ITA', 'SUB-ITA'] list_servers = ['directo', 'akvideo', 'verystream', 'openload'] list_quality = ['SD', '720', '1080', '4k'] + def mainlist(item): support.log() @@ -48,8 +48,7 @@ def show_channels(item): itemlist.append(Item(channel=item.channel, title=typo(config.get_localized_string(70676),'bold color kod'), action='add_channel', - thumbnail=get_thumb('add.png') - )) + thumbnail=get_thumb('add.png'))) for key, channel in json['channels'].items(): # Find File Path @@ -81,6 +80,7 @@ def show_channels(item): path=path)) return itemlist + def show_menu(item): global list_data itemlist = [] @@ -94,6 +94,7 @@ def show_menu(item): fanart = relative('fanart', option, item.path) plot = option['plot'] if option.has_key('plot') else item.plot url = relative('link', option, item.path) + submenu = option['submenu'] if option.has_key('submenu') else [] itemlist.append(Item(channel=item.channel, title=format_title(option['title']), thumbnail=thumbnail, @@ -102,9 +103,26 @@ def show_menu(item): action='show_menu', url=url, path=item.path)) + if submenu: + for key in submenu: + if key != 'search': + itemlist.append(Item(channel=item.channel, + title=typo(submenu[key],'submenu'), + url=url, + path=item.path, + thumbnail=item.thumbnail, + action='submenu', + filterkey=key)) + if submenu.has_key('search'): + itemlist.append(Item(channel=item.channel, + title=typo('Cerca ' + option['title'] +'...','color kod bold'), + thumbnail=get_thumb('search.png'), + action='search', + url=url, + path=item.path)) # add Search itemlist.append(Item(channel=item.channel, - title=typo('Cerca...','color kod bold'), + title=typo('Cerca nel Canale...','color kod bold'), thumbnail=get_thumb('search.png'), action='search', url=item.url, @@ -121,6 +139,40 @@ def show_menu(item): return list_all(item) + +def submenu(item): + support.log() + + itemlist = [] + filter_list = [] + + json_data = load_json(item) + if json_data.has_key("movies_list"): item.media_type= 'movies_list' + elif json_data.has_key("tvshows_list"): item.media_type = 'tvshows_list' + elif json_data.has_key("episodes_list"): item.media_type = 'episodes_list' + elif json_data.has_key("generic_list"): item.media_type= 'generic_list' + media_type = item.media_type + + for media in json_data[media_type]: + if media.has_key(item.filterkey): + if type(media[item.filterkey]) == str and media[item.filterkey] not in filter_list: + filter_list.append(media[item.filterkey].lower()) + elif type(media[item.filterkey]) == list: + for f in media[item.filterkey]: + if f not in filter_list: + filter_list.append(f.lower()) + filter_list.sort() + for filter in filter_list: + itemlist.append(Item(channel=item.channel, + title=typo(filter, 'bold'), + url=item.url, + media_type=item.media_type, + action='list_filtered', + filterkey=item.filterkey, + filter=filter)) + return itemlist + + def list_all(item): support.log() @@ -180,8 +232,70 @@ def list_all(item): item.plot = '\n\n' + typo('','submenu') + '\n' + item.personal_plot + '\n' + typo('','submenu') + '\n\n' + item.plot return itemlist + +def list_filtered(item): + support.log() + + itemlist = [] + media_type = item.media_type + json_data = load_json(item) + contentTitle = contentSerieName = '' + infoLabels = item.infoLabels if item.infoLabels else {} + + if json_data: + for media in json_data[media_type]: + if media.has_key(item.filterkey) and (item.filter.lower() in media[item.filterkey]): + + quality, language, plot, poster = set_extra_values(media) + + fulltitle = media['title'] + title = set_title(fulltitle, language, quality) + + infoLabels['year'] = media['year'] if media.has_key('year')else '' + infoLabels['tmdb_id'] = media['tmdb_id'] if media.has_key('tmdb_id') else '' + + if 'movies_list' in json_data or 'generic_list' in json_data: + url= media + contentTitle = fulltitle + contentType = 'movie' + action='findvideos' + + else: + contentSerieName = fulltitle + contentType = 'tvshow' + if media.has_key('seasons_list'): + url = media['seasons_list'] + action = 'get_seasons' + else: + url = relative('link', media, item.path) + action = 'episodios' + + itemlist.append(Item(channel=item.channel, + contentType=contentType, + title=format_title(title), + fulltitle=fulltitle, + show=fulltitle, + quality=quality, + language=language, + plot=plot, + personal_plot=plot, + thumbnail=poster, + path=item.path, + url=url, + contentTitle=contentTitle, + contentSerieName=contentSerieName, + action=action)) + + if not 'generic_list' in json_data: + tmdb.set_infoLabels(itemlist, seekTmdb=True) + for item in itemlist: + if item.personal_plot != item.plot and item.personal_plot: + item.plot = '\n\n' + typo('','submenu') + '\n' + item.personal_plot + '\n' + typo('','submenu') + '\n\n' + item.plot + return itemlist + + def get_seasons(item): - support.log(item) + support.log() itemlist = [] infoLabels = item.infoLabels if item.infolabels else {} list_seasons = item.url @@ -218,7 +332,7 @@ def get_seasons(item): def episodios(item): - support.log(item) + support.log() itemlist = [] json_data = load_json(item) @@ -285,6 +399,7 @@ def findvideos(item): return itemlist + def add_channel(item): support.log() import xbmc @@ -333,6 +448,7 @@ def add_channel(item): platformtools.dialog_notification(config.get_localized_string(20000), config.get_localized_string(70683) % json_file['channel_name']) return + def remove_channel(item): support.log() import xbmc @@ -387,60 +503,71 @@ def set_title(title, language, quality): return title + def format_title(title): t = scrapertoolsV2.find_single_match(title, r'\{([^\}]+)\}') if 'bold' not in t: t += ' bold' title = re.sub(r'(\{[^\}]+\})','',title) return typo(title,t) + def search(item, text): support.log('Search ', text) itemlist = [] json_data = load_json(item) + support.log('JSON= ', json_data) return load_links(item, itemlist, json_data, text) + def load_links(item, itemlist, json_data, text): - for option in json_data['menu']: - json_data = load_json(option['link'] if option['link'].startswith('http') else item.path+option['link']) - if not 'menu' in json_data: - if "movies_list" in json_data: media_type= 'movies_list' - elif "tvshows_list" in json_data: media_type = 'tvshows_list' - elif "episodes_list" in json_data: media_type = 'episodes_list' - if "generic_list" in json_data: media_type= 'generic_list' + support.log() - if json_data: - for media in json_data[media_type]: - if text.lower() in media['title'].lower(): - quality, language, plot, poster = set_extra_values(media) + def links(item, itemlist, json_data, text): + support.log() + if "movies_list" in json_data: media_type= 'movies_list' + elif "tvshows_list" in json_data: media_type = 'tvshows_list' + elif "episodes_list" in json_data: media_type = 'episodes_list' + if "generic_list" in json_data: media_type= 'generic_list' - title = media['title'] - title = set_title(title, language, quality) + if json_data: + for media in json_data[media_type]: + if text.lower() in media['title'].lower(): + quality, language, plot, poster = set_extra_values(media) - new_item = Item(channel=item.channel, title=format_title(title), quality=quality, - language=language, plot=plot, personal_plot=plot, thumbnail=poster, path=item.path) + title = media['title'] + title = set_title(title, language, quality) - new_item.infoLabels['year'] = media['year'] if 'year' in media else '' - new_item.infoLabels['tmdb_id'] = media['tmdb_id'] if 'tmdb_id' in media else '' + new_item = Item(channel=item.channel, title=format_title(title), quality=quality, + language=language, plot=plot, personal_plot=plot, thumbnail=poster, path=item.path) - if 'movies_list' in json_data or 'generic_list' in json_data: - new_item.url = media - new_item.contentTitle = media['title'] - new_item.action = 'findvideos' - else: - new_item.url = media['seasons_list'] - new_item.contentSerieName = media['title'] - new_item.action = 'seasons' + new_item.infoLabels['year'] = media['year'] if 'year' in media else '' + new_item.infoLabels['tmdb_id'] = media['tmdb_id'] if 'tmdb_id' in media else '' - itemlist.append(new_item) + if 'movies_list' in json_data or 'generic_list' in json_data: + new_item.url = media + new_item.contentTitle = media['title'] + new_item.action = 'findvideos' + else: + new_item.url = media['seasons_list'] + new_item.contentSerieName = media['title'] + new_item.action = 'seasons' - if not 'generic_list' in json_data: - tmdb.set_infoLabels(itemlist, seekTmdb=True) - for item in itemlist: - if item.personal_plot != item.plot and item.personal_plot: - item.plot = '\n\n' + typo('','submenu') + '\n' + item.personal_plot + '\n' + typo('','submenu') + '\n\n' + item.plot - else: + itemlist.append(new_item) + + if not 'generic_list' in json_data: + tmdb.set_infoLabels(itemlist, seekTmdb=True) + for item in itemlist: + if item.personal_plot != item.plot and item.personal_plot: + item.plot = '\n\n' + typo('','submenu') + '\n' + item.personal_plot + '\n' + typo('','submenu') + '\n\n' + item.plot + + if json_data.has_key('menu'): + for option in json_data['menu']: + json_data = load_json(option['link'] if option['link'].startswith('http') else item.path+option['link']) load_links(item, itemlist, json_data, text) + else: + links(item, itemlist, json_data, text) + return itemlist @@ -454,18 +581,19 @@ def relative(key, json, path): ret = '' return ret -def load_json(item): - support.log(item) - url= item if type(item) == str else item.url - if url: +def load_json(item): + support.log() + url= item if type(item) == str else item.url + try: if url.startswith('http'): json_file = httptools.downloadpage(url).data else: json_file = open(url, "r").read() json_data = jsontools.load(json_file) - else: - json_data = '' + + except: + json_data = {} return json_data \ No newline at end of file From ca96e110becb1f5401b98f5a94910baa22f9eb3c Mon Sep 17 00:00:00 2001 From: Alhaziel Date: Sat, 19 Oct 2019 17:16:42 +0200 Subject: [PATCH 3/5] Community Channels Fix e Migliorie - Ricerca Foto e descrizione in automatico per: - "directors":"Nome Regista" - "actors"["Nome 1", "Nome 2"] - "search":"" -> ricerca nella lista --- specials/community.py | 108 +++++++++++++++++++++++++----------------- 1 file changed, 65 insertions(+), 43 deletions(-) diff --git a/specials/community.py b/specials/community.py index aa4b2bc7..8c982f06 100644 --- a/specials/community.py +++ b/specials/community.py @@ -12,13 +12,20 @@ from channelselector import get_thumb from platformcode import config, platformtools from specials import autoplay +import xbmc, xbmcaddon + +addon = xbmcaddon.Addon('metadata.themoviedb.org') +lang = addon.getSetting('language') + list_data = {} -list_language = ['ITA', 'SUB-ITA'] +# list_language = ['ITA', 'SUB-ITA'] list_servers = ['directo', 'akvideo', 'verystream', 'openload'] list_quality = ['SD', '720', '1080', '4k'] +tmdb_api = 'a1ab8b8669da03637a4b98fa39c39228' + def mainlist(item): support.log() @@ -156,18 +163,32 @@ def submenu(item): for media in json_data[media_type]: if media.has_key(item.filterkey): if type(media[item.filterkey]) == str and media[item.filterkey] not in filter_list: - filter_list.append(media[item.filterkey].lower()) + filter_list.append(media[item.filterkey]) elif type(media[item.filterkey]) == list: for f in media[item.filterkey]: if f not in filter_list: - filter_list.append(f.lower()) + filter_list.append(f) filter_list.sort() + for filter in filter_list: + if item.filterkey in ['director','actors']: + load_info = load_json('http://api.themoviedb.org/3/search/person/?api_key=' + tmdb_api + '&language=' + lang + '&query=' + filter) + if load_info: + id = str(load_info['results'][0]['id']) + if id: + info = load_json('http://api.themoviedb.org/3/person/'+ id + '?api_key=' + tmdb_api + '&language=' + lang) + if not info['biography']: + bio = load_json('http://api.themoviedb.org/3/person/'+ id + '?api_key=' + tmdb_api + '&language=en')['biography'] + thumbnail = 'https://image.tmdb.org/t/p/w600_and_h900_bestv2' + info['profile_path'] if info['profile_path'] else item.thumbnail + plot += info['biography'] if info['biography'] else bio if bio else '' + itemlist.append(Item(channel=item.channel, title=typo(filter, 'bold'), url=item.url, media_type=item.media_type, action='list_filtered', + thumbnail=thumbnail, + plot=plot, filterkey=item.filterkey, filter=filter)) return itemlist @@ -185,7 +206,7 @@ def list_all(item): if json_data: for media in json_data[media_type]: - quality, language, plot, poster = set_extra_values(media) + quality, language, plot, poster = set_extra_values(media, item.path) fulltitle = media['title'] title = set_title(fulltitle, language, quality) @@ -244,47 +265,49 @@ def list_filtered(item): if json_data: for media in json_data[media_type]: - if media.has_key(item.filterkey) and (item.filter.lower() in media[item.filterkey]): + if media.has_key(item.filterkey): + filter_keys = [it.lower() for it in media[item.filterkey]] if type(media[item.filterkey]) == list else media[item.filterkey].lower() + if item.filter.lower() in filter_keys: - quality, language, plot, poster = set_extra_values(media) + quality, language, plot, poster = set_extra_values(media, item.path) - fulltitle = media['title'] - title = set_title(fulltitle, language, quality) + fulltitle = media['title'] + title = set_title(fulltitle, language, quality) - infoLabels['year'] = media['year'] if media.has_key('year')else '' - infoLabels['tmdb_id'] = media['tmdb_id'] if media.has_key('tmdb_id') else '' + infoLabels['year'] = media['year'] if media.has_key('year')else '' + infoLabels['tmdb_id'] = media['tmdb_id'] if media.has_key('tmdb_id') else '' - if 'movies_list' in json_data or 'generic_list' in json_data: - url= media - contentTitle = fulltitle - contentType = 'movie' - action='findvideos' + if 'movies_list' in json_data or 'generic_list' in json_data: + url= media + contentTitle = fulltitle + contentType = 'movie' + action='findvideos' - else: - contentSerieName = fulltitle - contentType = 'tvshow' - if media.has_key('seasons_list'): - url = media['seasons_list'] - action = 'get_seasons' else: - url = relative('link', media, item.path) - action = 'episodios' + contentSerieName = fulltitle + contentType = 'tvshow' + if media.has_key('seasons_list'): + url = media['seasons_list'] + action = 'get_seasons' + else: + url = relative('link', media, item.path) + action = 'episodios' - itemlist.append(Item(channel=item.channel, - contentType=contentType, - title=format_title(title), - fulltitle=fulltitle, - show=fulltitle, - quality=quality, - language=language, - plot=plot, - personal_plot=plot, - thumbnail=poster, - path=item.path, - url=url, - contentTitle=contentTitle, - contentSerieName=contentSerieName, - action=action)) + itemlist.append(Item(channel=item.channel, + contentType=contentType, + title=format_title(title), + fulltitle=fulltitle, + show=fulltitle, + quality=quality, + language=language, + plot=plot, + personal_plot=plot, + thumbnail=poster, + path=item.path, + url=url, + contentTitle=contentTitle, + contentSerieName=contentSerieName, + action=action)) if not 'generic_list' in json_data: tmdb.set_infoLabels(itemlist, seekTmdb=True) @@ -386,7 +409,7 @@ def findvideos(item): itemlist = [] if 'links' in item.url: for url in item.url['links']: - quality, language, plot, poster = set_extra_values(url) + quality, language, plot, poster = set_extra_values(url, item.path) title = '' title = set_title(title, language, quality) @@ -470,7 +493,7 @@ def remove_channel(item): return -def set_extra_values(dict): +def set_extra_values(dict, path): support.log() quality = '' language = '' @@ -484,7 +507,7 @@ def set_extra_values(dict): if 'plot' in dict and dict['plot'] != '': plot = dict['plot'] if 'poster' in dict and dict['poster'] != '': - poster = dict['poster'] + poster = dict['poster']if ':/' in dict['poster'] else path + dict['poster'] if '/' in dict['poster'] else get_thumb(json[key]) if dict['poster'] else '' return quality, language, plot, poster @@ -515,7 +538,6 @@ def search(item, text): support.log('Search ', text) itemlist = [] json_data = load_json(item) - support.log('JSON= ', json_data) return load_links(item, itemlist, json_data, text) @@ -533,7 +555,7 @@ def load_links(item, itemlist, json_data, text): if json_data: for media in json_data[media_type]: if text.lower() in media['title'].lower(): - quality, language, plot, poster = set_extra_values(media) + quality, language, plot, poster = set_extra_values(media, item.path) title = media['title'] title = set_title(title, language, quality) From 8ec68ac58ecca583988c8a5467226c48d68da031 Mon Sep 17 00:00:00 2001 From: Alhaziel Date: Sat, 19 Oct 2019 18:17:27 +0200 Subject: [PATCH 4/5] Fix InfoLabels per Community Channels --- specials/community.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/specials/community.py b/specials/community.py index 8c982f06..bd7b8f32 100644 --- a/specials/community.py +++ b/specials/community.py @@ -205,6 +205,7 @@ def list_all(item): if json_data: for media in json_data[media_type]: + support.log(media) quality, language, plot, poster = set_extra_values(media, item.path) @@ -244,6 +245,7 @@ def list_all(item): url=url, contentTitle=contentTitle, contentSerieName=contentSerieName, + infoLabels=infoLabels, action=action)) if not 'generic_list' in json_data: @@ -307,6 +309,7 @@ def list_filtered(item): url=url, contentTitle=contentTitle, contentSerieName=contentSerieName, + infoLabels=infoLabels, action=action)) if not 'generic_list' in json_data: From 2b760459fc211a8709a267233e7e72973a1b8fb7 Mon Sep 17 00:00:00 2001 From: Alhaziel Date: Sat, 19 Oct 2019 18:30:31 +0200 Subject: [PATCH 5/5] Fix CC se si usa thumbnail al posto di poster --- specials/community.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/specials/community.py b/specials/community.py index bd7b8f32..83325b26 100644 --- a/specials/community.py +++ b/specials/community.py @@ -510,7 +510,9 @@ def set_extra_values(dict, path): if 'plot' in dict and dict['plot'] != '': plot = dict['plot'] if 'poster' in dict and dict['poster'] != '': - poster = dict['poster']if ':/' in dict['poster'] else path + dict['poster'] if '/' in dict['poster'] else get_thumb(json[key]) if dict['poster'] else '' + poster = dict['poster']if ':/' in dict['poster'] else path + dict['poster'] if '/' in dict['poster'] else '' + elif 'thumbnail' in dict and dict['thumbnail'] != '': + poster = dict['thumbnail']if ':/' in dict['thumbnail'] else path + dict['thumbnail'] if '/' in dict['thumbnail'] else '' return quality, language, plot, poster