def update(path, p_dialog, i, t, serie, overwrite):
    logger.info("Actualizando " + path)
    insertados_total = 0

    # logger.debug("%s: %s" %(serie.contentSerieName,str(list_canales) ))
    for channel, url in serie.library_urls.items():
        serie.channel = channel
        serie.url = url

        heading = 'Actualizando biblioteca....'
        p_dialog.update(int(math.ceil((i + 1) * t)), heading, "%s: %s" % (serie.contentSerieName,
                                                                          serie.channel.capitalize()))
        try:
            pathchannels = filetools.join(config.get_runtime_path(), "channels", serie.channel + '.py')
            logger.info("Cargando canal: " + pathchannels + " " +
                        serie.channel)

            if serie.library_filter_show:
                serie.show = serie.library_filter_show.get(channel, serie.contentSerieName)

            obj = imp.load_source(serie.channel, pathchannels)
            itemlist = obj.episodios(serie)

            try:
                insertados, sobreescritos, fallidos = library.save_library_episodes(path, itemlist, serie, silent=True, overwrite=overwrite)
                insertados_total += insertados

            except Exception as ex:
                logger.info("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(serie.show))
            template = "An exception of type {0} occured. Arguments:\n{1!r}"
            message = template.format(type(ex).__name__, ex.args)
            logger.info(message)

    return (insertados_total > 0)
def main():
    if scrapertools.wait_for_internet(retry=10):
        # -- Update channels from repository streamondemand ------
        try:
            from core import update_channels
        except:
            logger.info(
                "streamondemand.library_service Error in update_channels")
        # ----------------------------------------------------------------------

        # -- Update servertools and servers from repository streamondemand ------
        try:
            from core import update_servers
        except:
            logger.info(
                "streamondemand.library_service Error in update_servers")
        # ----------------------------------------------------------------------

        logger.info("streamondemand.library_service Actualizando series...")
        p_dialog = None

        try:

            if config.get_setting("updatelibrary") == "true":
                heading = 'Aggiornamento biblioteca....'
                p_dialog = platformtools.dialog_progress_bg(
                    'streamondemand', 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.json"
                    ])

                # 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):
                    serie = Item().fromjson(filetools.read(tvshow_file))
                    path = filetools.dirname(tvshow_file)

                    logger.info("streamondemand.library_service serie=" +
                                serie.contentSerieName)
                    logger.info(
                        "streamondemand.library_service Actualizando " + path)
                    logger.info("streamondemand.library_service url " +
                                serie.url)
                    show_name = serie.contentTitle
                    if show_name == "":
                        show_name = serie.show
                    p_dialog.update(int(math.ceil((i + 1) * t)), heading,
                                    show_name)

                    # si la serie esta activa se actualiza
                    if serie.active:

                        try:
                            pathchannels = filetools.join(
                                config.get_runtime_path(), "channels",
                                serie.channel + '.py')
                            logger.info(
                                "streamondemand.library_service Cargando canal: "
                                + pathchannels + " " + serie.channel)

                            obj = imp.load_source(serie.channel, pathchannels)
                            itemlist = obj.episodios(serie)

                            try:
                                library.save_library_episodes(
                                    path, itemlist, serie, True)
                            except Exception as ex:
                                logger.info(
                                    "streamondemand.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(serie.show))
                            template = "An exception of type {0} occured. Arguments:\n{1!r}"
                            message = template.format(
                                type(ex).__name__, ex.args)
                            logger.info(message)

                p_dialog.close()

            else:
                logger.info(
                    "No actualiza la biblioteca, está desactivado en la configuración de streamondemand"
                )

        except Exception as ex:
            logger.info(
                "streamondemand.library_service 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.info(message)

            if p_dialog:
                p_dialog.close()
def main():
    logger.info("pelisalacarta.library_service Actualizando series...")
    p_dialog = None

    try:

        if config.get_setting("updatelibrary") == "true":
            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.json"])

            # 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):
                serie = Item().fromjson(filetools.read(tvshow_file))
                path = filetools.dirname(tvshow_file)

                logger.info("pelisalacarta.library_service serie="+serie.contentSerieName)
                logger.info("pelisalacarta.library_service Actualizando " + path)
                logger.info("pelisalacarta.library_service url " + serie.url)
                show_name = serie.contentTitle
                if show_name == "":
                    show_name = serie.show
                p_dialog.update(int(math.ceil((i+1) * t)), heading, show_name)

                # si la serie esta activa se actualiza
                if serie.active:

                    try:
                        pathchannels = filetools.join(config.get_runtime_path(), "channels", serie.channel + '.py')
                        logger.info("pelisalacarta.library_service Cargando canal: " + pathchannels + " " +
                                    serie.channel)

                        obj = imp.load_source(serie.channel, pathchannels)
                        itemlist = obj.episodios(serie)

                        try:
                            library.save_library_episodes(path, itemlist, serie, True)
                        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(serie.show))
                        template = "An exception of type {0} occured. Arguments:\n{1!r}"
                        message = template.format(type(ex).__name__, ex.args)
                        logger.info(message)

            p_dialog.close()


        else:
            logger.info("No actualiza la biblioteca, está desactivado en la configuración de pelisalacarta")

    except Exception as ex:
        logger.info("pelisalacarta.library_service 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.info(message)

        if p_dialog:
            p_dialog.close()
def main(overwrite=True):
    logger.info("pelisalacarta.library_service Actualizando series...")
    p_dialog = None

    try:

        if config.get_setting("updatelibrary") == "true":
            if not overwrite:  # No venimos del canal configuracion
                updatelibrary_wait = [0, 10000, 20000, 30000, 60000]
                wait = updatelibrary_wait[int(
                    config.get_setting("updatelibrary_wait"))]
                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):
                serie = Item().fromjson(filetools.read(tvshow_file, 1))
                path = filetools.dirname(tvshow_file)

                logger.info("pelisalacarta.library_service serie=" +
                            serie.contentSerieName)
                p_dialog.update(int(math.ceil((i + 1) * t)), heading,
                                serie.contentSerieName)

                if not serie.active:
                    continue

                # si la serie esta activa se actualiza
                logger.info("pelisalacarta.library_service Actualizando " +
                            path)

                # logger.debug("%s: %s" %(serie.contentSerieName,str(list_canales) ))
                for channel, url in serie.library_urls.items():
                    serie.channel = channel
                    serie.url = url

                    p_dialog.update(
                        int(math.ceil((i + 1) * t)), heading, "%s: %s" %
                        (serie.contentSerieName, serie.channel.capitalize()))
                    try:
                        pathchannels = filetools.join(
                            config.get_runtime_path(), "channels",
                            serie.channel + '.py')
                        logger.info(
                            "pelisalacarta.library_service Cargando canal: " +
                            pathchannels + " " + serie.channel)

                        if serie.library_filter_show:
                            serie.show = serie.library_filter_show.get(
                                channel, serie.contentSerieName)

                        obj = imp.load_source(serie.channel, pathchannels)
                        itemlist = obj.episodios(serie)

                        try:
                            library.save_library_episodes(path,
                                                          itemlist,
                                                          serie,
                                                          silent=True,
                                                          overwrite=overwrite)

                        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(
                                serie.show))
                        template = "An exception of type {0} occured. Arguments:\n{1!r}"
                        message = template.format(type(ex).__name__, ex.args)
                        logger.info(message)

            p_dialog.close()

        else:
            logger.info(
                "No actualiza la biblioteca, está desactivado en la configuración de pelisalacarta"
            )

    except Exception as ex:
        logger.info(
            "pelisalacarta.library_service 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.info(message)

        if p_dialog:
            p_dialog.close()
def main(overwrite=True):
    logger.info("pelisalacarta.library_service Actualizando series...")
    p_dialog = None

    try:

        if config.get_setting("updatelibrary") == "true":
            if not overwrite: # No venimos del canal configuracion
                updatelibrary_wait = [0, 10000, 20000, 30000, 60000]
                wait = updatelibrary_wait[int(config.get_setting("updatelibrary_wait"))]
                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):
                serie = Item().fromjson(filetools.read(tvshow_file, 1))
                path = filetools.dirname(tvshow_file)

                logger.info("pelisalacarta.library_service serie=" + serie.contentSerieName)
                p_dialog.update(int(math.ceil((i+1) * t)), heading, serie.contentSerieName)

                if not serie.active:
                    continue

                # si la serie esta activa se actualiza
                logger.info("pelisalacarta.library_service Actualizando " + path)

                # logger.debug("%s: %s" %(serie.contentSerieName,str(list_canales) ))
                for channel, url in serie.library_urls.items():
                    serie.channel = channel
                    serie.url = url

                    p_dialog.update(int(math.ceil((i + 1) * t)), heading, "%s: %s" % (serie.contentSerieName,
                                                                                      serie.channel.capitalize()))
                    try:
                        pathchannels = filetools.join(config.get_runtime_path(), "channels", serie.channel + '.py')
                        logger.info("pelisalacarta.library_service Cargando canal: " + pathchannels + " " +
                                    serie.channel)

                        if serie.library_filter_show:
                            serie.show = serie.library_filter_show.get(channel, serie.contentSerieName)

                        obj = imp.load_source(serie.channel, pathchannels)
                        itemlist = obj.episodios(serie)

                        try:
                            library.save_library_episodes(path, itemlist, serie, silent=True, overwrite=overwrite)

                        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(serie.show))
                        template = "An exception of type {0} occured. Arguments:\n{1!r}"
                        message = template.format(type(ex).__name__, ex.args)
                        logger.info(message)

            p_dialog.close()

        else:
            logger.info("No actualiza la biblioteca, está desactivado en la configuración de pelisalacarta")

    except Exception as ex:
        logger.info("pelisalacarta.library_service 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.info(message)

        if p_dialog:
            p_dialog.close()