示例#1
0
    def savePostProcessing(self,
                           kodi_data=None,
                           kodi_12plus_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,
                           del_rar_contents=None,
                           process_automatically=None,
                           no_delete=None,
                           rename_episodes=None,
                           airdate_episodes=None,
                           file_timestamp_timezone=None,
                           unpack=None,
                           move_associated_files=None,
                           sync_files=None,
                           postpone_if_sync_files=None,
                           postpone_if_no_subs=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):

        results = []

        if not config.change_TV_DOWNLOAD_DIR(tv_download_dir):
            results += [
                'Unable to create directory {dir}, '
                'dir not changed.'.format(
                    dir=os.path.normpath(tv_download_dir))
            ]

        config.change_AUTOPOSTPROCESSOR_FREQUENCY(autopostprocessor_frequency)
        config.change_PROCESS_AUTOMATICALLY(process_automatically)

        if unpack:
            if self.isRarSupported() != 'not supported':
                app.UNPACK = config.checkbox_to_value(unpack)
            else:
                app.UNPACK = 0
                results.append(
                    'Unpacking Not Supported, disabling unpack setting')
        else:
            app.UNPACK = config.checkbox_to_value(unpack)
        app.NO_DELETE = config.checkbox_to_value(no_delete)
        app.KEEP_PROCESSED_DIR = config.checkbox_to_value(keep_processed_dir)
        app.CREATE_MISSING_SHOW_DIRS = config.checkbox_to_value(
            create_missing_show_dirs)
        app.ADD_SHOWS_WO_DIR = config.checkbox_to_value(add_shows_wo_dir)
        app.PROCESS_METHOD = process_method
        app.DELRARCONTENTS = config.checkbox_to_value(del_rar_contents)
        app.EXTRA_SCRIPTS = [
            _.strip() for _ in extra_scripts.split('|') if _.strip()
        ]
        app.RENAME_EPISODES = config.checkbox_to_value(rename_episodes)
        app.AIRDATE_EPISODES = config.checkbox_to_value(airdate_episodes)
        app.FILE_TIMESTAMP_TIMEZONE = file_timestamp_timezone
        app.MOVE_ASSOCIATED_FILES = config.checkbox_to_value(
            move_associated_files)
        app.SYNC_FILES = [
            _.strip() for _ in sync_files.split(',') if _.strip()
        ]
        app.POSTPONE_IF_SYNC_FILES = config.checkbox_to_value(
            postpone_if_sync_files)
        app.POSTPONE_IF_NO_SUBS = config.checkbox_to_value(postpone_if_no_subs)
        # If 'postpone if no subs' is enabled, we must have SRT in allowed extensions list
        if app.POSTPONE_IF_NO_SUBS:
            allowed_extensions += ',srt'
            # # Auto PP must be disabled because FINDSUBTITLE thread that calls manual PP (like nzbtomedia)
            # app.PROCESS_AUTOMATICALLY = 0
        app.ALLOWED_EXTENSIONS = {
            _.strip()
            for _ in allowed_extensions.split(',') if _.strip()
        }
        app.NAMING_CUSTOM_ABD = config.checkbox_to_value(naming_custom_abd)
        app.NAMING_CUSTOM_SPORTS = config.checkbox_to_value(
            naming_custom_sports)
        app.NAMING_CUSTOM_ANIME = config.checkbox_to_value(naming_custom_anime)
        app.NAMING_STRIP_YEAR = config.checkbox_to_value(naming_strip_year)
        app.NFO_RENAME = config.checkbox_to_value(nfo_rename)

        app.METADATA_KODI = kodi_data.split('|')
        app.METADATA_KODI_12PLUS = kodi_12plus_data.split('|')
        app.METADATA_MEDIABROWSER = mediabrowser_data.split('|')
        app.METADATA_PS3 = sony_ps3_data.split('|')
        app.METADATA_WDTV = wdtv_data.split('|')
        app.METADATA_TIVO = tivo_data.split('|')
        app.METADATA_MEDE8ER = mede8er_data.split('|')

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

        if self.isNamingValid(naming_pattern,
                              naming_multi_ep,
                              anime_type=naming_anime) != 'invalid':
            app.NAMING_PATTERN = naming_pattern
            app.NAMING_MULTI_EP = int(naming_multi_ep)
            app.NAMING_ANIME = int(naming_anime)
            app.NAMING_FORCE_FOLDERS = naming.check_force_season_folders()
        else:
            if int(naming_anime) in [1, 2]:
                results.append(
                    'You tried saving an invalid anime naming config, not saving your naming settings'
                )
            else:
                results.append(
                    'You tried saving an invalid naming config, not saving your naming settings'
                )

        if self.isNamingValid(naming_anime_pattern,
                              naming_anime_multi_ep,
                              anime_type=naming_anime) != 'invalid':
            app.NAMING_ANIME_PATTERN = naming_anime_pattern
            app.NAMING_ANIME_MULTI_EP = int(naming_anime_multi_ep)
            app.NAMING_ANIME = int(naming_anime)
            app.NAMING_FORCE_FOLDERS = naming.check_force_season_folders()
        else:
            if int(naming_anime) in [1, 2]:
                results.append(
                    'You tried saving an invalid anime naming config, not saving your naming settings'
                )
            else:
                results.append(
                    'You tried saving an invalid naming config, not saving your naming settings'
                )

        if self.isNamingValid(naming_abd_pattern, None, abd=True) != 'invalid':
            app.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':
            app.NAMING_SPORTS_PATTERN = naming_sports_pattern
        else:
            results.append(
                'You tried saving an invalid sports naming config, not saving your sports settings'
            )

        app.instance.save_config()

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

        return self.redirect('/config/postProcessing/')
示例#2
0
    def savePostProcessing(self, process_automatically=None, unpack=None, allowed_extensions=None,
                           tv_download_dir=None, naming_pattern=None, naming_multi_ep=None,
                           naming_anime=None, naming_abd_pattern=None, naming_sports_pattern=None,
                           naming_anime_pattern=None, naming_anime_multi_ep=None,
                           autopostprocessor_frequency=None):
        """[deprecated] Save Post Processing configuration."""
        # @TODO: The following validations need to be incorporated into API v2 (PATCH /api/v2/config/main)

        results = []

        if not config.change_TV_DOWNLOAD_DIR(tv_download_dir):
            results += ['Unable to create directory {dir}, '
                        'dir not changed.'.format(dir=os.path.normpath(tv_download_dir))]

        config.change_AUTOPOSTPROCESSOR_FREQUENCY(autopostprocessor_frequency)
        config.change_PROCESS_AUTOMATICALLY(process_automatically)

        if unpack:
            if self.isRarSupported() != 'not supported':
                app.UNPACK = config.checkbox_to_value(unpack)
            else:
                app.UNPACK = 0
                results.append('Unpacking Not Supported, disabling unpack setting')
        else:
            app.UNPACK = config.checkbox_to_value(unpack)

        # @TODO: postprocessor for `POSTPONE_IF_NO_SUBS` and `ALLOWED_EXTENSIONS` ?
        # If 'postpone if no subs' is enabled, we must have SRT in allowed extensions list
        if app.POSTPONE_IF_NO_SUBS:
            allowed_extensions += ',srt'
            # # Auto PP must be disabled because FINDSUBTITLE thread that calls manual PP (like nzbtomedia)
            # app.PROCESS_AUTOMATICALLY = 0

        if self.isNamingValid(naming_pattern, naming_multi_ep, anime_type=naming_anime) != 'invalid':
            app.NAMING_PATTERN = naming_pattern
            app.NAMING_MULTI_EP = int(naming_multi_ep)
            app.NAMING_ANIME = int(naming_anime)
            app.NAMING_FORCE_FOLDERS = naming.check_force_season_folders()
        else:
            if int(naming_anime) in [1, 2]:
                results.append('You tried saving an invalid anime naming config, not saving your naming settings')
            else:
                results.append('You tried saving an invalid naming config, not saving your naming settings')

        if self.isNamingValid(naming_anime_pattern, naming_anime_multi_ep, anime_type=naming_anime) != 'invalid':
            app.NAMING_ANIME_PATTERN = naming_anime_pattern
            app.NAMING_ANIME_MULTI_EP = int(naming_anime_multi_ep)
            app.NAMING_ANIME = int(naming_anime)
            app.NAMING_FORCE_FOLDERS = naming.check_force_season_folders()
        else:
            if int(naming_anime) in [1, 2]:
                results.append('You tried saving an invalid anime naming config, not saving your naming settings')
            else:
                results.append('You tried saving an invalid naming config, not saving your naming settings')

        if self.isNamingValid(naming_abd_pattern, None, abd=True) != 'invalid':
            app.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':
            app.NAMING_SPORTS_PATTERN = naming_sports_pattern
        else:
            results.append(
                'You tried saving an invalid sports naming config, not saving your sports settings')

        app.instance.save_config()

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

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