コード例 #1
0
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
コード例 #2
0
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
コード例 #3
0
ファイル: search.py プロジェクト: linuxvalley/addon
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
コード例 #4
0
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
コード例 #5
0
ファイル: autorenumber.py プロジェクト: myarchives/tes1
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))
コード例 #6
0
ファイル: autorenumber.py プロジェクト: myarchives/tes1
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)
コード例 #7
0
ファイル: autorenumber.py プロジェクト: max00xam/addon
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)