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)]]
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()
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)
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))
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)
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)
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)
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)
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)
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)