示例#1
0
def add_season(data=None):

    logger.debug("data {0}".format(data))
    heading = "Introduzca el número de la temporada"
    # default = 2
    # se reordena la lista
    list_season_episode = data
    if list_season_episode:
        list_season_episode.sort(key=lambda el: int(el[0]), reverse=False)

    # if list_season_episode:
    #     # mostrar temporada + 1 de la lista
    #     # TODO buscar la primera posicion libre
    #     default = list_season_episode[0][0]+1

    season = platformtools.dialog_numeric(0, heading)  # , str(default))
    for element in list_season_episode:
        if int(season) == element[0]:
            platformtools.dialog_notification("No se añade la temporada", "Ya existe, edíte la existente")
            return

    # si hemos insertado un valor en la temporada
    if season != "" and int(season) > 0:
        heading = "Introduzca el número de episodio desde que empieza la temporada"
        # default = 0
        # if list_season_episode:
        #     for e in list_season_episode:
        #         # mostrar suma episodios de la lista
        #         # sumar hasta el indice del primer libre encontrado
        #         default += e[1]
        episode = platformtools.dialog_numeric(0, heading)  # , str(default))

        # si hemos insertado un valor en el episodio
        if episode != "":
            if list_season_episode:
                list_season_episode.insert(0, [int(season), int(episode)])
                new_list_season_episode = list_season_episode[:]
                return new_list_season_episode
            else:
                return [[int(season), int(episode)]]
示例#2
0
        def onClick(self, control_id):
            ## FIRST SECTION
            if control_id in [S]:
                selected = platformtools.dialog_numeric(
                    0, config.get_localized_string(70825),
                    self.getControl(S).getLabel())
                if selected: s = self.getControl(S).setLabel(selected)
            elif control_id in [E]:
                selected = platformtools.dialog_numeric(
                    0, config.get_localized_string(70826),
                    self.getControl(E).getLabel())
                if selected: e = self.getControl(E).setLabel(selected)
            # OPEN SPECIALS OR OK
            if control_id in [O, SS]:
                s = self.getControl(S).getLabel()
                e = self.getControl(E).getLabel()
                self.season = int(s)
                self.episode = int(e)
                if control_id in [O]:
                    self.close()
                elif control_id in [SS]:
                    self.getControl(SELECT).setVisible(False)
                    self.getControl(SPECIALS).setVisible(True)
                    self.setFocusId(OK)
            # OPEN MANUAL
            elif control_id in [M]:
                self.getControl(INFO).setLabel(
                    typo(
                        config.get_localized_string(70823) + self.title,
                        'bold'))
                self.mode = True
                if self.episodes:
                    items = []
                    se = '1'
                    ep = '1'
                    for item in self.items:
                        if int(item.getLabel()) <= len(self.episodes) - 1:
                            se, ep = self.episodes[item.getLabel()].split('x')
                        else:
                            ep = str(int(ep) + 1)
                        item.setProperties({'season': se, "episode": ep})
                        items.append(item)
                        self.seasons[item.getLabel()] = '%sx%s' % (se, ep)
                    self.items = items
                else:
                    self.makerenumber()
                self.addseasons()
                season = self.getControl(MSEASONS).getSelectedItem().getLabel()
                self.getControl(MSEP).reset()
                self.getControl(MSEP).addItems(self.episodes[season])
                self.getControl(MLIST).addItems(self.items)
                self.getControl(SELECT).setVisible(False)
                self.getControl(MANUAL).setVisible(True)
                self.setFocusId(OK)
            # CLOSE
            elif control_id in [C]:
                self.Exit = True
                self.close()
            # DELETE
            if control_id in [D]:
                self.Exit = True
                self.dictSeries.pop(self.title)
                write(self.item, self.dictSeries)
                self.close()

            ## SPECIAL SECTION
            # ADD TO SPECIALS
            p1 = self.getControl(SELECTED).getSelectedPosition()
            if control_id in [LIST]:
                item = self.getControl(LIST).getSelectedItem()
                it = xbmcgui.ListItem(str(len(self.selected) + 1))
                it.setProperty('title', item.getLabel())
                self.selected.append(it)
                index = self.getControl(SELECTED).getSelectedPosition()
                self.getControl(SELECTED).reset()
                self.getControl(SELECTED).addItems(self.selected)
                self.getControl(SELECTED).selectItem(index)

                index = self.getControl(LIST).getSelectedPosition()
                self.items.pop(index)
                self.getControl(LIST).reset()
                self.getControl(LIST).addItems(self.items)
                if index == len(self.items): index -= 1
                self.getControl(LIST).selectItem(index)
            # MOVE SPECIALS
            elif control_id in [SU]:
                p2 = p1 - 1
                if p2 > -1:
                    self.selected[p1], self.selected[p2] = self.selected[
                        p2], self.selected[p1]
                    for i, it in enumerate(self.selected):
                        it.setLabel(str(i + 1))
                        break
                    self.getControl(SELECTED).reset()
                    self.getControl(SELECTED).addItems(self.selected)
                    self.getControl(SELECTED).selectItem(p2)

            elif control_id in [SD]:
                p2 = p1 + 1
                if p2 < len(self.selected):
                    self.selected[p1], self.selected[p2] = self.selected[
                        p2], self.selected[p1]
                    for i, it in enumerate(self.selected):
                        it.setLabel(str(i + 1))
                        break
                    self.getControl(SELECTED).reset()
                    self.getControl(SELECTED).addItems(self.selected)
                    self.getControl(SELECTED).selectItem(p2)
            # REMOVE FROM SPECIALS
            elif control_id in [SR]:
                item = self.getControl(SELECTED).getSelectedItem()
                it = xbmcgui.ListItem(item.getProperty('title'))
                if int(item.getProperty('title')) < int(
                        self.items[-1].getLabel()):
                    for i, itm in enumerate(self.items):
                        if int(itm.getLabel()) > int(
                                item.getProperty('title')):
                            self.items.insert(i, it)
                            break
                else:
                    self.items.append(it)
                self.getControl(LIST).reset()
                self.getControl(LIST).addItems(self.items)
                index = self.getControl(SELECTED).getSelectedPosition()
                self.selected.pop(index)
                self.getControl(SELECTED).reset()
                self.getControl(SELECTED).addItems(self.selected)

                if index == len(self.selected): index -= 1
                self.getControl(SELECTED).selectItem(index)
            # RELOAD SPECIALS
            if control_id in [SELECTED]:
                epnumber = platformtools.dialog_numeric(
                    0, config.get_localized_string(60386))
                it = self.getControl(SELECTED).getSelectedItem()
                it.setLabel(str(epnumber))
                self.selected.sort(key=lambda it: int(it.getLabel()))
                for i, it in enumerate(self.selected):
                    if it.getLabel() == epnumber: pos = i
                    self.selected.sort(key=lambda it: int(it.getLabel()))
                    self.getControl(SELECTED).reset()
                    self.getControl(SELECTED).addItems(self.selected)
                    self.getControl(SELECTED).selectItem(pos)
                    break
            if len(self.selected) > 0:
                self.getControl(SPECIALCOMMANDS).setVisible(True)
            else:
                self.getControl(SPECIALCOMMANDS).setVisible(False)

            ## MANUAL SECTION
            # SELECT SEASON EPISODE (MANUAL)
            if control_id in [MS, ME]:
                s = int(
                    self.getControl(MLIST).getSelectedItem().getProperty(
                        'season'))
                e = int(
                    self.getControl(MLIST).getSelectedItem().getProperty(
                        'episode'))
                pos = self.getControl(MLIST).getSelectedPosition()
                if control_id in [MS]:
                    selected = platformtools.dialog_numeric(
                        0, config.get_localized_string(70825), str(s))
                    if selected: s = int(selected)
                elif control_id in [ME]:
                    selected = platformtools.dialog_numeric(
                        0, config.get_localized_string(70826), str(e))
                    if selected: e = int(selected)
                if s != self.season or e != self.episode:
                    self.season = s
                    self.episode = 1 if s != self.season else e
                    self.makerenumber(pos)
                    self.addseasons()
                    season = self.getControl(
                        MSEASONS).getSelectedItem().getLabel()
                    self.getControl(MSEP).reset()
                    self.getControl(MSEP).addItems(self.episodes[season])
                    self.getControl(MLIST).reset()
                    self.getControl(MLIST).addItems(self.items)
                    self.getControl(MLIST).selectItem(pos)
            # OK
            if control_id in [OK]:
                for it in self.selected:
                    self.specials[int(
                        it.getProperty('title'))] = '0x' + it.getLabel()
                self.close()
            # CLOSE
            elif control_id in [CLOSE]:
                self.Exit = True
                self.close()
示例#3
0
def make_list(itemlist, item, typography, dict_series, ID, Season, Episode,
              Mode, title):
    info()
    exist = True
    item.infoLabels['tvdb_id'] = ID
    tvdb.set_infoLabels_item(item)
    FirstOfSeason = 0

    EpisodeDict = json.loads(base64.b64decode(Episode)) if Episode else {}
    Special = dict_series[title][TAG_SPECIAL] if TAG_SPECIAL in dict_series[
        title] else []
    EpList = json.loads(base64.b64decode(dict_series[title][TAG_EPLIST])
                        ) if TAG_EPLIST in dict_series[title] else []
    Pages = dict_series[title][TAG_CHECK] if TAG_CHECK in dict_series[
        title] else [1]

    # Ricava Informazioni da TVDB
    checkpages = []
    check = True
    Page = Pages[-1]

    while exist:
        if check:
            for page in Pages:
                data = tvdb.otvdb_global.get_list_episodes(ID, page)
                for episodes in data['data']:
                    if episodes['firstAired'] and [
                            episodes['firstAired'], episodes['airedSeason'],
                            episodes['airedEpisodeNumber']
                    ] not in EpList:
                        EpList.append([
                            episodes['firstAired'], episodes['airedSeason'],
                            episodes['airedEpisodeNumber']
                        ])
                    else:
                        if page not in checkpages:
                            checkpages.append(page)
        check = False

        data = tvdb.otvdb_global.get_list_episodes(ID, Page)
        if data:
            Page = Page + 1
            for episodes in data['data']:
                if episodes['firstAired'] and [
                        episodes['firstAired'], episodes['airedSeason'],
                        episodes['airedEpisodeNumber']
                ] not in EpList:
                    EpList.append([
                        episodes['firstAired'], episodes['airedSeason'],
                        episodes['airedEpisodeNumber']
                    ])
        else:
            if page not in checkpages:
                checkpages.append(Page - 1)
            exist = False

    EpList.sort()

    dict_series[title][TAG_CHECK] = checkpages
    EpList = base64.b64encode(json.dumps(EpList).encode())
    dict_series[title][TAG_EPLIST] = EpList.decode()
    write(item, dict_series)

    # Crea Dizionari per la numerazione
    if EpList:
        EpList = json.loads(base64.b64decode(dict_series[title][TAG_EPLIST]))
        specials = []
        regular = {}
        complete = {}
        allep = 1
        ep = 1
        specialep = 0
        for episode in EpList:
            complete[allep] = [
                str(episode[1]) + 'x' + str(episode[2]), episode[0]
            ]
            if episode[1] == 0:
                specials.append(allep)
                specialep = specialep + 1
            else:
                regular[ep] = [
                    str(episode[1]) + 'x' + str(episode[2]),
                    str(episode[0]), allep - 1
                ]
                ep = ep + 1
            allep = allep + 1

        # seleziona l'Episodio di partenza
        if int(Season) > 1:
            for numbers, data in regular.items():
                if data[0] == Season + 'x1':
                    FirstOfSeason = numbers - 1

        if Mode == True: Special = specials

        addiction = 0
        for item in itemlist:
            # Otiene Numerazione Episodi
            scraped_ep = scrapertools.find_single_match(
                re.sub(r'\[[^\]]+\]', '', item.title), r'\d+')
            if scraped_ep:
                episode = int(scraped_ep)
                number = episode + FirstOfSeason - addiction
                count = number + addiction
                # Crea Dizionario Episodi

                if episode == 0:
                    EpisodeDict[str(episode)] = str(
                        complete[regular[FirstOfSeason + 1][2]][0])
                elif addiction < len(Special):
                    if episode in Special:
                        try:
                            season = complete[regular[count][2]][0]
                            EpisodeDict[str(episode)] = str(
                                complete[regular[count][2]][0]
                            ) if season.startswith(
                                '0') else '0x' + platformtools.dialog_numeric(
                                    0, item.title + '?', '')

                        except:
                            EpisodeDict[
                                str(episode
                                    )] = '0x' + platformtools.dialog_numeric(
                                        0, item.title + '?', '')
                        addiction = addiction + 1
                    elif number <= len(regular):
                        EpisodeDict[str(episode)] = str(regular[number][0])
                    else:
                        try:
                            EpisodeDict[str(episode)] = str(
                                complete[regular[number + 2][2]][0])
                        except:
                            EpisodeDict[str(episode)] = '0x0'
                elif number <= len(regular) and number in regular:
                    EpisodeDict[str(episode)] = str(regular[number][0])
                else:
                    try:
                        EpisodeDict[str(episode)] = str(
                            complete[regular[number + 2][2]][0])
                    except:
                        EpisodeDict[str(episode)] = '0x0'

                # Aggiunge numerazione agli Episodi

                item.title = typo(EpisodeDict[str(episode)] + ' - ',
                                  typography) + item.title

        # Scrive Dizionario Episodi sul json
        EpisodeDict = base64.b64encode(json.dumps(EpisodeDict).encode())
        dict_series[title][TAG_EPISODE] = EpisodeDict.decode()
        write(item, dict_series)

    else:
        heading = config.get_localized_string(70704)
        ID = platformtools.dialog_numeric(0, heading)
        dict_series[title][TAG_ID] = ID
        write(item, dict_series)
        if ID == '0':
            return itemlist
        else:
            return make_list(itemlist, item, typography, dict_series, ID,
                             Season, Episode, Mode, title)
示例#4
0
def manual_renumeration(item, modify=False):
    info()
    _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))
示例#5
0
def semiautomatic_config_item(item):
    info()
    # Configurazione Semi Automatica, utile in caso la numerazione automatica fallisca

    tvdb.find_and_set_infoLabels(item)
    item.channel = item.from_channel if item.from_channel else item.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)
示例#6
0
def make_list(itemlist, item, typography, dict_series, ID, SEASON, EPISODE, MODE, TITLE):
    log()
    exist = True
    item.infoLabels['tvdb_id'] = ID
    tvdb.set_infoLabels_item(item)
    FirstOfSeason= 0

    if EPISODE: EpisodeDict = json.loads(base64.b64decode(EPISODE))
    else: EpisodeDict = {}
    try: SPECIAL = dict_series[TITLE][TAG_SPECIAL]
    except: SPECIAL = []
    try: EpList = json.loads(base64.b64decode(dict_series[TITLE][TAG_EPLIST]))
    except: EpList = []
    try: Pages = dict_series[TITLE][TAG_CHECK]
    except: Pages = [1]

    # Ricava Informazioni da TVDB
    checkpages = []
    check = True
    Page = Pages[-1]

    while exist:
        if check:
            for page in Pages:
                data = tvdb.otvdb_global.get_list_episodes(ID,page)
                for episodes in data['data']:
                    if episodes['firstAired'] and [episodes['firstAired'], episodes['airedSeason'], episodes['airedEpisodeNumber']] not in EpList:
                        EpList.append([episodes['firstAired'], episodes['airedSeason'], episodes['airedEpisodeNumber']])
                    else:
                        if page not in checkpages:
                            checkpages.append(page)
        check = False

        data = tvdb.otvdb_global.get_list_episodes(ID,Page)
        if data:
            Page = Page + 1
            for episodes in data['data']:
                if episodes['firstAired'] and [episodes['firstAired'], episodes['airedSeason'], episodes['airedEpisodeNumber']] not in EpList:
                    EpList.append([episodes['firstAired'], episodes['airedSeason'], episodes['airedEpisodeNumber']])
        else:
            if page not in checkpages:
                checkpages.append(Page -1)
            exist = False

    EpList.sort()

    dict_series[TITLE][TAG_CHECK] = checkpages
    EpList = base64.b64encode(json.dumps(EpList))
    dict_series[TITLE][TAG_EPLIST] = EpList
    jsontools.update_node(dict_series, item.channel, TAG_TVSHOW_RENUMERATE)[0]

    # Crea Dizionari per la numerazione
    if EpList:
        EpList = json.loads(base64.b64decode(dict_series[TITLE][TAG_EPLIST]))
        specials = []
        regular = {}
        complete = {}
        allep = 1
        ep = 1
        specialep = 0
        for episode in EpList:
            complete[allep] = [str(episode[1]) + 'x' + str(episode[2]), episode[0]]
            if episode[1] == 0:
                specials.append(allep)
                specialep = specialep + 1
            else:
                regular[ep] = [str(episode[1]) + 'x' + str(episode[2]), str(episode[0]), allep - 1]
                ep = ep + 1
            allep = allep + 1

        # seleziona l'Episodio di partenza
        if int(SEASON) > 1:
            for numbers, data in regular.items():
                if data[0] == SEASON + 'x1':
                    FirstOfSeason = numbers - 1

        if MODE == True: SPECIAL = specials

        addiction = 0
        for item in itemlist:
            # Otiene Numerazione Episodi
            if config.get_localized_string(30992) not in item.title:
                episode = int(scrapertoolsV2.find_single_match(item.title, r'\d+'))
                number = episode + FirstOfSeason - addiction
                count = number + addiction
                # Crea Dizionario Episodi

                if episode == 0:
                    EpisodeDict[str(episode)] = str(complete[regular[FirstOfSeason+1][2]][0])
                elif addiction < len(SPECIAL):
                    if episode in SPECIAL:
                        try:
                            season = complete[regular[count][2]][0]
                            EpisodeDict[str(episode)] = str(complete[regular[count][2]][0]) if season.startswith( '0' ) else '0x' + platformtools.dialog_numeric(0, item.title + '?', '')

                        except:
                            EpisodeDict[str(episode)] = '0x' + platformtools.dialog_numeric(0, item.title + '?', '')
                        addiction = addiction + 1
                    elif number <= len(regular):
                        EpisodeDict[str(episode)] = str(regular[number][0])
                    else:
                        try: EpisodeDict[str(episode)] = str(complete[regular[number+2][2]][0])
                        except: EpisodeDict[str(episode)] = '0x0'
                elif number <= len(regular) and regular.has_key(number):
                    EpisodeDict[str(episode)] = str(regular[number][0])
                else:
                    try: EpisodeDict[str(episode)] = str(complete[regular[number+2][2]][0])
                    except: EpisodeDict[str(episode)] = '0x0'

                # Aggiunge numerazione agli Episodi

                item.title = typo(EpisodeDict[str(episode)] + ' - ', typography) + item.title

        # Scrive Dizionario Episodi sul json
        EpisodeDict = base64.b64encode(json.dumps(EpisodeDict))
        dict_series[TITLE][TAG_EPISODE] = EpisodeDict
        jsontools.update_node(dict_series, item.channel, TAG_TVSHOW_RENUMERATE)[0]

    else:
        heading = config.get_localized_string(70704)
        ID = platformtools.dialog_numeric(0, heading)
        dict_series[TITLE][TAG_ID] = ID
        jsontools.update_node(dict_series, item.channel, TAG_TVSHOW_RENUMERATE)[0]
        if ID == '0':
            return itemlist
        else:
            return make_list(itemlist, item, typography, dict_series, ID, SEASON, EPISODE, MODE, TITLE)
示例#7
0
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)
示例#8
0
def set_skip_time(item):

    heading = "Introduzca en segundos la duración de la Intro"
    seconds = int(platformtools.dialog_numeric(0, heading, default=""))
    return save_skip_time(seconds, item)
示例#9
0
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 dellla 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

        ########### PROVVISORIO ###################
        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 == 1:
            dict_renumerate[TAG_MODE] = False
            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
        # Richede se ci sono speciali nella stagione
        # 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 == 0: dict_renumerate[TAG_MODE] = False
        # else:
        #     select = platformtools.dialog_yesno(config.get_localized_string(70687), config.get_localized_string(70717), nolabel=config.get_localized_string(30023), yeslabel=config.get_localized_string(30022))
        #     if select == 0:
        #         dict_renumerate[TAG_MODE] = False
        #         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
        #     else:
        #         dict_renumerate[TAG_MODE] = True
        ########### PROVVISORIO ###################

        # Imposta la voce Episode
        dict_renumerate[TAG_EPISODE] = ''
        # Scrive nel json
        jsontools.update_node(dict_series, item.channel,
                              TAG_TVSHOW_RENUMERATE)[0]

    else:
        message = config.get_localized_string(60444)
        heading = item.show.strip()
        platformtools.dialog_notification(heading, message)
示例#10
0
def make_list(itemlist, item, typography, dict_series, ID, SEASON, EPISODE,
              MODE, TITLE):
    from core import support
    log()
    page = 1
    EpList = []
    EpisodeDict = {}
    exist = True
    item.infoLabels['tvdb_id'] = ID
    tvdb.set_infoLabels_item(item)
    FirstOfSeason = 0
    try:
        SPECIAL = dict_series[TITLE][TAG_SPECIAL]
    except:
        SPECIAL = []

    # Ricava Informazioni da TVDB
    while exist:
        data = tvdb.otvdb_global.get_list_episodes(ID, page)
        if data: page = page + 1
        else: exist = False

        if data:
            for episodes in data['data']:
                EpList.append([
                    episodes['firstAired'], episodes['airedSeason'],
                    episodes['airedEpisodeNumber']
                ])
        EpList.sort()
        log(EpList)

    # Crea Dizionari per la numerazione
    if EpList:
        specials = []
        regular = {}
        complete = {}
        allep = 1
        ep = 0
        specialep = 0
        for episode in EpList:
            complete[allep] = [
                str(episode[1]) + 'x' + str(episode[2]), episode[0]
            ]
            if episode[1] == 0:
                specials.append(allep)
                specialep = specialep + 1
            else:
                regular[ep] = [
                    str(episode[1]) + 'x' + str(episode[2]),
                    str(episode[0]), allep - 1
                ]
                ep = ep + 1
            allep = allep + 1

        # seleziona l'Episodio di partenza
        if int(SEASON) > 1:
            for numbers, data in regular.items():
                if data[0] == SEASON + 'x1':
                    FirstOfSeason = numbers - 1

        if MODE == True: SPECIAL = specials
        log(SPECIAL)
        log(complete)
        log(regular)

        addiction = 0
        for item in itemlist:
            # Otiene Numerazione Episodi
            episode = int(scrapertoolsV2.find_single_match(item.title, r'\d+'))
            log('EPISODE= ', episode)
            number = episode + FirstOfSeason - addiction
            count = number + addiction
            # find = episode + FirstOfSeason
            # log('FIND= ',find, ' ',str(episode) + ' ' + str(FirstOfSeason))
            # Crea Dizionario Episodi

            # log(episode, ' ', number, ' ', count)
            if episode == 0:
                EpisodeDict[str(episode)] = str(
                    complete[regular[FirstOfSeason + 1][2]][0])
            elif addiction < len(SPECIAL):
                if episode in SPECIAL:
                    season = complete[regular[count][2]][0]
                    EpisodeDict[str(episode)] = str(
                        complete[regular[count][2]][0]) if season.startswith(
                            '0') else '0x' + platformtools.dialog_numeric(
                                0, item.title + '?', '')
                    addiction = addiction + 1
                else:
                    EpisodeDict[str(episode)] = str(regular[number][0])
            elif number <= len(regular):
                EpisodeDict[str(episode)] = str(regular[number][0])
            else:
                try:
                    EpisodeDict[str(episode)] = str(complete[regular[number +
                                                                     2][2]][0])
                except:
                    EpisodeDict[str(episode)] = '0x0'

            # Aggiunge numerazione agli Episodi

            item.title = typo(EpisodeDict[str(episode)] + ' - ',
                              typography) + item.title

        # Scrive Dizionario Episodi sul json
        EpisodeDict = base64.b64encode(json.dumps(EpisodeDict))
        dict_series[TITLE][TAG_EPISODE] = EpisodeDict
        jsontools.update_node(dict_series, item.channel,
                              TAG_TVSHOW_RENUMERATE)[0]

    else:
        heading = config.get_localized_string(70704)
        ID = platformtools.dialog_numeric(0, heading)
        dict_series[TITLE][TAG_ID] = ID
        jsontools.update_node(dict_series, item.channel,
                              TAG_TVSHOW_RENUMERATE)[0]
        if ID == '0':
            return itemlist
        else:
            return make_list(itemlist, item, typography, dict_series, ID,
                             SEASON, EPISODE, MODE, TITLE)