Example #1
0
    def onSettingsChanged(self):
        logger.debug('settings changed')
        settings_post = config.get_all_settings_addon()
        from platformcode import xbmc_videolibrary

        if self.settings_pre.get('downloadpath', None) != settings_post.get(
                'downloadpath', None):
            xbmc_videolibrary.update_sources(
                settings_post.get('downloadpath', None),
                self.settings_pre.get('downloadpath', None))

        # si se ha cambiado la ruta de la videoteca llamamos a comprobar directorios para que lo cree y pregunte
        # automaticamente si configurar la videoteca
        if self.settings_pre.get("videolibrarypath", None) != settings_post.get("videolibrarypath", None) or \
                self.settings_pre.get("folder_movies", None) != settings_post.get("folder_movies", None) or \
                self.settings_pre.get("folder_tvshows", None) != settings_post.get("folder_tvshows", None):
            videolibrary.move_videolibrary(
                self.settings_pre.get("videolibrarypath", None),
                settings_post.get("videolibrarypath", None),
                self.settings_pre.get("folder_movies", None),
                settings_post.get("folder_movies", None),
                self.settings_pre.get("folder_tvshows", None),
                settings_post.get("folder_tvshows", None))

        # si se ha puesto que se quiere autoconfigurar y se había creado el directorio de la videoteca
        if not self.settings_pre.get("videolibrary_kodi",
                                     None) and settings_post.get(
                                         "videolibrary_kodi", None):
            xbmc_videolibrary.ask_set_content(silent=True)
        elif self.settings_pre.get(
                "videolibrary_kodi",
                None) and not settings_post.get("videolibrary_kodi", None):
            xbmc_videolibrary.clean()

        if self.settings_pre.get('addon_update_timer') != settings_post.get(
                'addon_update_timer'):
            schedule.clear('updater')
            self.scheduleUpdater()

        if self.update_setting != config.get_setting(
                "update",
                "videolibrary") or self.update_hour != config.get_setting(
                    "everyday_delay", "videolibrary") * 4:
            schedule.clear('videolibrary')
            self.scheduleVideolibrary()

        if self.settings_pre.get('elementum_on_seed') != settings_post.get(
                'elementum_on_seed') and settings_post.get(
                    'elementum_on_seed'):
            if not platformtools.dialog_yesno(
                    config.get_localized_string(70805),
                    config.get_localized_string(70806)):
                config.set_setting('elementum_on_seed', False)

        self.settings_pre = settings_post
Example #2
0
def move_videolibrary(current_path, new_path, current_movies_folder, new_movies_folder, current_tvshows_folder, new_tvshows_folder):
    logger.info()

    backup_current_path = current_path
    backup_new_path = new_path

    logger.info('current_path: ' + current_path)
    logger.info('new_path: ' + new_path)
    logger.info('current_movies_folder: ' + current_movies_folder)
    logger.info('new_movies_folder: ' + new_movies_folder)
    logger.info('current_tvshows_folder: ' + current_tvshows_folder)
    logger.info('new_tvshows_folder: ' + new_tvshows_folder)

    notify = False
    progress = platformtools.dialog_progress_bg(config.get_localized_string(20000), config.get_localized_string(80011))
    current_path = u'' + xbmc.translatePath(current_path)
    new_path = u'' + xbmc.translatePath(new_path)
    current_movies_path = u'' + filetools.join(current_path, current_movies_folder)
    new_movies_path = u'' + filetools.join(new_path, new_movies_folder)
    current_tvshows_path = u'' + filetools.join(current_path, current_tvshows_folder)
    new_tvshows_path = u'' + filetools.join(new_path, new_tvshows_folder)

    logger.info('current_movies_path: ' + current_movies_path)
    logger.info('new_movies_path: ' + new_movies_path)
    logger.info('current_tvshows_path: ' + current_tvshows_path)
    logger.info('new_tvshows_path: ' + new_tvshows_path)

    from platformcode import xbmc_videolibrary
    movies_path, tvshows_path = xbmc_videolibrary.check_sources(new_movies_path, new_tvshows_path)
    logger.info('check_sources: ' + str(movies_path) + ', ' + str(tvshows_path))
    if movies_path or tvshows_path:
        if not movies_path:
            filetools.rmdir(new_movies_path)
        if not tvshows_path:
            filetools.rmdir(new_tvshows_path)
        config.set_setting("videolibrarypath", backup_current_path)
        config.set_setting("folder_movies", current_movies_folder)
        config.set_setting("folder_tvshows", current_tvshows_folder)
        xbmc_videolibrary.update_sources(backup_current_path, backup_new_path)
        progress.update(100)
        xbmc.sleep(1000)
        progress.close()
        platformtools.dialog_ok(config.get_localized_string(20000), config.get_localized_string(80028))
        return

    config.verify_directories_created()
    progress.update(10, config.get_localized_string(20000) + '\n' + config.get_localized_string(80012))
    if current_movies_path != new_movies_path:
        if filetools.listdir(current_movies_path):
            dir_util.copy_tree(current_movies_path, new_movies_path)
            notify = True
        filetools.rmdirtree(current_movies_path)
    progress.update(40)
    if current_tvshows_path != new_tvshows_path:
        if filetools.listdir(current_tvshows_path):
            dir_util.copy_tree(current_tvshows_path, new_tvshows_path)
            notify = True
        filetools.rmdirtree(current_tvshows_path)
    progress.update(70)
    if current_path != new_path and not filetools.listdir(current_path) and not "plugin.video.kod\\videolibrary" in current_path:
        filetools.rmdirtree(current_path)

    xbmc_videolibrary.update_sources(backup_new_path, backup_current_path)
    if config.is_xbmc() and config.get_setting("videolibrary_kodi"):
        xbmc_videolibrary.update_db(backup_current_path, backup_new_path, current_movies_folder, new_movies_folder, current_tvshows_folder, new_tvshows_folder, progress)
    else:
        progress.update(100)
        xbmc.sleep(1000)
        progress.close()
    if notify:
        platformtools.dialog_notification(config.get_localized_string(20000), config.get_localized_string(80014), time=5000, sound=False)
Example #3
0
    def onSettingsChanged(self):
        logger.debug('settings changed')
        settings_post = config.get_all_settings_addon()
        if settings_post:  # backup settings
            filetools.copy(
                os.path.join(config.get_data_path(), "settings.xml"),
                os.path.join(config.get_data_path(), "settings.bak"), True)
            logger.debug({
                k: self.settings_pre[k]
                for k in self.settings_pre if k in settings_post
                and self.settings_pre[k] != settings_post[k]
            })
        from platformcode import xbmc_videolibrary

        if self.settings_pre.get('downloadpath', None) != settings_post.get(
                'downloadpath', None):
            xbmc_videolibrary.update_sources(
                settings_post.get('downloadpath', None),
                self.settings_pre.get('downloadpath', None))

        # If the path of the video library has been changed, we call to check directories so that it creates it and automatically asks if to configure the video library
        if self.settings_pre.get("videolibrarypath", None) and self.settings_pre.get("videolibrarypath", None) != settings_post.get("videolibrarypath", None) or \
            self.settings_pre.get("folder_movies", None) and self.settings_pre.get("folder_movies", None) != settings_post.get("folder_movies", None) or \
            self.settings_pre.get("folder_tvshows", None) and self.settings_pre.get("folder_tvshows", None) != settings_post.get("folder_tvshows", None):
            videolibrary.move_videolibrary(
                self.settings_pre.get("videolibrarypath", ''),
                settings_post.get("videolibrarypath", ''),
                self.settings_pre.get("folder_movies", ''),
                settings_post.get("folder_movies", ''),
                self.settings_pre.get("folder_tvshows", ''),
                settings_post.get("folder_tvshows", ''))

        # if you want to autoconfigure and the video library directory had been created
        if not self.settings_pre.get("videolibrary_kodi",
                                     None) and settings_post.get(
                                         "videolibrary_kodi", None):
            xbmc_videolibrary.ask_set_content(silent=True)
        elif self.settings_pre.get(
                "videolibrary_kodi",
                None) and not settings_post.get("videolibrary_kodi", None):
            xbmc_videolibrary.clean()

        if self.settings_pre.get('addon_update_timer') != settings_post.get(
                'addon_update_timer'):
            schedule.clear('updater')
            self.scheduleUpdater()

        if self.update_setting != config.get_setting(
                "update",
                "videolibrary") or self.update_hour != config.get_setting(
                    "everyday_delay", "videolibrary") * 4:
            schedule.clear('videolibrary')
            self.scheduleVideolibrary()

        if self.settings_pre.get('elementum_on_seed') != settings_post.get(
                'elementum_on_seed') and settings_post.get(
                    'elementum_on_seed'):
            if not platformtools.dialog_yesno(
                    config.get_localized_string(70805),
                    config.get_localized_string(70806)):
                config.set_setting('elementum_on_seed', False)

        self.settings_pre = settings_post
Example #4
0
def verify_directories_created():
    from platformcode import logger
    from core import filetools
    from platformcode import xbmc_videolibrary

    config_paths = [["videolibrarypath", "videolibrary"],
                    ["downloadpath", "downloads"],
                    ["downloadlistpath", "downloads/list"],
                    ["settings_path", "settings_channels"]]

    for path, default in config_paths:
        saved_path = get_setting(path)

        # video store
        if path == "videolibrarypath":
            if not saved_path:
                saved_path = xbmc_videolibrary.search_library_path()
                if saved_path:
                    set_setting(path, saved_path)

        if not saved_path:
            saved_path = "special://profile/addon_data/plugin.video." + PLUGIN_NAME + "/" + default
            set_setting(path, saved_path)

        saved_path = xbmc.translatePath(saved_path)
        if not filetools.exists(saved_path):
            logger.debug("Creating %s: %s" % (path, saved_path))
            filetools.mkdir(saved_path)

    config_paths = [["folder_movies", "Film"], ["folder_tvshows", "Serie TV"]]

    for path, default in config_paths:
        saved_path = get_setting(path)

        if not saved_path:
            saved_path = default
            set_setting(path, saved_path)

        content_path = filetools.join(get_videolibrary_path(), saved_path)
        if not filetools.exists(content_path):
            logger.debug("Creating %s: %s" % (path, content_path))

            # if the directory is created
            filetools.mkdir(content_path)

    from platformcode import xbmc_videolibrary
    xbmc_videolibrary.update_sources(get_setting("videolibrarypath"))
    xbmc_videolibrary.update_sources(get_setting("downloadpath"))

    try:
        from core import scrapertools
        # We look for the addon.xml file of the active skin
        skindir = filetools.join(xbmc.translatePath("special://home"),
                                 'addons', xbmc.getSkinDir(), 'addon.xml')
        if not os.path.isdir(skindir):
            return  # No need to show error in log if folder doesn't exist
        # We extract the name of the default resolution folder
        folder = ""
        data = filetools.read(skindir)
        res = scrapertools.find_multiple_matches(data, '(<res .*?>)')
        for r in res:
            if 'default="true"' in r:
                folder = scrapertools.find_single_match(r, 'folder="([^"]+)"')
                break

        # We check if it exists in the addon and if not, we create it
        default = filetools.join(get_runtime_path(), 'resources', 'skins',
                                 'Default')
        if folder and not filetools.exists(filetools.join(default, folder)):
            filetools.mkdir(filetools.join(default, folder))

        # We copy the file to said folder from the 720p folder if it does not exist or if the size is different
        if folder and folder != '720p':
            for root, folders, files in filetools.walk(
                    filetools.join(default, '720p')):
                for f in files:
                    if not filetools.exists(filetools.join(
                            default, folder, f)) or (filetools.getsize(
                                filetools.join(
                                    default, folder, f)) != filetools.getsize(
                                        filetools.join(default, '720p', f))):
                        filetools.copy(filetools.join(default, '720p', f),
                                       filetools.join(default, folder, f),
                                       True)
    except:
        import traceback
        logger.error("When checking or creating the resolution folder")
        logger.error(traceback.format_exc())
Example #5
0
def verify_directories_created():
    from platformcode import logger
    from core import filetools
    from platformcode import xbmc_videolibrary

    config_paths = [["videolibrarypath", "videolibrary"],
                    ["downloadpath", "downloads"],
                    ["downloadlistpath", "downloads/list"],
                    ["settings_path", "settings_channels"]]

    for path, default in config_paths:
        saved_path = get_setting(path)

        # videoteca
        if path == "videolibrarypath":
            if not saved_path:
                saved_path = xbmc_videolibrary.search_library_path()
                if saved_path:
                    set_setting(path, saved_path)

        if not saved_path:
            saved_path = "special://profile/addon_data/plugin.video." + PLUGIN_NAME + "/" + default
            set_setting(path, saved_path)

        saved_path = xbmc.translatePath(saved_path)
        if not filetools.exists(saved_path):
            logger.debug("Creating %s: %s" % (path, saved_path))
            filetools.mkdir(saved_path)

    config_paths = [["folder_movies", "Film"],
                    ["folder_tvshows", "Serie TV"]]

    for path, default in config_paths:
        saved_path = get_setting(path)

        if not saved_path:
            saved_path = default
            set_setting(path, saved_path)

        content_path = filetools.join(get_videolibrary_path(), saved_path)
        if not filetools.exists(content_path):
            logger.debug("Creating %s: %s" % (path, content_path))

            # si se crea el directorio
            filetools.mkdir(content_path)

    from platformcode import xbmc_videolibrary
    xbmc_videolibrary.update_sources(get_setting("videolibrarypath"))
    xbmc_videolibrary.update_sources(get_setting("downloadpath"))

    try:
        from core import scrapertools
        # Buscamos el archivo addon.xml del skin activo
        skindir = filetools.join(xbmc.translatePath("special://home"), 'addons', xbmc.getSkinDir(),
                                 'addon.xml')
        if not os.path.isdir(skindir): return # No hace falta mostrar error en el log si no existe la carpeta
        # Extraemos el nombre de la carpeta de resolución por defecto
        folder = ""
        data = filetools.read(skindir)
        res = scrapertools.find_multiple_matches(data, '(<res .*?>)')
        for r in res:
            if 'default="true"' in r:
                folder = scrapertools.find_single_match(r, 'folder="([^"]+)"')
                break

        # Comprobamos si existe en el addon y sino es así, la creamos
        default = filetools.join(get_runtime_path(), 'resources', 'skins', 'Default')
        if folder and not filetools.exists(filetools.join(default, folder)):
            filetools.mkdir(filetools.join(default, folder))

        # Copiamos el archivo a dicha carpeta desde la de 720p si éste no existe o si el tamaño es diferente
        if folder and folder != '720p':
            for root, folders, files in filetools.walk(filetools.join(default, '720p')):
                for f in files:
                    if not filetools.exists(filetools.join(default, folder, f)) or \
                            (filetools.getsize(filetools.join(default, folder, f)) !=
                                filetools.getsize(filetools.join(default, '720p', f))):
                        filetools.copy(filetools.join(default, '720p', f),
                                       filetools.join(default, folder, f),
                                       True)
    except:
        import traceback
        logger.error("Al comprobar o crear la carpeta de resolución")
        logger.error(traceback.format_exc())
Example #6
0
def open_settings():
    settings_pre = get_all_settings_addon()
    __settings__.openSettings()
    settings_post = get_all_settings_addon()

    # cb_validate_config (util para validar cambios realizados en el cuadro de dialogo)
    if settings_post.get('adult_aux_intro_password', None):
        # Hemos accedido a la seccion de Canales para adultos
        from platformcode import platformtools
        if 'adult_password' not in settings_pre:
            adult_password = set_setting('adult_password', '0000')
        else:
            adult_password = settings_pre['adult_password']

        if settings_post['adult_aux_intro_password'] == adult_password:
            # La contraseña de acceso es correcta

            # Cambio de contraseña
            if settings_post['adult_aux_new_password1']:
                if settings_post['adult_aux_new_password1'] == settings_post[
                        'adult_aux_new_password2']:
                    set_setting('adult_password',
                                settings_post['adult_aux_new_password1'])
                else:
                    platformtools.dialog_ok(get_localized_string(60305),
                                            get_localized_string(60306),
                                            get_localized_string(60307))

        else:
            platformtools.dialog_ok(get_localized_string(60305),
                                    get_localized_string(60309),
                                    get_localized_string(60310))

            # Deshacer cambios
            set_setting("adult_mode", settings_pre.get("adult_mode", 0))
            set_setting("adult_request_password",
                        settings_pre.get("adult_request_password", True))

        # Borramos settings auxiliares
        set_setting('adult_aux_intro_password', '')
        set_setting('adult_aux_new_password1', '')
        set_setting('adult_aux_new_password2', '')

    from specials import videolibrary
    from platformcode import xbmc_videolibrary
    if settings_pre.get('downloadpath', None) != settings_post.get(
            'downloadpath', None):
        xbmc_videolibrary.update_sources(
            settings_post.get('downloadpath', None),
            settings_pre.get('downloadpath', None))

    # si se ha cambiado la ruta de la videoteca llamamos a comprobar directorios para que lo cree y pregunte
    # automaticamente si configurar la videoteca
    if settings_pre.get("videolibrarypath", None) != settings_post.get("videolibrarypath", None) or \
                        settings_pre.get("folder_movies", None) != settings_post.get("folder_movies", None) or \
                        settings_pre.get("folder_tvshows", None) != settings_post.get("folder_tvshows", None):
        videolibrary.move_videolibrary(
            settings_pre.get("videolibrarypath", None),
            settings_post.get("videolibrarypath", None),
            settings_pre.get("folder_movies", None),
            settings_post.get("folder_movies", None),
            settings_pre.get("folder_tvshows", None),
            settings_post.get("folder_tvshows", None))

    # si se ha puesto que se quiere autoconfigurar y se había creado el directorio de la videoteca
    if not settings_pre.get("videolibrary_kodi", None) and settings_post.get(
            "videolibrary_kodi", None):
        xbmc_videolibrary.ask_set_content(silent=True)
    elif settings_pre.get("videolibrary_kodi", None) and not settings_post.get(
            "videolibrary_kodi", None):
        xbmc_videolibrary.clean_db()