예제 #1
0
 def isRarSupported():
     """
     Test Unpacking Support: - checks if unrar is installed and accesible
     """
     check = config.change_unrar_tool(settings.UNRAR_TOOL, settings.UNAR_TOOL)
     if not check:
         logger.warning("Looks like unrar is not installed, check failed")
     return ("not supported", "supported")[check]
예제 #2
0
    def savePostProcessing(self,
                           kodi_data=None,
                           mediabrowser_data=None,
                           sony_ps3_data=None,
                           wdtv_data=None,
                           tivo_data=None,
                           mede8er_data=None,
                           keep_processed_dir=None,
                           process_method=None,
                           processor_follow_symlinks=None,
                           del_rar_contents=None,
                           process_automatically=None,
                           no_delete=None,
                           rename_episodes=None,
                           airdate_episodes=None,
                           file_timestamp_timezone=None,
                           unpack=None,
                           unpack_dir=None,
                           unrar_tool=None,
                           unar_tool=None,
                           bsdtar_tool=None,
                           move_associated_files=None,
                           delete_non_associated_files=None,
                           sync_files=None,
                           postpone_if_sync_files=None,
                           allowed_extensions=None,
                           tv_download_dir=None,
                           create_missing_show_dirs=None,
                           add_shows_wo_dir=None,
                           extra_scripts=None,
                           nfo_rename=None,
                           naming_pattern=None,
                           naming_multi_ep=None,
                           naming_custom_abd=None,
                           naming_anime=None,
                           naming_abd_pattern=None,
                           naming_strip_year=None,
                           naming_custom_sports=None,
                           naming_sports_pattern=None,
                           naming_custom_anime=None,
                           naming_anime_pattern=None,
                           naming_anime_multi_ep=None,
                           autopostprocessor_frequency=None,
                           use_icacls=None):

        results = []

        if not config.change_tv_download_dir(tv_download_dir):
            results += [
                "Unable to create directory " +
                os.path.normpath(tv_download_dir) + ", dir not changed."
            ]

        config.change_postprocessor_frequency(autopostprocessor_frequency)
        config.change_process_automatically(process_automatically)
        settings.USE_ICACLS = config.checkbox_to_value(use_icacls)

        config.change_unrar_tool(unrar_tool, unar_tool, bsdtar_tool)

        unpack = try_int(unpack)
        if unpack == settings.UNPACK_PROCESS_CONTENTS:
            settings.UNPACK = int(self.isRarSupported() != 'not supported')
            if settings.UNPACK != settings.UNPACK_PROCESS_CONTENTS:
                results.append(
                    _("Unpacking Not Supported, disabling unpack setting"))
        elif unpack in settings.unpackStrings:
            settings.UNPACK = unpack

        if not config.change_unpack_dir(unpack_dir):
            results += [
                "Unable to change unpack directory to " +
                os.path.normpath(unpack_dir) + ", check the logs."
            ]

        settings.NO_DELETE = config.checkbox_to_value(no_delete)
        settings.KEEP_PROCESSED_DIR = config.checkbox_to_value(
            keep_processed_dir)
        settings.CREATE_MISSING_SHOW_DIRS = config.checkbox_to_value(
            create_missing_show_dirs)
        settings.ADD_SHOWS_WO_DIR = config.checkbox_to_value(add_shows_wo_dir)
        settings.PROCESS_METHOD = process_method
        settings.PROCESSOR_FOLLOW_SYMLINKS = config.checkbox_to_value(
            processor_follow_symlinks)
        settings.DELRARCONTENTS = config.checkbox_to_value(del_rar_contents)
        settings.EXTRA_SCRIPTS = [
            x.strip() for x in extra_scripts.split('|') if x.strip()
        ]
        settings.RENAME_EPISODES = config.checkbox_to_value(rename_episodes)
        settings.AIRDATE_EPISODES = config.checkbox_to_value(airdate_episodes)
        settings.FILE_TIMESTAMP_TIMEZONE = file_timestamp_timezone
        settings.MOVE_ASSOCIATED_FILES = config.checkbox_to_value(
            move_associated_files)
        settings.DELETE_NON_ASSOCIATED_FILES = config.checkbox_to_value(
            delete_non_associated_files)
        settings.SYNC_FILES = sync_files
        settings.POSTPONE_IF_SYNC_FILES = config.checkbox_to_value(
            postpone_if_sync_files)

        settings.ALLOWED_EXTENSIONS = ','.join(
            {x.strip()
             for x in allowed_extensions.split(',') if x.strip()})
        settings.NAMING_CUSTOM_ABD = config.checkbox_to_value(
            naming_custom_abd)
        settings.NAMING_CUSTOM_SPORTS = config.checkbox_to_value(
            naming_custom_sports)
        settings.NAMING_CUSTOM_ANIME = config.checkbox_to_value(
            naming_custom_anime)
        settings.NAMING_STRIP_YEAR = config.checkbox_to_value(
            naming_strip_year)
        settings.NFO_RENAME = config.checkbox_to_value(nfo_rename)

        settings.METADATA_KODI = kodi_data
        settings.METADATA_MEDIABROWSER = mediabrowser_data
        settings.METADATA_PS3 = sony_ps3_data
        settings.METADATA_WDTV = wdtv_data
        settings.METADATA_TIVO = tivo_data
        settings.METADATA_MEDE8ER = mede8er_data

        settings.metadata_provider_dict['KODI'].set_config(
            settings.METADATA_KODI)
        settings.metadata_provider_dict['MediaBrowser'].set_config(
            settings.METADATA_MEDIABROWSER)
        settings.metadata_provider_dict['Sony PS3'].set_config(
            settings.METADATA_PS3)
        settings.metadata_provider_dict['WDTV'].set_config(
            settings.METADATA_WDTV)
        settings.metadata_provider_dict['TIVO'].set_config(
            settings.METADATA_TIVO)
        settings.metadata_provider_dict['Mede8er'].set_config(
            settings.METADATA_MEDE8ER)

        if self.isNamingValid(naming_pattern,
                              naming_multi_ep,
                              anime_type=naming_anime) != "invalid":
            settings.NAMING_PATTERN = naming_pattern
            settings.NAMING_MULTI_EP = try_int(
                naming_multi_ep, NAMING_LIMITED_EXTEND_E_PREFIXED)
            settings.NAMING_FORCE_FOLDERS = naming.check_force_season_folders()
        else:
            results.append(
                _("You tried saving an invalid normal naming config, not saving your naming settings"
                  ))

        if self.isNamingValid(naming_anime_pattern,
                              naming_anime_multi_ep,
                              anime_type=naming_anime) != "invalid":
            settings.NAMING_ANIME_PATTERN = naming_anime_pattern
            settings.NAMING_ANIME_MULTI_EP = try_int(
                naming_anime_multi_ep, NAMING_LIMITED_EXTEND_E_PREFIXED)
            settings.NAMING_ANIME = try_int(naming_anime, 3)
            settings.NAMING_FORCE_FOLDERS = naming.check_force_season_folders()
        else:
            results.append(
                _("You tried saving an invalid anime naming config, not saving your naming settings"
                  ))

        if self.isNamingValid(naming_abd_pattern, None, abd=True) != "invalid":
            settings.NAMING_ABD_PATTERN = naming_abd_pattern
        else:
            results.append(
                "You tried saving an invalid air-by-date naming config, not saving your air-by-date settings"
            )

        if self.isNamingValid(naming_sports_pattern, None,
                              sports=True) != "invalid":
            settings.NAMING_SPORTS_PATTERN = naming_sports_pattern
        else:
            results.append(
                "You tried saving an invalid sports naming config, not saving your sports settings"
            )

        sickchill.start.save_config()

        if results:
            for x in results:
                logger.warning(x)
            ui.notifications.error(_('Error(s) Saving Configuration'),
                                   '<br>\n'.join(results))
        else:
            ui.notifications.message(_('Configuration Saved'),
                                     os.path.join(settings.CONFIG_FILE))

        return self.redirect("/config/postProcessing/")