def update_serie(item): logger.info() #logger.debug("item:\n" + item.tostring('\n')) heading = 'Actualizando serie....' p_dialog = platformtools.dialog_progress_bg('pelisalacarta', heading) p_dialog.update(0, heading, item.contentSerieName) import library_service if library_service.update(item.path, p_dialog, 1, 1, item, False) and config.is_xbmc(): library.update(folder=filetools.basename(item.path)) p_dialog.close()
def main(): logger.info("pelisalacarta.library_service Actualizando series...") directorio = library.join_path(config.get_library_path(), "SERIES") logger.info("directorio="+directorio) if not library.path_exists(directorio): library.make_dir(directorio) library.check_tvshow_xml() try: if config.get_setting("updatelibrary") == "true": data, dict_data = lib_data() heading = 'Actualizando biblioteca....' p_dialog = platformtools.dialog_progress_bg('pelisalacarta', heading) p_dialog.update(0, '') i = 0 # fix float porque la division se hace mal en python 2.x t = float(100) / len(dict_data.keys()) for tvshow_id in dict_data.keys(): logger.info("pelisalacarta.library_service serie="+dict_data[tvshow_id]["name"]) for channel in dict_data[tvshow_id]["channels"].keys(): carpeta = "{0} [{1}]".format(library.title_to_filename( dict_data[tvshow_id]["channels"][channel]["tvshow"].lower()), channel) # carpeta = dict_serie[tvshow_id]["channels"][channel]["path"] ruta = library.join_path(config.get_library_path(), "SERIES", carpeta) logger.info("pelisalacarta.library_service ruta =#"+ruta+"#") i += 1 if library.path_exists(ruta): logger.info("pelisalacarta.library_service Actualizando "+carpeta) logger.info("pelisalacarta.library_service url " + dict_data[tvshow_id]["channels"][channel]["url"]) p_dialog.update(int(math.ceil(i * t)), heading, dict_data[tvshow_id]["name"]) item = Item(url=dict_data[tvshow_id]["channels"][channel]["url"], show=dict_data[tvshow_id]["channels"][channel]["tvshow"], channel=channel) try: pathchannels = library.join_path(config.get_runtime_path(), 'channels', channel + '.py') logger.info("pelisalacarta.library_service Cargando canal " + pathchannels + " " + channel) obj = imp.load_source(channel, pathchannels) itemlist = obj.episodios(item) try: library.save_library_tvshow(item, itemlist) except Exception as ex: logger.info("pelisalacarta.library_service Error al guardar los capitulos de la serie") template = "An exception of type {0} occured. Arguments:\n{1!r}" message = template.format(type(ex).__name__, ex.args) logger.info(message) except Exception as ex: logger.error("Error al obtener los episodios de: {0}". format(dict_data[tvshow_id]["channels"][channel]["tvshow"])) template = "An exception of type {0} occured. Arguments:\n{1!r}" message = template.format(type(ex).__name__, ex.args) logger.info(message) else: logger.info("pelisalacarta.library_service No actualiza {0} (no existe el directorio)". format(dict_data[tvshow_id]["name"])) p_dialog.update(int(math.ceil(i * t)), 'Error al obtener ruta...', dict_data[tvshow_id]["name"]) p_dialog.close() library.update() else: logger.info("No actualiza la biblioteca, está desactivado en la configuración de pelisalacarta") except Exception as ex: import traceback logger.info(traceback.format_exc()) if p_dialog: p_dialog.close()
def check_for_update(overwrite=True): logger.info("Actualizando series...") p_dialog = None serie_actualizada = False hoy = datetime.date.today() try: if config.get_setting("updatelibrary", "biblioteca") != 0: config.set_setting("updatelibrary_last_check", hoy.strftime('%Y-%m-%d'), "biblioteca") if config.get_setting("updatelibrary", "biblioteca") == 1 and not overwrite: # "Actualizar al inicio" y No venimos del canal configuracion updatelibrary_wait = [0, 10000, 20000, 30000, 60000] wait = updatelibrary_wait[int(config.get_setting("updatelibrary_wait", "biblioteca"))] if wait > 0: import xbmc xbmc.sleep(wait) heading = 'Actualizando biblioteca....' p_dialog = platformtools.dialog_progress_bg('pelisalacarta', heading) p_dialog.update(0, '') show_list = [] for path, folders, files in filetools.walk(library.TVSHOWS_PATH): show_list.extend([filetools.join(path, f) for f in files if f == "tvshow.nfo"]) # fix float porque la division se hace mal en python 2.x t = float(100) / len(show_list) for i, tvshow_file in enumerate(show_list): head_nfo, serie = library.read_nfo(tvshow_file) path = filetools.dirname(tvshow_file) logger.info("serie=" + serie.contentSerieName) p_dialog.update(int(math.ceil((i+1) * t)), heading, serie.contentSerieName) interval = int(serie.active) # Podria ser del tipo bool if not serie.active: # si la serie no esta activa descartar continue # obtenemos las fecha de auctualizacion y de la proxima programada para esta serie update_next = serie.update_next if update_next: y, m, d = update_next.split('-') update_next = datetime.date(int(y), int(m), int(d)) else: update_next = hoy update_last = serie.update_last if update_last: y, m, d = update_last.split('-') update_last = datetime.date(int(y), int(m), int(d)) else: update_last = hoy # si la serie esta activa ... if overwrite or config.get_setting("updatetvshows_interval", "biblioteca") == 0: # ... forzar actualizacion independientemente del intervalo serie_actualizada = update(path, p_dialog, i, t, serie, overwrite) elif interval == 1 and update_next <= hoy: # ...actualizacion diaria serie_actualizada = update(path, p_dialog, i, t, serie, overwrite) if not serie_actualizada and update_last <= hoy - datetime.timedelta(days=7): # si hace una semana q no se actualiza, pasar el intervalo a semanal interval = 7 update_next = hoy + datetime.timedelta(days=interval) elif interval == 7 and update_next <= hoy: # ...actualizacion semanal serie_actualizada = update(path, p_dialog, i, t, serie, overwrite) if not serie_actualizada: if update_last <= hoy - datetime.timedelta(days=14): # si hace 2 semanas q no se actualiza, pasar el intervalo a mensual interval = 30 update_next += datetime.timedelta(days=interval) elif interval == 30 and update_next <= hoy: # ...actualizacion mensual serie_actualizada = update(path, p_dialog, i, t, serie, overwrite) if not serie_actualizada: update_next += datetime.timedelta(days=interval) if interval != int(serie.active) or update_next.strftime('%Y-%m-%d') != serie.update_next: serie.active = interval serie.update_next = update_next.strftime('%Y-%m-%d') filetools.write(tvshow_file, head_nfo + serie.tojson()) if serie_actualizada: # Actualizamos la biblioteca de Kodi library.update(folder=filetools.basename(path)) p_dialog.close() else: logger.info("No actualiza la biblioteca, está desactivado en la configuración de pelisalacarta") except Exception as ex: logger.error("Se ha producido un error al actualizar las series") template = "An exception of type {0} occured. Arguments:\n{1!r}" message = template.format(type(ex).__name__, ex.args) logger.error(message) if p_dialog: p_dialog.close()