def mainlist(item): logger.info("pelisalacarta.channels.descargas mainlist") itemlist = [] status_color = {0: "orange", 1: "orange", 2: "green", 3: "red"} item.url = config.get_setting("downloadlistpath") series = {} for file in sorted(filetools.listdir(item.url)): file = os.path.join(item.url, file) # Saltamos los archivos que no sean .json if not file.endswith(".json"): continue i = Item().fromjson(filetools.read(file)) i.path = file i.thumbnail = i.contentThumbnail #item.serie_name significa que estamos desntro de una serie if not item.serie_name: # Series if i.contentType == "episode": serie_name = "%s [%s]" % (i.contentSerieName, i.contentChannel) if not serie_name in series: title = serie_name series = {serie_name: {"downloadProgress": [i.downloadProgress], "downloadStatus": [i.downloadStatus]}} i.title=title i.contentSeason = "" i.contntEpisodeNumber = "" i.action = "mainlist" i.serie_name = serie_name itemlist.append(i) else: series[serie_name]["downloadProgress"].append(i.downloadProgress) series[serie_name]["downloadStatus"].append(i.downloadStatus) # Peliculas elif i.contentType == "movie": i.title = "[COLOR %s][%i%%][/COLOR] %s" % (status_color[i.downloadStatus], i.downloadProgress, i.contentTitle) itemlist.append(i) else: if i.contentType == "episode": serie_name = "%s [%s]" % (i.contentSerieName, i.contentChannel) if serie_name == item.serie_name: i.title = "[COLOR %s][%i%%][/COLOR] %s" % (status_color[i.downloadStatus], i.downloadProgress, i.contentTitle) itemlist.append(i) for i in itemlist: if i.title in series: if any(series[i.title]["downloadStatus"]) == 3: downloadStatus = 3 elif all(series[i.title]["downloadStatus"]) == 2: downloadStatus = 2 else: downloadStatus = 1 downloadProgress = sum(series[i.title]["downloadProgress"]) / len(series[i.title]["downloadProgress"]) i.title = "[COLOR %s][%i%%][/COLOR] %s [%s]" % (status_color[downloadStatus], downloadProgress, i.contentSerieName, i.contentChannel) i.downloadStatus = downloadStatus estados = [i.downloadStatus for i in itemlist] # Si hay alguno completado if 2 in estados: itemlist.insert(0, Item(channel=item.channel, action="clean_ready", title="Eliminar descargas completadas", url=config.get_setting("downloadlistpath"), serie_name = item.serie_name)) # Si hay alguno con error if 3 in estados: itemlist.insert(0, Item(channel=item.channel, action="restart_error", title="Reiniciar descargas con error", url=config.get_setting("downloadlistpath"), serie_name = item.serie_name)) # Si hay alguno pendiente if 1 in estados or 0 in estados: itemlist.insert(0, Item(channel=item.channel, action="download_all", title="Descargar todo", url=config.get_setting("downloadlistpath"), serie_name = item.serie_name)) if len(itemlist): itemlist.insert(0, Item(channel=item.channel, action="clean_all", title="Eliminar todo", url=config.get_setting("downloadlistpath"), serie_name = item.serie_name)) return itemlist
def mainlist(item): logger.info("pelisalacarta.channels.descargas mainlist") itemlist = [] status_color = {0: "orange", 1: "orange", 2: "green", 3: "red"} item.url = config.get_setting("downloadlistpath") series = {} for file in sorted(filetools.listdir(item.url)): file = os.path.join(item.url, file) # Saltamos los archivos que no sean .json if not file.endswith(".json"): continue i = Item().fromjson(filetools.read(file)) i.path = file i.thumbnail = i.contentThumbnail #item.serie_name significa que estamos desntro de una serie if not item.serie_name: # Series if i.contentType == "episode": serie_name = "%s [%s]" % (i.contentSerieName, i.contentChannel) if not serie_name in series: title = serie_name series = { serie_name: { "downloadProgress": [i.downloadProgress], "downloadStatus": [i.downloadStatus] } } i.title = title i.contentSeason = "" i.contntEpisodeNumber = "" i.action = "mainlist" i.serie_name = serie_name itemlist.append(i) else: series[serie_name]["downloadProgress"].append( i.downloadProgress) series[serie_name]["downloadStatus"].append( i.downloadStatus) # Peliculas elif i.contentType == "movie": i.title = "[COLOR %s][%i%%][/COLOR] %s" % (status_color[ i.downloadStatus], i.downloadProgress, i.contentTitle) itemlist.append(i) else: if i.contentType == "episode": serie_name = "%s [%s]" % (i.contentSerieName, i.contentChannel) if serie_name == item.serie_name: i.title = "[COLOR %s][%i%%][/COLOR] %s" % (status_color[ i.downloadStatus], i.downloadProgress, i.contentTitle) itemlist.append(i) for i in itemlist: if i.title in series: if any(series[i.title]["downloadStatus"]) == 3: downloadStatus = 3 elif all(series[i.title]["downloadStatus"]) == 2: downloadStatus = 2 else: downloadStatus = 1 downloadProgress = sum(series[i.title]["downloadProgress"]) / len( series[i.title]["downloadProgress"]) i.title = "[COLOR %s][%i%%][/COLOR] %s [%s]" % ( status_color[downloadStatus], downloadProgress, i.contentSerieName, i.contentChannel) i.downloadStatus = downloadStatus estados = [i.downloadStatus for i in itemlist] # Si hay alguno completado if 2 in estados: itemlist.insert( 0, Item(channel=item.channel, action="clean_ready", title="Eliminar descargas completadas", url=config.get_setting("downloadlistpath"), serie_name=item.serie_name)) # Si hay alguno con error if 3 in estados: itemlist.insert( 0, Item(channel=item.channel, action="restart_error", title="Reiniciar descargas con error", url=config.get_setting("downloadlistpath"), serie_name=item.serie_name)) # Si hay alguno pendiente if 1 in estados or 0 in estados: itemlist.insert( 0, Item(channel=item.channel, action="download_all", title="Descargar todo", url=config.get_setting("downloadlistpath"), serie_name=item.serie_name)) if len(itemlist): itemlist.insert( 0, Item(channel=item.channel, action="clean_all", title="Eliminar todo", url=config.get_setting("downloadlistpath"), serie_name=item.serie_name)) return itemlist