def modificar_filtro(item): # Recuperar filtros guardados del usuario # --------------------------------------- filtro = config.get_setting('filtro', item.channel, default='') f_idi = scrapertools.find_multiple_matches(filtro, 'audio\[\]=([^&]+)') f_gen = scrapertools.find_multiple_matches(filtro, 'genre\[\]=([^&]+)') f_cal = scrapertools.find_multiple_matches(filtro, 'quality\[\]=([^&]+)') f_ord = scrapertools.find_single_match(filtro, 'sort=([^&]+)') # Diálogos para escoger géneros, idiomas, calidades # ------------------------------------------------- preselect = [i for i, x in enumerate(web_idiomas) if x[0] in f_idi] ret = platformtools.dialog_multiselect('Seleccionar idiomas a incluir', [x[1] for x in web_idiomas], preselect=preselect) if ret == None: return False selected_idi = [web_idiomas[i][0] for i in ret] preselect = [i for i, x in enumerate(web_generos) if x[0] in f_gen] ret = platformtools.dialog_multiselect('Seleccionar géneros a incluir', [x[1] for x in web_generos], preselect=preselect) if ret == None: return False selected_gen = [web_generos[i][0] for i in ret] preselect = [i for i, x in enumerate(web_calidades) if x[0] in f_cal] ret = platformtools.dialog_multiselect('Seleccionar calidades a incluir', [x[1] for x in web_calidades], preselect=preselect) if ret == None: return False selected_cal = [web_calidades[i][0] for i in ret] preselect = 2 #latest for i, x in enumerate(web_ordenes): if x[0] == f_ord: preselect = i break ret = platformtools.dialog_select('Seleccionar orden a aplicar', [x[1] for x in web_ordenes], preselect=preselect) if ret == -1: return False selected_ord = web_ordenes[ret][0] # Guardar filtro en la configuración del canal del usuario # -------------------------------------------------------- filtro = '?' for valor in selected_idi: filtro += 'audio[]=%s&' % valor for valor in selected_gen: filtro += 'genre[]=%s&' % valor for valor in selected_cal: filtro += 'quality[]=%s&' % valor filtro += 'sort=%s' % selected_ord config.set_setting('filtro', filtro, item.channel) platformtools.itemlist_refresh() return True
def configure_update_videolibrary(item): import xbmcgui # Load list of options (active user channels that allow global search) lista = [] ids = [] preselect = [] for i, item_tvshow in enumerate(item.lista): it = xbmcgui.ListItem(item_tvshow["title"], '') it.setArt({'thumb': item_tvshow["thumbnail"], 'fanart': item_tvshow["fanart"]}) lista.append(it) ids.append(Item(nfo=item_tvshow['nfo'])) if item_tvshow['active']<=0: preselect.append(i) # Select Dialog ret = platformtools.dialog_multiselect(config.get_localized_string(60601), lista, preselect=preselect, useDetails=True) if ret < 0: return False # order cancel seleccionados = [ids[i] for i in ret] for tvshow in ids: if tvshow not in seleccionados: tvshow.active = 0 elif tvshow in seleccionados: tvshow.active = 1 mark_tvshow_as_updatable(tvshow, silent=True) platformtools.itemlist_refresh() return True
def setting_channel_new(item): import xbmcgui # Load list of options (active user channels that allow global search) lista = [] ids = [] lista_lang = [] lista_ctgs = [] channels_list = channelselector.filterchannels('all') for channel in channels_list: if channel.action == '': continue channel_parameters = channeltools.get_channel_parameters(channel.channel) # Do not include if "include_in_global_search" does not exist in the channel configuration if not channel_parameters['include_in_global_search']: continue lbl = '%s' % channel_parameters['language'] lbl += ' %s' % ', '.join(config.get_localized_category(categ) for categ in channel_parameters['categories']) it = xbmcgui.ListItem(channel.title, lbl) it.setArt({'thumb': channel.thumbnail, 'fanart': channel.fanart}) lista.append(it) ids.append(channel.channel) lista_lang.append(channel_parameters['language']) lista_ctgs.append(channel_parameters['categories']) # Pre-select dialog preselecciones = [ config.get_localized_string(70570), config.get_localized_string(70571), # 'Modificar partiendo de Recomendados', # 'Modificar partiendo de Frecuentes', config.get_localized_string(70572), config.get_localized_string(70573), # 'Modificar partiendo de Castellano', # 'Modificar partiendo de Latino' ] # presel_values = ['skip', 'actual', 'recom', 'freq', 'all', 'none', 'cast', 'lat'] presel_values = ['skip', 'actual', 'all', 'none'] categs = ['movie', 'tvshow', 'documentary', 'anime', 'vos', 'direct', 'torrent'] for c in categs: preselecciones.append(config.get_localized_string(70577) + config.get_localized_category(c)) presel_values.append(c) if item.action == 'setting_channel': # Configuración de los canales incluídos en la búsqueda del preselecciones[0] del presel_values[0] # else: # Call from "search on other channels" (you can skip the selection and go directly to the search) ret = platformtools.dialog_select(config.get_localized_string(59994), preselecciones) if ret == -1: return False # order cancel if presel_values[ret] == 'skip': return True # continue unmodified elif presel_values[ret] == 'none': preselect = [] elif presel_values[ret] == 'all': preselect = list(range(len(ids))) elif presel_values[ret] in ['cast', 'lat']: preselect = [] for i, lg in enumerate(lista_lang): if presel_values[ret] in lg or '*' in lg: preselect.append(i) elif presel_values[ret] == 'actual': preselect = [] for i, canal in enumerate(ids): channel_status = config.get_setting('include_in_global_search', canal) if channel_status: preselect.append(i) elif presel_values[ret] == 'recom': preselect = [] for i, canal in enumerate(ids): _not, set_canal_list = channeltools.get_channel_controls_settings(canal) if set_canal_list.get('include_in_global_search', False): preselect.append(i) elif presel_values[ret] == 'freq': preselect = [] for i, canal in enumerate(ids): frequency = channeltools.get_channel_setting('frequency', canal, 0) if frequency > 0: preselect.append(i) else: preselect = [] for i, ctgs in enumerate(lista_ctgs): if presel_values[ret] in ctgs: preselect.append(i) # Dialog to select ret = platformtools.dialog_multiselect(config.get_localized_string(59994), lista, preselect=preselect, useDetails=True) if ret == None: return False # order cancel seleccionados = [ids[i] for i in ret] # Save changes to search channels for canal in ids: channel_status = config.get_setting('include_in_global_search', canal) # if not channel_status: # channel_status = True if channel_status and canal not in seleccionados: config.set_setting('include_in_global_search', False, canal) elif not channel_status and canal in seleccionados: config.set_setting('include_in_global_search', True, canal) return True
def channels_onoff(item): import channelselector from core import channeltools # Cargar lista de opciones # ------------------------ lista = [] ids = [] channels_list = channelselector.filterchannels('allchannelstatus') for channel in channels_list: channel_parameters = channeltools.get_channel_parameters( channel.channel) lbl = '%s' % channel_parameters['language'] # ~ lbl += ' %s' % [config.get_localized_category(categ) for categ in channel_parameters['categories']] lbl += ' %s' % ', '.join( config.get_localized_category(categ) for categ in channel_parameters['categories']) it = Item(fanart=channel.fanart, plot=lbl, thumbnail=channel.thumbnail, title=channel.title) lista.append(it) ids.append(channel.channel) if config.is_xbmc(): import xbmcgui new_list = list() for fake_it in lista: it = xbmcgui.ListItem(fake_it.title, fake_it.plot) it.setArt({'thumb': fake_it.thumbnail, 'fanart': fake_it.fanart}) new_list.append(it) lista = new_list # Diálogo para pre-seleccionar # ---------------------------- preselecciones = [ config.get_localized_string(70517), config.get_localized_string(70518), config.get_localized_string(70519) ] ret = platformtools.dialog_select(config.get_localized_string(60545), preselecciones) if ret == -1: return False # pedido cancel if ret == 2: preselect = [] elif ret == 1: preselect = list(range(len(ids))) else: preselect = [] for i, canal in enumerate(ids): channel_status = config.get_setting('enabled', canal) if channel_status is None: channel_status = True if channel_status: preselect.append(i) # Diálogo para seleccionar # ------------------------ ret = platformtools.dialog_multiselect(config.get_localized_string(60545), lista, preselect=preselect, useDetails=True) if ret == None: return False # pedido cancel seleccionados = [ids[i] for i in ret] # Guardar cambios en canales activados # ------------------------------------ for canal in ids: channel_status = config.get_setting('enabled', canal) if channel_status is None: channel_status = True if channel_status and canal not in seleccionados: config.set_setting('enabled', False, canal) elif not channel_status and canal in seleccionados: config.set_setting('enabled', True, canal) return False
def manual_renumeration(item, modify=False): log() _list = [] if item.from_channel: item.channel = item.from_channel title = item.fulltitle.rstrip() dict_series = load(item) if title not in dict_series: dict_series[title] = {} if TAG_EPISODE in dict_series[title] and dict_series[title][TAG_EPISODE]: EpisodeDict = json.loads( base64.b64decode(dict_series[title][TAG_EPISODE])) del dict_series[title][TAG_EPISODE] else: EpisodeDict = {} if TAG_EPLIST in dict_series[title]: del dict_series[title][TAG_EPLIST] if TAG_MODE in dict_series[title]: del dict_series[title][TAG_MODE] if TAG_CHECK in dict_series[title]: del dict_series[title][TAG_CHECK] if TAG_SEASON in dict_series[title]: del dict_series[title][TAG_SEASON] if TAG_SPECIAL in dict_series[title]: del dict_series[title][TAG_SPECIAL] dict_series[title][TAG_TYPE] = 'manual' write(item, dict_series) if TAG_ID not in dict_series[title] or (TAG_ID in dict_series[title] and not dict_series[title][TAG_ID]): tvdb.find_and_set_infoLabels(item) # Trova l'ID della serie while not item.infoLabels['tvdb_id']: try: item.show = platformtools.dialog_input( default=item.show, heading=config.get_localized_string( 30112)) # <- Enter title to search tvdb.find_and_set_infoLabels(item) except: heading = config.get_localized_string( 70704) # <- TMDB ID (0 to cancel) info = platformtools.dialog_numeric(0, heading) item.infoLabels['tvdb_id'] = '0' if info == '' else info if item.infoLabels['tvdb_id']: ID = item.infoLabels['tvdb_id'] dict_renumerate = {TAG_ID: ID} dict_series[title] = dict_renumerate itemlist = find_episodes(item) for item in itemlist: Title = re.sub(r'\d+x\d+ - ', '', item.title) if modify == True: ep = int(scrapertools.find_single_match(Title, r'(\d+)')) if item.action == 'findvideos' and str(ep) not in EpisodeDict: _list.append(Title) else: if item.action == 'findvideos': _list.append(Title) count = 1 preselect = platformtools.dialog_select( config.get_localized_string(70732), [ typo(config.get_localized_string(70518), 'bold'), typo(config.get_localized_string(70519), 'bold') ]) selection = [] if preselect == 0: for i in _list: selection.append(_list.index(i)) while len(_list) > 0: selected = platformtools.dialog_multiselect( config.get_localized_string(70734), _list, preselect=selection) if selected == None: break season = '' while not season: season = platformtools.dialog_numeric( 0, config.get_localized_string(70733)) for select in selected: ep = int(scrapertools.find_single_match(_list[select], r'(\d+)')) if season == '0': episode = '' while not episode: episode = platformtools.dialog_numeric( 0, config.get_localized_string(70735) % _list[select]) EpisodeDict[str(ep)] = '%sx%s' % (season, episode.zfill(2)) else: EpisodeDict[str(ep)] = '%sx%s' % (season, str(count).zfill(2)) count += 1 for select in reversed(selected): del _list[select] dict_series[title][TAG_TYPE] = 'manual' EpisodeDict = base64.b64encode(json.dumps(EpisodeDict).encode()) dict_series[title][TAG_EPISODE] = EpisodeDict.decode() write(item, dict_series) # xbmc.executebuiltin("Container.Refresh") if modify == True: return json.loads(base64.b64decode(EpisodeDict))
def semiautomatic_config_item(item): log() # Configurazione Semi Automatica, utile in caso la numerazione automatica fallisca tvdb.find_and_set_infoLabels(item) item.channel = item.from_channel dict_series = load(item) title = item.fulltitle.rstrip() # Trova l'ID della serie while not item.infoLabels['tvdb_id']: try: item.show = platformtools.dialog_input( default=item.show, heading=config.get_localized_string( 30112)) # <- Enter title to search tvdb.find_and_set_infoLabels(item) except: heading = config.get_localized_string( 70704) # <- TMDB ID (0 to cancel) info = platformtools.dialog_numeric(0, heading) item.infoLabels['tvdb_id'] = '0' if info == '' else info if item.infoLabels['tvdb_id']: ID = item.infoLabels['tvdb_id'] dict_renumerate = {TAG_ID: ID} dict_series[title] = dict_renumerate # Trova la Stagione if any(word in title.lower() for word in ['specials', 'speciali']): heading = config.get_localized_string( 70686 ) # <- Enter the number of the starting season (for specials) season = platformtools.dialog_numeric(0, heading, '0') dict_renumerate[TAG_SEASON] = season elif RepresentsInt(title.split()[-1]): heading = config.get_localized_string( 70686 ) # <- Enter the number of the starting season (for season > 1) season = platformtools.dialog_numeric(0, heading, title.split()[-1]) dict_renumerate[TAG_SEASON] = season else: heading = config.get_localized_string( 70686 ) # <- Enter the number of the starting season (for season 1) season = platformtools.dialog_numeric(0, heading, '1') dict_renumerate[TAG_SEASON] = season mode = platformtools.dialog_yesno( config.get_localized_string(70687), config.get_localized_string(70688), nolabel=config.get_localized_string(30023), yeslabel=config.get_localized_string(30022)) if mode == True: dict_renumerate[TAG_MODE] = False if TAG_SPECIAL in dict_series[title]: specials = dict_renumerate[TAG_SPECIAL] else: specials = [] write(item, dict_series) _list = [] itemlist = find_episodes(item) for item in itemlist: Title = re.sub(r'\d+x\d+ - ', '', item.title) if item.action == 'findvideos': _list.append(Title) selected = platformtools.dialog_multiselect( config.get_localized_string(70734), _list) # if len(selected) > 0: for select in selected: specials.append( int(scrapertools.find_single_match(_list[select], r'(\d+)'))) dict_renumerate[TAG_SPECIAL] = specials dict_renumerate[TAG_MODE] = False dict_renumerate[TAG_TYPE] = 'auto' dict_renumerate[TAG_EPISODE] = '' write(item, dict_series) # xbmc.executebuiltin("Container.Refresh") else: message = config.get_localized_string(60444) heading = item.fulltitle.strip() platformtools.dialog_notification(heading, message)
def semiautomatic_config_item(item): log() # Configurazione Semi Automatica, utile in caso la numerazione automatica fallisca tvdb.find_and_set_infoLabels(item) item.channel = item.from_channel dict_series = jsontools.get_node_from_file(item.channel, TAG_TVSHOW_RENUMERATE) title = item.show # Trova l'ID della serie while not item.infoLabels['tvdb_id']: try: item.show = platformtools.dialog_input(default=item.show, heading=config.get_localized_string(30112)) # <- Enter title to search tvdb.find_and_set_infoLabels(item) except: heading = config.get_localized_string(70704) # <- TMDB ID (0 to cancel) info = platformtools.dialog_numeric(0, heading) item.infoLabels['tvdb_id'] = '0' if info == '' else info if item.infoLabels['tvdb_id']: ID = item.infoLabels['tvdb_id'] dict_renumerate = {TAG_ID: ID} dict_series[title] = dict_renumerate # Trova la Stagione if any( word in title.lower() for word in ['specials', 'speciali'] ): heading = config.get_localized_string(70686) # <- Enter the number of the starting season (for specials) season = platformtools.dialog_numeric(0, heading, '0') dict_renumerate[TAG_SEASON] = season elif RepresentsInt(title.split()[-1]): heading = config.get_localized_string(70686) # <- Enter the number of the starting season (for season > 1) season = platformtools.dialog_numeric(0, heading, title.split()[-1]) dict_renumerate[TAG_SEASON] = season else: heading = config.get_localized_string(70686) # <- Enter the number of the starting season (for season 1) season = platformtools.dialog_numeric(0, heading, '1') dict_renumerate[TAG_SEASON] = season mode = platformtools.dialog_yesno(config.get_localized_string(70687), config.get_localized_string(70688), nolabel=config.get_localized_string(30023), yeslabel=config.get_localized_string(30022)) if mode == True: dict_renumerate[TAG_MODE] = False if dict_series[title].has_key(TAG_SPECIAL): specials = dict_renumerate[TAG_SPECIAL] else: specials = [] jsontools.update_node(dict_series, item.channel, TAG_TVSHOW_RENUMERATE)[0] _list = [] # channel = __import__('channels.' + item.channel, fromlist=["channels.%s" % item.channel]) itemlist = find_episodes(item) for item in itemlist: Title = re.sub(r'\d+x\d+ - ', '', item.title) if item.action == 'findvideos': _list.append(Title) selected = platformtools.dialog_multiselect(config.get_localized_string(70734), _list) # if len(selected) > 0: for select in selected: specials.append(int(scrapertoolsV2.find_single_match(_list[select],r'(\d+)'))) dict_renumerate[TAG_SPECIAL] = specials # stop = False # while not stop: # heading = config.get_localized_string(70718) + str(specials) # special = platformtools.dialog_numeric(0, heading, '') # if special: # specials.append(int(special)) # dict_renumerate[TAG_SPECIAL] = specials # else: stop = True dict_renumerate[TAG_MODE] = False dict_renumerate[TAG_TYPE] = 'auto' # Imposta la voce Episode dict_renumerate[TAG_EPISODE] = '' # Scrive nel json jsontools.update_node(dict_series, item.channel, TAG_TVSHOW_RENUMERATE)[0] xbmc.executebuiltin("Container.Refresh") else: message = config.get_localized_string(60444) heading = item.show.strip() platformtools.dialog_notification(heading, message)