From b91792861c43da16cb44f189414d3849c7fc1c51 Mon Sep 17 00:00:00 2001 From: p0ps Date: Thu, 6 Jan 2022 07:26:42 +0100 Subject: [PATCH] Added FFMPEG as a possible tool to detect corrupt video files. (#10132) * Added FFMPEG as a possible tool to detect corrupt video files. * Fix false positives * Fix failed download handling for Scheduled PP and Manual Pp. * Run process_failed() only if processing single resource. * Add video and audio stream check. * Remove check for corruption. * yarn dev * Removed ffmpegVersion in favor of ffprobeVersion. * yarn dev * remove unused exceptions * Update changelog * Fix test * rm blank line at end of file * Fix import statements are in the wrong order * update snapshot * Update test * yarn dev * update snapshot Co-authored-by: Dario --- CHANGELOG.md | 1 + medusa/__main__.py | 7 + medusa/app.py | 3 + medusa/helpers/ffmpeg.py | 190 ++++++++++++++++++ medusa/post_processor.py | 16 ++ medusa/process_tv.py | 29 ++- medusa/schedulers/download_handler.py | 3 +- medusa/server/api/v2/config.py | 12 ++ medusa/server/api/v2/postprocess.py | 3 +- tests/apiv2/test_config.py | 5 + .../src/components/config-post-processing.vue | 14 ++ themes-default/slim/src/components/config.vue | 3 + .../store/modules/config/postprocessing.js | 4 + .../slim/src/store/modules/config/system.js | 3 +- .../slim/test/__fixtures__/common.json | 6 + .../config-post-processing.spec.js.snap | 95 +++++++++ .../specs/__snapshots__/config.spec.js.snap | 32 +++ themes/dark/assets/js/medusa-runtime.js | 12 +- themes/light/assets/js/medusa-runtime.js | 12 +- 19 files changed, 429 insertions(+), 21 deletions(-) create mode 100644 medusa/helpers/ffmpeg.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f804f406f..9b55e1935e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ## Unreleased #### New Features +- Add option for using ffprobe to validate postprocessed media ([10132](https://github.com/pymedusa/Medusa/pull/10132)) #### Improvements - Add column sorting for the add new show page search results ([10217](https://github.com/pymedusa/Medusa/pull/10217)) diff --git a/medusa/__main__.py b/medusa/__main__.py index 71df0bab61..d31e92e46b 100755 --- a/medusa/__main__.py +++ b/medusa/__main__.py @@ -691,6 +691,9 @@ def initialize(self, console_logging=True): app.CREATE_MISSING_SHOW_DIRS = bool(check_setting_int(app.CFG, 'General', 'create_missing_show_dirs', 0)) app.ADD_SHOWS_WO_DIR = bool(check_setting_int(app.CFG, 'General', 'add_shows_wo_dir', 0)) + app.FFMPEG_CHECK_STREAMS = bool(check_setting_int(app.CFG, 'ffmpeg', 'ffmpeg_check_streams', 0)) + app.FFMPEG_PATH = check_setting_str(app.CFG, 'ffmpeg', 'ffmpeg_path', '') + app.PROWLARR_URL = check_setting_str(app.CFG, 'Prowlarr', 'url', '', censor_log='normal') app.PROWLARR_APIKEY = check_setting_str(app.CFG, 'Prowlarr', 'apikey', '', censor_log='high') @@ -1733,6 +1736,10 @@ def save_config(): new_config['General']['fallback_plex_notifications'] = app.FALLBACK_PLEX_NOTIFICATIONS new_config['General']['fallback_plex_timeout'] = app.FALLBACK_PLEX_TIMEOUT + new_config['ffmpeg'] = {} + new_config['ffmpeg']['ffmpeg_check_streams'] = app.FFMPEG_CHECK_STREAMS + new_config['ffmpeg']['ffmpeg_path'] = app.FFMPEG_PATH + new_config['Recommended'] = {} new_config['Recommended']['cache_shows'] = app.CACHE_RECOMMENDED_SHOWS new_config['Recommended']['cache_trakt'] = app.CACHE_RECOMMENDED_TRAKT diff --git a/medusa/app.py b/medusa/app.py index f500c0adc0..ad0a57ccaa 100644 --- a/medusa/app.py +++ b/medusa/app.py @@ -323,6 +323,9 @@ def __init__(self): self.SKIP_REMOVED_FILES = False self.ALLOWED_EXTENSIONS = ['srt', 'nfo', 'sub', 'idx'] + self.FFMPEG_CHECK_STREAMS = False + self.FFMPEG_PATH = '' + self.NZBS = False self.NZBS_UID = None self.NZBS_HASH = None diff --git a/medusa/helpers/ffmpeg.py b/medusa/helpers/ffmpeg.py new file mode 100644 index 0000000000..69bcdf04f6 --- /dev/null +++ b/medusa/helpers/ffmpeg.py @@ -0,0 +1,190 @@ +"""FFmpeg wrapper.""" + +import json +import logging +import subprocess +from os.path import join + +from medusa import app +from medusa.logger.adapters.style import CustomBraceAdapter + +log = CustomBraceAdapter(logging.getLogger(__name__)) +log.logger.addHandler(logging.NullHandler()) + + +class FfMpegException(Exception): + """Base FFMPEG / FFPROBE Exception.""" + + +class FfmpegBinaryException(FfMpegException): + """FFMPEG Binary exception.""" + + +class FfprobeBinaryException(FfMpegException): + """FFPROBE Binary exception.""" + + +class FfMpeg(object): + """Wrapper for running FFmpeg checks on video files.""" + + def __init__(self): + """Ffmpeg constructor.""" + super().__init__() + self.ffprobe = 'ffprobe' + self.ffmpeg = 'ffmpeg' + self.ffmpeg_path = app.FFMPEG_PATH + if self.ffmpeg_path: + self.ffprobe = join(self.ffmpeg_path, self.ffprobe) + self.ffmpeg = join(self.ffmpeg_path, self.ffmpeg) + + def get_video_details(self, video_file): + """Read media info.""" + command = [ + self.ffprobe, + '-v', 'quiet', + '-print_format', 'json', + '-show_streams', + '-show_error', + video_file + ] + + process = subprocess.Popen( + command, stderr=subprocess.PIPE, stdout=subprocess.PIPE, + encoding='utf-8', + ) + output, err = process.communicate() + output = json.loads(output) + return output + + def check_for_video_and_audio_streams(self, video_file): + """Read media info and check for a video and audio stream.""" + video_details = self.get_video_details(video_file) + video_streams = [item for item in video_details['streams'] if item['codec_type'] == 'video'] + audio_streams = [item for item in video_details['streams'] if item['codec_type'] == 'audio'] + if len(video_streams) > 0 and len(audio_streams) > 0: + return True + + return False + + def scan_for_errors(self, video_file): + """Check for the last 60 seconds of a video for corruption.""" + command = [ + self.ffmpeg, + '-v', 'error', + '-sseof', '-60', + '-i', video_file, + '-f', 'null', '-' + ] + + process = subprocess.Popen( + command, stderr=subprocess.PIPE, stdout=subprocess.PIPE, + encoding='utf-8', universal_newlines=False + ) + + _, errors = process.communicate() + err = [err.strip() for err in errors.split('\n') if err] + if(err): + print(err) + return { + 'file': video_file, + 'errors': err + } + + return { + 'file': video_file, + 'errors': False + } + + def test_ffmpeg_binary(self): + """Test for ffmpeg binary.""" + command = [ + self.ffmpeg, + '-version' + ] + + try: + process = subprocess.Popen( + command, stderr=subprocess.PIPE, stdout=subprocess.PIPE, + encoding='utf-8', universal_newlines=False + ) + + process.communicate() + except (FileNotFoundError, PermissionError) as error: + raise FfmpegBinaryException(f'Error trying to access binary for {self.ffmpeg}, error: {error}') + except Exception as error: + log.warning('Failed to test for the ffmpeg binary. Error: {error}', {'error': error}) + raise FfmpegBinaryException(f'Error trying to access binary for {self.ffmpeg}, error: {error}') + + return True + + def test_ffprobe_binary(self): + """Test for ffmpeg binary.""" + command = [ + self.ffprobe, + '-version' + ] + + try: + process = subprocess.Popen( + command, stderr=subprocess.PIPE, stdout=subprocess.PIPE, + encoding='utf-8', universal_newlines=False + ) + + process.communicate() + except (FileNotFoundError, PermissionError) as error: + raise FfprobeBinaryException(f'Error trying to access binary for {self.ffmpeg}, error: {error}') + except Exception as error: + log.warning('Failed to test for the ffmpeg binary. Error: {error}', {'error': error}) + raise FfprobeBinaryException(f'Error trying to access binary for {self.ffmpeg}, error: {error}') + + return True + + def get_ffmpeg_version(self): + """Test for the ffmpeg version.""" + command = [ + self.ffmpeg, + '-version' + ] + + try: + self.test_ffmpeg_binary() + process = subprocess.Popen( + command, stderr=subprocess.PIPE, stdout=subprocess.PIPE, + encoding='utf-8', universal_newlines=False + ) + + output, _ = process.communicate() + except FileNotFoundError: + return False + + if output: + output = output.split(' ') + # Cut out the version + return output[2] + + return False + + def get_ffprobe_version(self): + """Test for the ffprobe version.""" + command = [ + self.ffprobe, + '-version' + ] + + try: + self.test_ffprobe_binary() + process = subprocess.Popen( + command, stderr=subprocess.PIPE, stdout=subprocess.PIPE, + encoding='utf-8', universal_newlines=False + ) + + output, _ = process.communicate() + except FileNotFoundError: + return False + + if output: + output = output.split(' ') + # Cut out the version + return output[2] + + return False diff --git a/medusa/post_processor.py b/medusa/post_processor.py index 35b8f30282..d04733cf15 100644 --- a/medusa/post_processor.py +++ b/medusa/post_processor.py @@ -58,6 +58,7 @@ ) from medusa.helpers import is_subtitle, verify_freespace from medusa.helpers.anidb import set_up_anidb_connection +from medusa.helpers.ffmpeg import FfMpeg, FfprobeBinaryException from medusa.helpers.utils import generate from medusa.name_parser.parser import ( InvalidNameException, @@ -1038,6 +1039,21 @@ def process(self): self.log(u'File {0} is ignored type, skipping'.format(self.file_path)) return False + ffmpeg = FfMpeg() + if app.FFMPEG_CHECK_STREAMS: + try: + ffmpeg.test_ffprobe_binary() + self.log(f'Checking {self.file_path} for minimal one video and audio stream') + result = FfMpeg().check_for_video_and_audio_streams(self.file_path) + except FfprobeBinaryException: + self.log('Cannot access ffprobe binary. Make sure ffprobe is accessable throug your environment variables or configure a path.') + else: + if not result: + self.log('ffprobe reported an error while checking {file_path} for a video and audio stream. Error: {error}'.format( + file_path=self.file_path, error=result['errors']), logger.WARNING + ) + raise EpisodePostProcessingFailedException(f'ffmpeg detected a corruption in this video file: {self.file_path}') + # reset in_history self.in_history = False diff --git a/medusa/process_tv.py b/medusa/process_tv.py index 299c74eee0..ae4ac87a74 100644 --- a/medusa/process_tv.py +++ b/medusa/process_tv.py @@ -36,7 +36,7 @@ class PostProcessQueueItem(generic_queue.QueueItem): def __init__(self, path=None, info_hash=None, resource_name=None, force=False, is_priority=False, process_method=None, delete_on=False, failed=False, - proc_type='auto', ignore_subs=False, episodes=[], client_type=None): + proc_type='auto', ignore_subs=False, episodes=[], client_type=None, process_single_resource=False): """Initialize the class.""" generic_queue.QueueItem.__init__(self, u'Post Process') @@ -52,6 +52,7 @@ def __init__(self, path=None, info_hash=None, resource_name=None, force=False, self.proc_type = proc_type self.ignore_subs = ignore_subs self.episodes = episodes + self.process_single_resource = process_single_resource # torrent or nzb. Pass info on what sort of download we're processing. # We might need this when determining the PROCESS_METHOD. @@ -132,7 +133,11 @@ def update_history_processed(self, process_results): def process_path(self): """Process for when we have a valid path.""" - process_results = ProcessResult(self.path, self.process_method, failed=self.failed, episodes=self.episodes) + process_results = ProcessResult( + self.path, self.process_method, + failed=self.failed, episodes=self.episodes, + process_single_resource=self.process_single_resource + ) process_results.process( resource_name=self.resource_name, force=self.force, @@ -143,7 +148,11 @@ def process_path(self): ) # A user might want to use advanced post-processing, but opt-out of failed download handling. - if (app.USE_FAILED_DOWNLOADS and (process_results.failed or (not process_results.succeeded and self.resource_name))): + if ( + app.USE_FAILED_DOWNLOADS + and self.process_single_resource + and (process_results.failed or not process_results.succeeded) + ): process_results.process_failed(self.path) # In case we have an info_hash or (nzbid), update the history table with the pp results. @@ -237,7 +246,7 @@ class ProcessResult(object): IGNORED_FOLDERS = ('@eaDir', '#recycle', '.@__thumb',) - def __init__(self, path, process_method=None, failed=False, episodes=[]): + def __init__(self, path, process_method=None, failed=False, episodes=[], process_single_resource=False): """ Initialize ProcessResult object. @@ -262,6 +271,7 @@ def __init__(self, path, process_method=None, failed=False, episodes=[]): # When multiple media folders/files processed. Flag postpone_any of any them was postponed. self.postpone_any = False self.episodes = episodes + self.process_single_resource = process_single_resource @property def directory(self): @@ -879,6 +889,11 @@ def process_media(self, path, video_files, force=False, is_priority=None, ignore self.missed_files.append('{0}: Processing failed: {1}'.format(file_path, process_fail_message)) self.succeeded = False + if not self.process_single_resource: + # If this PostprocessQueueItem wasn't started through the download handler + # or apiv2 we want to fail the media item right here. + self.process_failed(path, resource_name=video) + def _process_postponed(self, processor, path, video, ignore_subs): if not ignore_subs: if self.subtitles_enabled(path, self.resource_name): @@ -910,10 +925,12 @@ def _process_postponed(self, processor, path, video, ignore_subs): 'Continuing the post-processing of this file: {video}', **{'video': video}) return True - def process_failed(self, path): + def process_failed(self, path, resource_name=None): """Process a download that did not complete correctly.""" try: - processor = failed_processor.FailedProcessor(path, self.resource_name, self.episodes) + processor = failed_processor.FailedProcessor( + path, resource_name or self.resource_name, self.episodes + ) self.result = processor.process() process_fail_message = '' except FailedPostProcessingFailedException as error: diff --git a/medusa/schedulers/download_handler.py b/medusa/schedulers/download_handler.py index d33e68cbb0..0a51a78ea3 100644 --- a/medusa/schedulers/download_handler.py +++ b/medusa/schedulers/download_handler.py @@ -346,7 +346,8 @@ def _postprocess(self, path, info_hash, resource_name, failed=False, client_type queue_item = PostProcessQueueItem( path, info_hash, resource_name=resource_name, - failed=failed, episodes=episodes, client_type=client_type + failed=failed, episodes=episodes, client_type=client_type, + process_single_resource=True ) app.post_processor_queue_scheduler.action.add_item(queue_item) diff --git a/medusa/server/api/v2/config.py b/medusa/server/api/v2/config.py index 5a9ddd5fc6..2865350b9e 100644 --- a/medusa/server/api/v2/config.py +++ b/medusa/server/api/v2/config.py @@ -21,6 +21,7 @@ ) from medusa.app import app from medusa.common import IGNORED, Quality, SKIPPED, WANTED, cpu_presets +from medusa.helpers.ffmpeg import FfMpeg, FfprobeBinaryException from medusa.helpers.utils import int_default, to_camel_case from medusa.indexers.config import INDEXER_TVDBV2, get_indexer_config from medusa.logger.adapters.style import BraceAdapter @@ -275,6 +276,9 @@ class ConfigHandler(BaseRequestHandler): 'postProcessing.downloadHandler.torrentSeedRatio': FloatField(app, 'TORRENT_SEED_RATIO'), 'postProcessing.downloadHandler.torrentSeedAction': StringField(app, 'TORRENT_SEED_ACTION'), + 'postProcessing.ffmpeg.checkStreams': BooleanField(app, 'FFMPEG_CHECK_STREAMS'), + 'postProcessing.ffmpeg.path': StringField(app, 'FFMPEG_PATH'), + 'search.general.randomizeProviders': BooleanField(app, 'RANDOMIZE_PROVIDERS'), 'search.general.downloadPropers': BooleanField(app, 'DOWNLOAD_PROPERS'), 'search.general.checkPropersInterval': StringField(app, 'CHECK_PROPERS_INTERVAL'), @@ -1140,6 +1144,10 @@ def data_system(): section_data['gitRemoteBranches'] = app.GIT_REMOTE_BRANCHES section_data['cpuPresets'] = cpu_presets section_data['newestVersionMessage'] = app.NEWEST_VERSION_STRING + try: + section_data['ffprobeVersion'] = FfMpeg().get_ffprobe_version() + except FfprobeBinaryException: + section_data['ffprobeVersion'] = 'ffprobe not available' section_data['news'] = {} section_data['news']['lastRead'] = app.NEWS_LAST_READ @@ -1251,6 +1259,10 @@ def data_postprocessing(): section_data['downloadHandler']['torrentSeedRatio'] = float(app.TORRENT_SEED_RATIO) if app.TORRENT_SEED_RATIO is not None else -1 section_data['downloadHandler']['torrentSeedAction'] = app.TORRENT_SEED_ACTION + section_data['ffmpeg'] = {} + section_data['ffmpeg']['checkStreams'] = bool(app.FFMPEG_CHECK_STREAMS) + section_data['ffmpeg']['path'] = app.FFMPEG_PATH + return section_data @staticmethod diff --git a/medusa/server/api/v2/postprocess.py b/medusa/server/api/v2/postprocess.py index aaa8846764..f9066049cf 100644 --- a/medusa/server/api/v2/postprocess.py +++ b/medusa/server/api/v2/postprocess.py @@ -73,7 +73,8 @@ def post(self, identifier=None): delete_on=delete_on, failed=failed, proc_type=proc_type, - ignore_subs=ignore_subs + ignore_subs=ignore_subs, + process_single_resource=True ) app.post_processor_queue_scheduler.action.add_item(queue_item) diff --git a/tests/apiv2/test_config.py b/tests/apiv2/test_config.py index a5430042ea..fc20fcd1a2 100644 --- a/tests/apiv2/test_config.py +++ b/tests/apiv2/test_config.py @@ -369,6 +369,7 @@ def memory_usage_mock(*args, **kwargs): section_data['webRoot'] = app.WEB_ROOT section_data['runsInDocker'] = bool(app.RUNS_IN_DOCKER) section_data['newestVersionMessage'] = app.NEWEST_VERSION_STRING + section_data['ffprobeVersion'] = 'ffprobe not available' section_data['gitRemoteBranches'] = app.GIT_REMOTE_BRANCHES section_data['cpuPresets'] = cpu_presets @@ -447,6 +448,10 @@ def config_postprocessing(): section_data['downloadHandler']['torrentSeedRatio'] = float(app.TORRENT_SEED_RATIO) if app.TORRENT_SEED_RATIO is not None else -1 section_data['downloadHandler']['torrentSeedAction'] = app.TORRENT_SEED_ACTION + section_data['ffmpeg'] = {} + section_data['ffmpeg']['checkStreams'] = bool(app.FFMPEG_CHECK_STREAMS) + section_data['ffmpeg']['path'] = app.FFMPEG_PATH + return section_data diff --git a/themes-default/slim/src/components/config-post-processing.vue b/themes-default/slim/src/components/config-post-processing.vue index 204585dd5a..61cdb7f416 100644 --- a/themes-default/slim/src/components/config-post-processing.vue +++ b/themes-default/slim/src/components/config-post-processing.vue @@ -193,6 +193,17 @@ See Wiki for script arguments description and usage. + + + Use PPROBE to check a video for a minimum of one audio and video stream. This is the more safe version of the two. It will only scan the video files meta data.
+ Ffmpeg binary not found. Add the ffmpeg bin location to your system's environment or configure a path manually below. +
+ + + + If you can't or don't want to depend on the os environment path, you can fix the location to your ffmpeg binary. + + Runs in Docker:Yes       + Ffprobe version:{{system.ffprobeVersion}} +    +    Website:{{config.git.url}} Wiki:{{config.wikiUrl}} Source:{{config.sourceUrl}} diff --git a/themes-default/slim/src/store/modules/config/postprocessing.js b/themes-default/slim/src/store/modules/config/postprocessing.js index 09ece7f33a..ab88a85772 100644 --- a/themes-default/slim/src/store/modules/config/postprocessing.js +++ b/themes-default/slim/src/store/modules/config/postprocessing.js @@ -42,6 +42,10 @@ const state = { minFrequency: null, torrentSeedRatio: null, torrentSeedAction: null + }, + ffmpeg: { + checkStreams: null, + path: '' } }; diff --git a/themes-default/slim/src/store/modules/config/system.js b/themes-default/slim/src/store/modules/config/system.js index cbba52ac05..b843529563 100644 --- a/themes-default/slim/src/store/modules/config/system.js +++ b/themes-default/slim/src/store/modules/config/system.js @@ -62,7 +62,8 @@ const state = { lastRead: null, latest: null, unread: null - } + }, + ffprobeVersion: null }; const mutations = { diff --git a/themes-default/slim/test/__fixtures__/common.json b/themes-default/slim/test/__fixtures__/common.json index f33e75fef8..836830afce 100644 --- a/themes-default/slim/test/__fixtures__/common.json +++ b/themes-default/slim/test/__fixtures__/common.json @@ -834,6 +834,8 @@ ], "webRoot": "", "runsInDocker": false, + "newestVersionMessage": "", + "ffprobeVersion": "ffprobe not available", "gitRemoteBranches": [ "develop", "master" @@ -1305,6 +1307,10 @@ "minFrequency": 5, "torrentSeedRatio": 1, "torrentSeedAction": "remove" + }, + "ffmpeg": { + "checkStreams": true, + "path": "" } }, "search": { diff --git a/themes-default/slim/test/specs/__snapshots__/config-post-processing.spec.js.snap b/themes-default/slim/test/specs/__snapshots__/config-post-processing.spec.js.snap index 39387f831a..31399790c7 100644 --- a/themes-default/slim/test/specs/__snapshots__/config-post-processing.spec.js.snap +++ b/themes-default/slim/test/specs/__snapshots__/config-post-processing.spec.js.snap @@ -1375,6 +1375,101 @@ exports[`ConfigPostProcessing.test.js renders 1`] = ` + +
+
+
+
+ +
+ +
+ + + + Use PPROBE to check a video for a minimum of one audio and video stream. This is the more safe version of the two. It will only scan the video files meta data. + +
+ + + Ffmpeg binary not found. Add the ffmpeg bin location to your system's environment or configure a path manually below. + + + +
+
+
+
+ +
+
+
+
+ +
+ +
+ + + + If you can't or don't want to depend on the os environment path, you can fix the location to your ffmpeg binary. + + + +
+
+
+
+ + + + Ffprobe version: + + + ffprobe not available + + + + + +   + + +   + + + + + +   + + +   + + + { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n/* provided dependency */ var $ = __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'config-post-processing',\n components: {\n AppLink: _helpers__WEBPACK_IMPORTED_MODULE_0__.AppLink,\n ConfigTextboxNumber: _helpers__WEBPACK_IMPORTED_MODULE_0__.ConfigTextboxNumber,\n ConfigToggleSlider: _helpers__WEBPACK_IMPORTED_MODULE_0__.ConfigToggleSlider,\n ConfigTemplate: _helpers__WEBPACK_IMPORTED_MODULE_0__.ConfigTemplate,\n FileBrowser: _helpers__WEBPACK_IMPORTED_MODULE_0__.FileBrowser,\n NamePattern: _helpers__WEBPACK_IMPORTED_MODULE_0__.NamePattern,\n SelectList: _helpers__WEBPACK_IMPORTED_MODULE_0__.SelectList\n },\n\n data() {\n return {\n presets: [{\n pattern: 'Season %0S/%SN - %Sx%0E - %EN',\n example: 'Season 02/Show Name - 2x03 - Ep Name'\n }, {\n pattern: 'Season %0S/%S.N.S%0SE%0E.%E.N',\n example: 'Season 02/Show.Name.S02E03.Ep.Name'\n }, {\n pattern: 'Season %S/%S_N_%Sx%0E_%E_N',\n example: 'Season 2/Show_Name_2x03_Ep_Name'\n }, {\n pattern: 'Season %S/%SN S%0SE%0E %SQN',\n example: 'Season 2/Show Name S02E03 720p HDTV x264'\n }, {\n pattern: 'Season %0S/%S.N.S%0SE%0E.%Q.N-%RG',\n example: 'Season 02/Show.Name.S02E03.720p.HDTV-RLSGROUP'\n }],\n processMethods: [{\n value: 'copy',\n text: 'Copy'\n }, {\n value: 'move',\n text: 'Move'\n }, {\n value: 'hardlink',\n text: 'Hard Link'\n }, {\n value: 'symlink',\n text: 'Symbolic Link'\n }, {\n value: 'keeplink',\n text: 'Keep Link'\n }],\n timezoneOptions: [{\n value: 'local',\n text: 'Local'\n }, {\n value: 'network',\n text: 'Network'\n }],\n metadataProviderSelected: null,\n saving: false\n };\n },\n\n methods: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_1__.mapActions)(['setConfig']),\n\n onChangeSyncFiles(items) {\n const {\n postprocessing\n } = this;\n postprocessing.syncFiles = items.map(item => item.value);\n },\n\n onChangeAllowedExtensions(items) {\n const {\n postprocessing\n } = this;\n postprocessing.allowedExtensions = items.map(item => item.value);\n },\n\n onChangeExtraScripts(items) {\n const {\n postprocessing\n } = this;\n postprocessing.extraScripts = items.map(item => item.value);\n },\n\n saveNaming(values) {\n const {\n postprocessing\n } = this;\n\n if (!this.configLoaded) {\n return;\n }\n\n postprocessing.naming.pattern = values.pattern;\n postprocessing.naming.multiEp = values.multiEpStyle;\n },\n\n saveNamingSports(values) {\n const {\n postprocessing\n } = this;\n\n if (!this.configLoaded) {\n return;\n }\n\n postprocessing.naming.patternSports = values.pattern;\n postprocessing.naming.enableCustomNamingSports = values.enabled;\n },\n\n saveNamingAbd(values) {\n const {\n postprocessing\n } = this;\n\n if (!this.configLoaded) {\n return;\n }\n\n postprocessing.naming.patternAirByDate = values.pattern;\n postprocessing.naming.enableCustomNamingAirByDate = values.enabled;\n },\n\n saveNamingAnime(values) {\n const {\n postprocessing\n } = this;\n\n if (!this.configLoaded) {\n return;\n }\n\n postprocessing.naming.patternAnime = values.pattern;\n postprocessing.naming.animeMultiEp = values.multiEpStyle;\n postprocessing.naming.animeNamingType = values.animeNamingType;\n postprocessing.naming.enableCustomNamingAnime = values.enabled;\n },\n\n async save() {\n const {\n postprocessing,\n metadata,\n setConfig\n } = this; // We want to wait until the page has been fully loaded, before starting to save stuff.\n\n if (!this.configLoaded) {\n return;\n } // Disable the save button until we're done.\n\n\n this.saving = true; // Clone the config into a new object\n\n const config = Object.assign({}, {\n postProcessing: postprocessing,\n metadata\n }); // Use destructuring to remove the unwanted keys.\n\n const {\n multiEpStrings,\n reflinkAvailable,\n extraScriptsUrl,\n ...rest\n } = postprocessing; // Assign the object with the keys removed to our copied object.\n\n config.postProcessing = rest;\n const section = 'main';\n\n try {\n await setConfig({\n section,\n config\n });\n this.$snotify.success('Saved Post-Processing config', 'Saved', {\n timeout: 5000\n });\n } catch (error) {\n this.$snotify.error('Error while trying to save Post-Processing config', 'Error');\n } finally {\n this.saving = false;\n }\n },\n\n /**\n * Get the first enabled metadata provider based on enabled features.\n * @param {Object} providers - The metadata providers object.\n * @return {String} - The id of the first enabled provider.\n */\n getFirstEnabledMetadataProvider() {\n const {\n metadata\n } = this;\n const firstEnabledProvider = Object.values(metadata.metadataProviders).find(provider => {\n return provider.showMetadata || provider.episodeMetadata;\n });\n return firstEnabledProvider === undefined ? 'kodi' : firstEnabledProvider.id;\n }\n\n },\n computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_1__.mapState)({\n config: state => state.config.general,\n metadata: state => state.config.metadata,\n postprocessing: state => state.config.postprocessing,\n torrentMethod: state => state.config.clients.torrents.method,\n system: state => state.config.system\n }),\n\n configLoaded() {\n const {\n postprocessing\n } = this;\n return postprocessing.processAutomatically !== null;\n },\n\n multiEpStringsSelect() {\n const {\n postprocessing\n } = this;\n\n if (!postprocessing.multiEpStrings) {\n return [];\n }\n\n return Object.keys(postprocessing.multiEpStrings).map(k => ({\n value: Number(k),\n text: postprocessing.multiEpStrings[k]\n }));\n },\n\n seedActions() {\n const {\n torrentMethod\n } = this;\n let actions = [{\n value: '',\n text: 'No action'\n }, {\n value: 'remove',\n text: 'Remove torrent'\n }, {\n value: 'pause',\n text: 'Pause torrent'\n }];\n const removeWithData = [{\n value: 'remove_with_data',\n text: 'Remove torrent with data'\n }];\n\n if (!['rtorrent'].includes(torrentMethod)) {\n actions = [...actions, ...removeWithData];\n }\n\n return actions;\n }\n\n },\n\n beforeMount() {\n // Wait for the next tick, so the component is rendered\n this.$nextTick(() => {\n $('#config-components').tabs();\n });\n },\n\n watch: {\n 'metadata.metadataProviders': function (providers) {\n // eslint-disable-line object-shorthand\n const {\n getFirstEnabledMetadataProvider\n } = this;\n\n if (Object.keys(providers).length > 0) {\n this.metadataProviderSelected = getFirstEnabledMetadataProvider();\n }\n }\n }\n});\n\n//# sourceURL=webpack://slim/./src/components/config-post-processing.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-1%5B0%5D.rules%5B0%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n/* provided dependency */ var $ = __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'config-post-processing',\n components: {\n AppLink: _helpers__WEBPACK_IMPORTED_MODULE_0__.AppLink,\n ConfigTextboxNumber: _helpers__WEBPACK_IMPORTED_MODULE_0__.ConfigTextboxNumber,\n ConfigToggleSlider: _helpers__WEBPACK_IMPORTED_MODULE_0__.ConfigToggleSlider,\n ConfigTemplate: _helpers__WEBPACK_IMPORTED_MODULE_0__.ConfigTemplate,\n FileBrowser: _helpers__WEBPACK_IMPORTED_MODULE_0__.FileBrowser,\n NamePattern: _helpers__WEBPACK_IMPORTED_MODULE_0__.NamePattern,\n SelectList: _helpers__WEBPACK_IMPORTED_MODULE_0__.SelectList\n },\n\n data() {\n return {\n presets: [{\n pattern: 'Season %0S/%SN - %Sx%0E - %EN',\n example: 'Season 02/Show Name - 2x03 - Ep Name'\n }, {\n pattern: 'Season %0S/%S.N.S%0SE%0E.%E.N',\n example: 'Season 02/Show.Name.S02E03.Ep.Name'\n }, {\n pattern: 'Season %S/%S_N_%Sx%0E_%E_N',\n example: 'Season 2/Show_Name_2x03_Ep_Name'\n }, {\n pattern: 'Season %S/%SN S%0SE%0E %SQN',\n example: 'Season 2/Show Name S02E03 720p HDTV x264'\n }, {\n pattern: 'Season %0S/%S.N.S%0SE%0E.%Q.N-%RG',\n example: 'Season 02/Show.Name.S02E03.720p.HDTV-RLSGROUP'\n }],\n processMethods: [{\n value: 'copy',\n text: 'Copy'\n }, {\n value: 'move',\n text: 'Move'\n }, {\n value: 'hardlink',\n text: 'Hard Link'\n }, {\n value: 'symlink',\n text: 'Symbolic Link'\n }, {\n value: 'keeplink',\n text: 'Keep Link'\n }],\n timezoneOptions: [{\n value: 'local',\n text: 'Local'\n }, {\n value: 'network',\n text: 'Network'\n }],\n metadataProviderSelected: null,\n saving: false\n };\n },\n\n methods: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_1__.mapActions)(['getConfig', 'setConfig']),\n\n onChangeSyncFiles(items) {\n const {\n postprocessing\n } = this;\n postprocessing.syncFiles = items.map(item => item.value);\n },\n\n onChangeAllowedExtensions(items) {\n const {\n postprocessing\n } = this;\n postprocessing.allowedExtensions = items.map(item => item.value);\n },\n\n onChangeExtraScripts(items) {\n const {\n postprocessing\n } = this;\n postprocessing.extraScripts = items.map(item => item.value);\n },\n\n saveNaming(values) {\n const {\n postprocessing\n } = this;\n\n if (!this.configLoaded) {\n return;\n }\n\n postprocessing.naming.pattern = values.pattern;\n postprocessing.naming.multiEp = values.multiEpStyle;\n },\n\n saveNamingSports(values) {\n const {\n postprocessing\n } = this;\n\n if (!this.configLoaded) {\n return;\n }\n\n postprocessing.naming.patternSports = values.pattern;\n postprocessing.naming.enableCustomNamingSports = values.enabled;\n },\n\n saveNamingAbd(values) {\n const {\n postprocessing\n } = this;\n\n if (!this.configLoaded) {\n return;\n }\n\n postprocessing.naming.patternAirByDate = values.pattern;\n postprocessing.naming.enableCustomNamingAirByDate = values.enabled;\n },\n\n saveNamingAnime(values) {\n const {\n postprocessing\n } = this;\n\n if (!this.configLoaded) {\n return;\n }\n\n postprocessing.naming.patternAnime = values.pattern;\n postprocessing.naming.animeMultiEp = values.multiEpStyle;\n postprocessing.naming.animeNamingType = values.animeNamingType;\n postprocessing.naming.enableCustomNamingAnime = values.enabled;\n },\n\n async save() {\n const {\n postprocessing,\n metadata,\n setConfig\n } = this; // We want to wait until the page has been fully loaded, before starting to save stuff.\n\n if (!this.configLoaded) {\n return;\n } // Disable the save button until we're done.\n\n\n this.saving = true; // Clone the config into a new object\n\n const config = Object.assign({}, {\n postProcessing: postprocessing,\n metadata\n }); // Use destructuring to remove the unwanted keys.\n\n const {\n multiEpStrings,\n reflinkAvailable,\n extraScriptsUrl,\n ...rest\n } = postprocessing; // Assign the object with the keys removed to our copied object.\n\n config.postProcessing = rest;\n const section = 'main';\n\n try {\n await setConfig({\n section,\n config\n });\n this.$snotify.success('Saved Post-Processing config', 'Saved', {\n timeout: 5000\n }); // Get system config to check for the ffmpeg binary.\n\n this.getConfig('system');\n } catch (error) {\n this.$snotify.error('Error while trying to save Post-Processing config', 'Error');\n } finally {\n this.saving = false;\n }\n },\n\n /**\n * Get the first enabled metadata provider based on enabled features.\n * @param {Object} providers - The metadata providers object.\n * @return {String} - The id of the first enabled provider.\n */\n getFirstEnabledMetadataProvider() {\n const {\n metadata\n } = this;\n const firstEnabledProvider = Object.values(metadata.metadataProviders).find(provider => {\n return provider.showMetadata || provider.episodeMetadata;\n });\n return firstEnabledProvider === undefined ? 'kodi' : firstEnabledProvider.id;\n }\n\n },\n computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_1__.mapState)({\n config: state => state.config.general,\n metadata: state => state.config.metadata,\n postprocessing: state => state.config.postprocessing,\n torrentMethod: state => state.config.clients.torrents.method,\n system: state => state.config.system\n }),\n\n configLoaded() {\n const {\n postprocessing\n } = this;\n return postprocessing.processAutomatically !== null;\n },\n\n multiEpStringsSelect() {\n const {\n postprocessing\n } = this;\n\n if (!postprocessing.multiEpStrings) {\n return [];\n }\n\n return Object.keys(postprocessing.multiEpStrings).map(k => ({\n value: Number(k),\n text: postprocessing.multiEpStrings[k]\n }));\n },\n\n seedActions() {\n const {\n torrentMethod\n } = this;\n let actions = [{\n value: '',\n text: 'No action'\n }, {\n value: 'remove',\n text: 'Remove torrent'\n }, {\n value: 'pause',\n text: 'Pause torrent'\n }];\n const removeWithData = [{\n value: 'remove_with_data',\n text: 'Remove torrent with data'\n }];\n\n if (!['rtorrent'].includes(torrentMethod)) {\n actions = [...actions, ...removeWithData];\n }\n\n return actions;\n }\n\n },\n\n beforeMount() {\n // Wait for the next tick, so the component is rendered\n this.$nextTick(() => {\n $('#config-components').tabs();\n });\n },\n\n watch: {\n 'metadata.metadataProviders': function (providers) {\n // eslint-disable-line object-shorthand\n const {\n getFirstEnabledMetadataProvider\n } = this;\n\n if (Object.keys(providers).length > 0) {\n this.metadataProviderSelected = getFirstEnabledMetadataProvider();\n }\n }\n }\n});\n\n//# sourceURL=webpack://slim/./src/components/config-post-processing.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-1%5B0%5D.rules%5B0%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options"); /***/ }), @@ -191,7 +191,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'config',\n components: {\n AppLink: _helpers__WEBPACK_IMPORTED_MODULE_0__.AppLink\n },\n computed: (0,vuex__WEBPACK_IMPORTED_MODULE_1__.mapState)({\n config: state => state.config.general,\n system: state => state.config.system\n })\n});\n\n//# sourceURL=webpack://slim/./src/components/config.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-1%5B0%5D.rules%5B0%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'config',\n components: {\n AppLink: _helpers__WEBPACK_IMPORTED_MODULE_0__.AppLink\n },\n computed: (0,vuex__WEBPACK_IMPORTED_MODULE_1__.mapState)({\n config: state => state.config.general,\n system: state => state.config.system\n })\n});\n\n//# sourceURL=webpack://slim/./src/components/config.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-1%5B0%5D.rules%5B0%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options"); /***/ }), @@ -1621,7 +1621,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _mutation_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mutation-types */ \"./src/store/mutation-types.js\");\n\nconst state = {\n naming: {\n pattern: null,\n multiEp: null,\n enableCustomNamingSports: null,\n enableCustomNamingAirByDate: null,\n patternSports: null,\n patternAirByDate: null,\n enableCustomNamingAnime: null,\n patternAnime: null,\n animeMultiEp: null,\n animeNamingType: null,\n stripYear: null\n },\n showDownloadDir: null,\n processAutomatically: null,\n processMethod: null,\n deleteRarContent: null,\n unpack: null,\n noDelete: null,\n reflinkAvailable: null,\n postponeIfSyncFiles: null,\n autoPostprocessorFrequency: 10,\n airdateEpisodes: null,\n moveAssociatedFiles: null,\n allowedExtensions: [],\n addShowsWithoutDir: null,\n createMissingShowDirs: null,\n renameEpisodes: null,\n postponeIfNoSubs: null,\n nfoRename: null,\n syncFiles: [],\n fileTimestampTimezone: 'local',\n extraScripts: [],\n extraScriptsUrl: null,\n multiEpStrings: {},\n downloadHandler: {\n enabled: null,\n frequency: null,\n minFrequency: null,\n torrentSeedRatio: null,\n torrentSeedAction: null\n }\n};\nconst mutations = {\n [_mutation_types__WEBPACK_IMPORTED_MODULE_0__.ADD_CONFIG](state, _ref) {\n let {\n section,\n config\n } = _ref;\n\n if (section === 'postprocessing') {\n state = Object.assign(state, config);\n }\n }\n\n};\nconst getters = {};\nconst actions = {};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n state,\n mutations,\n getters,\n actions\n});\n\n//# sourceURL=webpack://slim/./src/store/modules/config/postprocessing.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _mutation_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mutation-types */ \"./src/store/mutation-types.js\");\n\nconst state = {\n naming: {\n pattern: null,\n multiEp: null,\n enableCustomNamingSports: null,\n enableCustomNamingAirByDate: null,\n patternSports: null,\n patternAirByDate: null,\n enableCustomNamingAnime: null,\n patternAnime: null,\n animeMultiEp: null,\n animeNamingType: null,\n stripYear: null\n },\n showDownloadDir: null,\n processAutomatically: null,\n processMethod: null,\n deleteRarContent: null,\n unpack: null,\n noDelete: null,\n reflinkAvailable: null,\n postponeIfSyncFiles: null,\n autoPostprocessorFrequency: 10,\n airdateEpisodes: null,\n moveAssociatedFiles: null,\n allowedExtensions: [],\n addShowsWithoutDir: null,\n createMissingShowDirs: null,\n renameEpisodes: null,\n postponeIfNoSubs: null,\n nfoRename: null,\n syncFiles: [],\n fileTimestampTimezone: 'local',\n extraScripts: [],\n extraScriptsUrl: null,\n multiEpStrings: {},\n downloadHandler: {\n enabled: null,\n frequency: null,\n minFrequency: null,\n torrentSeedRatio: null,\n torrentSeedAction: null\n },\n ffmpeg: {\n checkStreams: null,\n path: ''\n }\n};\nconst mutations = {\n [_mutation_types__WEBPACK_IMPORTED_MODULE_0__.ADD_CONFIG](state, _ref) {\n let {\n section,\n config\n } = _ref;\n\n if (section === 'postprocessing') {\n state = Object.assign(state, config);\n }\n }\n\n};\nconst getters = {};\nconst actions = {};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n state,\n mutations,\n getters,\n actions\n});\n\n//# sourceURL=webpack://slim/./src/store/modules/config/postprocessing.js?"); /***/ }), @@ -1654,7 +1654,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _mutation_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mutation-types */ \"./src/store/mutation-types.js\");\n/* harmony import */ var _api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../api.js */ \"./src/api.js\");\n\n\n/**\n * An object representing a scheduler.\n *\n * If a scheduler isn't initialized on the backend,\n * this object will only have the `key` and `name` properties.\n * @typedef {object} Scheduler\n * @property {string} key\n * A camelCase key representing this scheduler.\n * @property {string} name\n * The scheduler's name.\n * @property {boolean} [isAlive]\n * Is the scheduler alive?\n * @property {boolean|string} [isEnabled]\n * Is the scheduler enabled? For the `backlog` scheduler, the value might be `Paused`.\n * @property {boolean} [isActive]\n * Is the scheduler's action currently running?\n * @property {string|null} [startTime]\n * The time of day in which this scheduler runs (format: ISO-8601 time), or `null` if not applicable.\n * @property {number} [cycleTime]\n * The duration in milliseconds between each run, or `null` if not applicable.\n * @property {number} [nextRun]\n * The duration in milliseconds until the next run.\n * @property {string} [lastRun]\n * The date and time of the previous run (format: ISO-8601 date-time).\n * @property {boolean} [isSilent]\n * Is the scheduler silent?\n */\n\nconst state = {\n branch: null,\n memoryUsage: null,\n schedulers: [],\n showQueue: [],\n diskSpace: [],\n sslVersion: null,\n pythonVersion: null,\n pid: null,\n os: null,\n logDir: null,\n dbPath: null,\n configFile: null,\n databaseVersion: {\n major: null,\n minor: null\n },\n locale: null,\n timezone: null,\n localUser: null,\n programDir: null,\n dataDir: null,\n cacheDir: null,\n appArgs: [],\n webRoot: null,\n runsInDocker: null,\n newestVersionMessage: null,\n gitRemoteBranches: [],\n cpuPresets: null,\n news: {\n lastRead: null,\n latest: null,\n unread: null\n }\n};\nconst mutations = {\n [_mutation_types__WEBPACK_IMPORTED_MODULE_0__.ADD_CONFIG](state, _ref) {\n let {\n section,\n config\n } = _ref;\n\n if (section === 'system') {\n state = Object.assign(state, config);\n }\n },\n\n [_mutation_types__WEBPACK_IMPORTED_MODULE_0__.ADD_REMOTE_BRANCHES](state, branches) {\n state.gitRemoteBranches = branches;\n }\n\n};\nconst getters = {\n getScheduler: state => {\n /**\n * Get a scheduler object using a key.\n *\n * @param {string} key The combined quality to split.\n * @returns {Scheduler|object} The scheduler object or an empty object if not found.\n */\n const _getScheduler = key => state.schedulers.find(scheduler => key === scheduler.key) || {};\n\n return _getScheduler;\n }\n};\nconst actions = {\n getGitRemoteBranches(context) {\n const {\n commit\n } = context;\n return (0,_api_js__WEBPACK_IMPORTED_MODULE_1__.apiRoute)('home/branchForceUpdate').then(response => {\n if (response.data && response.data.branches.length > 0) {\n commit(_mutation_types__WEBPACK_IMPORTED_MODULE_0__.ADD_REMOTE_BRANCHES, response.data.branches);\n return response.data.branches;\n }\n });\n },\n\n getShowQueue(context) {\n const {\n commit\n } = context;\n return _api_js__WEBPACK_IMPORTED_MODULE_1__.api.get('/config/system/showQueue').then(res => {\n const showQueue = res.data;\n const config = {\n showQueue\n };\n commit(_mutation_types__WEBPACK_IMPORTED_MODULE_0__.ADD_CONFIG, {\n section: 'system',\n config\n });\n return showQueue;\n });\n },\n\n updateQueueItemShow(context, queueItem) {\n // Update store's show queue item. (provided through websocket)\n const {\n commit\n } = context;\n return commit(_mutation_types__WEBPACK_IMPORTED_MODULE_0__.ADD_SHOW_QUEUE_ITEM, queueItem);\n }\n\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n state,\n mutations,\n getters,\n actions\n});\n\n//# sourceURL=webpack://slim/./src/store/modules/config/system.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _mutation_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mutation-types */ \"./src/store/mutation-types.js\");\n/* harmony import */ var _api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../api.js */ \"./src/api.js\");\n\n\n/**\n * An object representing a scheduler.\n *\n * If a scheduler isn't initialized on the backend,\n * this object will only have the `key` and `name` properties.\n * @typedef {object} Scheduler\n * @property {string} key\n * A camelCase key representing this scheduler.\n * @property {string} name\n * The scheduler's name.\n * @property {boolean} [isAlive]\n * Is the scheduler alive?\n * @property {boolean|string} [isEnabled]\n * Is the scheduler enabled? For the `backlog` scheduler, the value might be `Paused`.\n * @property {boolean} [isActive]\n * Is the scheduler's action currently running?\n * @property {string|null} [startTime]\n * The time of day in which this scheduler runs (format: ISO-8601 time), or `null` if not applicable.\n * @property {number} [cycleTime]\n * The duration in milliseconds between each run, or `null` if not applicable.\n * @property {number} [nextRun]\n * The duration in milliseconds until the next run.\n * @property {string} [lastRun]\n * The date and time of the previous run (format: ISO-8601 date-time).\n * @property {boolean} [isSilent]\n * Is the scheduler silent?\n */\n\nconst state = {\n branch: null,\n memoryUsage: null,\n schedulers: [],\n showQueue: [],\n diskSpace: [],\n sslVersion: null,\n pythonVersion: null,\n pid: null,\n os: null,\n logDir: null,\n dbPath: null,\n configFile: null,\n databaseVersion: {\n major: null,\n minor: null\n },\n locale: null,\n timezone: null,\n localUser: null,\n programDir: null,\n dataDir: null,\n cacheDir: null,\n appArgs: [],\n webRoot: null,\n runsInDocker: null,\n newestVersionMessage: null,\n gitRemoteBranches: [],\n cpuPresets: null,\n news: {\n lastRead: null,\n latest: null,\n unread: null\n },\n ffprobeVersion: null\n};\nconst mutations = {\n [_mutation_types__WEBPACK_IMPORTED_MODULE_0__.ADD_CONFIG](state, _ref) {\n let {\n section,\n config\n } = _ref;\n\n if (section === 'system') {\n state = Object.assign(state, config);\n }\n },\n\n [_mutation_types__WEBPACK_IMPORTED_MODULE_0__.ADD_REMOTE_BRANCHES](state, branches) {\n state.gitRemoteBranches = branches;\n }\n\n};\nconst getters = {\n getScheduler: state => {\n /**\n * Get a scheduler object using a key.\n *\n * @param {string} key The combined quality to split.\n * @returns {Scheduler|object} The scheduler object or an empty object if not found.\n */\n const _getScheduler = key => state.schedulers.find(scheduler => key === scheduler.key) || {};\n\n return _getScheduler;\n }\n};\nconst actions = {\n getGitRemoteBranches(context) {\n const {\n commit\n } = context;\n return (0,_api_js__WEBPACK_IMPORTED_MODULE_1__.apiRoute)('home/branchForceUpdate').then(response => {\n if (response.data && response.data.branches.length > 0) {\n commit(_mutation_types__WEBPACK_IMPORTED_MODULE_0__.ADD_REMOTE_BRANCHES, response.data.branches);\n return response.data.branches;\n }\n });\n },\n\n getShowQueue(context) {\n const {\n commit\n } = context;\n return _api_js__WEBPACK_IMPORTED_MODULE_1__.api.get('/config/system/showQueue').then(res => {\n const showQueue = res.data;\n const config = {\n showQueue\n };\n commit(_mutation_types__WEBPACK_IMPORTED_MODULE_0__.ADD_CONFIG, {\n section: 'system',\n config\n });\n return showQueue;\n });\n },\n\n updateQueueItemShow(context, queueItem) {\n // Update store's show queue item. (provided through websocket)\n const {\n commit\n } = context;\n return commit(_mutation_types__WEBPACK_IMPORTED_MODULE_0__.ADD_SHOW_QUEUE_ITEM, queueItem);\n }\n\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n state,\n mutations,\n getters,\n actions\n});\n\n//# sourceURL=webpack://slim/./src/store/modules/config/system.js?"); /***/ }), @@ -6702,7 +6702,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => (/* binding */ render),\n/* harmony export */ \"staticRenderFns\": () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"config\" } }, [\n _c(\"div\", { attrs: { id: \"config-content\" } }, [\n _c(\n \"form\",\n {\n staticClass: \"form-horizontal\",\n attrs: { id: \"configForm\" },\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.save()\n }\n }\n },\n [\n _c(\"div\", { attrs: { id: \"config-components\" } }, [\n _c(\"ul\", [\n _c(\n \"li\",\n [\n _c(\"app-link\", { attrs: { href: \"#post-processing\" } }, [\n _vm._v(\"Post-Processing\")\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"li\",\n [\n _c(\"app-link\", { attrs: { href: \"#episode-naming\" } }, [\n _vm._v(\"Episode Naming\")\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"li\",\n [\n _c(\"app-link\", { attrs: { href: \"#metadata\" } }, [\n _vm._v(\"Metadata\")\n ])\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"post-processing\" } }, [\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(0),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Scheduled Post-Processor\",\n id: \"process_automatically\"\n },\n model: {\n value: _vm.postprocessing.processAutomatically,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"processAutomatically\",\n $$v\n )\n },\n expression: \"postprocessing.processAutomatically\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Enable the scheduled post-processor to scan and process any files in your \"\n ),\n _c(\"i\", [_vm._v(\"Post-Processing Dir\")]),\n _vm._v(\"?\")\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"clear-left\" }, [\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" Do not use if you use an external post-processing script\"\n )\n ])\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox-number\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.postprocessing.processAutomatically,\n expression: \"postprocessing.processAutomatically\"\n }\n ],\n attrs: {\n label: \"Auto Post-Processing Frequency\",\n id: \"autopostprocessor_frequency\",\n min: 10,\n step: 1\n },\n model: {\n value:\n _vm.postprocessing.autoPostprocessorFrequency,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"autoPostprocessorFrequency\",\n $$v\n )\n },\n expression:\n \"postprocessing.autoPostprocessorFrequency\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Time in minutes to check for new files to auto post-process (min 10)\"\n )\n ])\n ]\n )\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(1),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Enable download handler\",\n id: \"enable_download_handler\"\n },\n model: {\n value: _vm.postprocessing.downloadHandler.enabled,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing.downloadHandler,\n \"enabled\",\n $$v\n )\n },\n expression: \"postprocessing.downloadHandler.enabled\"\n }\n },\n [\n _c(\"p\", [_vm._v(\"Enable download handler\")]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \"Do not combine with scheduled post processing or external pp scripts!\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox-number\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.postprocessing.downloadHandler.enabled,\n expression:\n \"postprocessing.downloadHandler.enabled\"\n }\n ],\n attrs: {\n min:\n _vm.postprocessing.downloadHandler.minFrequency,\n step: 1,\n label: \"Download handler frequency\",\n id: \"download_handler_frequency\"\n },\n model: {\n value: _vm.postprocessing.downloadHandler.frequency,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing.downloadHandler,\n \"frequency\",\n _vm._n($$v)\n )\n },\n expression:\n \"postprocessing.downloadHandler.frequency\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Frequency to check on the download clients (default: 60)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm.postprocessing.downloadHandler.enabled\n ? _c(\n \"config-textbox-number\",\n {\n attrs: {\n label: \"Global torrent seed ratio\",\n id: \"torrent_seed_ratio\",\n step: 0.1,\n min: 0,\n max: 100\n },\n model: {\n value:\n _vm.postprocessing.downloadHandler\n .torrentSeedRatio,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing.downloadHandler,\n \"torrentSeedRatio\",\n $$v\n )\n },\n expression:\n \"postprocessing.downloadHandler.torrentSeedRatio\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Torrent seed ratio used to trigger a torrent seed action\"\n )\n ])\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"torrent_seed_action\",\n label: \"Torrent seed action\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value:\n _vm.postprocessing.downloadHandler\n .torrentSeedAction,\n expression:\n \"postprocessing.downloadHandler.torrentSeedAction\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"torrent_seed_action\",\n name: \"torrent_seed_action\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.postprocessing.downloadHandler,\n \"torrentSeedAction\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.seedActions, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Setting the ratio to 0, will have it perform the action directly after postprocessing.)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"default_client_path\",\n label: \"Default client path\"\n }\n },\n [\n _c(\"file-browser\", {\n attrs: {\n id: \"default_client_path\",\n name: \"default_client_path\",\n title: \"Select client download location\",\n \"initial-dir\":\n _vm.postprocessing.defaultClientPath\n },\n on: {\n update: function($event) {\n _vm.postprocessing.defaultClientPath = $event\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"clear-left\" }, [\n _vm._v(\n \"To prevent postprocessing from deleting your (root) download location, select the location to protect it from removal.\"\n )\n ])\n ],\n 1\n )\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(2),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"tv_download_dir\",\n label: \"Post-Processing Dir\"\n }\n },\n [\n _c(\"file-browser\", {\n attrs: {\n id: \"tv_download_dir\",\n name: \"tv_download_dir\",\n title: \"Select series download location\",\n \"initial-dir\": _vm.postprocessing.showDownloadDir\n },\n on: {\n update: function($event) {\n _vm.postprocessing.showDownloadDir = $event\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"clear-left\" }, [\n _vm._v(\n \"The folder where your download client puts the completed TV downloads.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"clear-left\" }, [\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" Please use separate downloading and completed folders in your download client if possible.\"\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"The Post processing dir is also used when your download client is running on a different machine. It will try to map a postprocessed folder to PP dir.\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"processing_method\",\n label: \"Processing Method\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.postprocessing.processMethod,\n expression: \"postprocessing.processMethod\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"processing_method\",\n name: \"processing_method\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.postprocessing,\n \"processMethod\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.processMethods, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"What method should be used to put files into the library?\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" If you keep seeding torrents after they finish, please avoid the 'move' processing method to prevent errors.\"\n )\n ]),\n _vm._v(\" \"),\n _vm.postprocessing.processMethod == \"reflink\"\n ? _c(\n \"p\",\n [\n _vm._v(\"To use reference linking, the \"),\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n \"https://pypi.python.org/pypi/reflink/0.1.4\"\n }\n },\n [_vm._v(\"reflink package\")]\n ),\n _vm._v(\" needs to be installed.\")\n ],\n 1\n )\n : _vm._e()\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Specific postprocessing methods\",\n id: \"specific_post_processing\"\n },\n model: {\n value: _vm.postprocessing.specificPostProcessing,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"specificPostProcessing\",\n $$v\n )\n },\n expression: \"postprocessing.specificPostProcessing\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Enable this option if you want to use different processing methods (copy, move, etc..) for torrent and nzb downloads.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\"This option is only used by the \"),\n _c(\n \"a\",\n {\n attrs: {\n href:\n \"config/postProcessing/#automated-download-handling\"\n }\n },\n [_vm._v(\"Automated Download Handling\")]\n ),\n _vm._v(\" option\")\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm.postprocessing.specificPostProcessing\n ? _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"processing_method_torrent\",\n label: \"Processing Method Torrent\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value:\n _vm.postprocessing.processMethodTorrent,\n expression:\n \"postprocessing.processMethodTorrent\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"processing_method_torrent\",\n name: \"processing_method_torrent\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(\n o\n ) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.postprocessing,\n \"processMethodTorrent\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.processMethods, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"What method should be used to put files into the library?\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" If you keep seeding torrents after they finish, please avoid the 'move' processing method to prevent errors.\"\n )\n ]),\n _vm._v(\" \"),\n _vm.postprocessing.processMethod == \"reflink\"\n ? _c(\n \"p\",\n [\n _vm._v(\"To use reference linking, the \"),\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n \"https://pypi.python.org/pypi/reflink/0.1.4\"\n }\n },\n [_vm._v(\"reflink package\")]\n ),\n _vm._v(\" needs to be installed.\")\n ],\n 1\n )\n : _vm._e()\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.postprocessing.specificPostProcessing\n ? _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"processing_method_nzb\",\n label: \"Processing Method Nzb\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value:\n _vm.postprocessing.processMethodNzb,\n expression:\n \"postprocessing.processMethodNzb\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"processing_method_nzb\",\n name: \"processing_method_nzb\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(\n o\n ) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.postprocessing,\n \"processMethodNzb\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.processMethods, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"What method should be used to put files into the library?\"\n )\n ]),\n _vm._v(\" \"),\n _vm.postprocessing.processMethod == \"reflink\"\n ? _c(\n \"p\",\n [\n _vm._v(\"To use reference linking, the \"),\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n \"https://pypi.python.org/pypi/reflink/0.1.4\"\n }\n },\n [_vm._v(\"reflink package\")]\n ),\n _vm._v(\" needs to be installed.\")\n ],\n 1\n )\n : _vm._e()\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Postpone post-processing\",\n id: \"postpone_if_sync_files\"\n },\n model: {\n value: _vm.postprocessing.postponeIfSyncFiles,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"postponeIfSyncFiles\",\n $$v\n )\n },\n expression: \"postprocessing.postponeIfSyncFiles\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Wait to process a folder if sync files are present.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"sync_files\",\n label: \"Sync File Extensions\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n name: \"sync_files\",\n id: \"sync_files\",\n \"csv-enabled\": \"\",\n \"list-items\": _vm.postprocessing.syncFiles\n },\n on: { change: _vm.onChangeSyncFiles }\n }),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"Comma separated list of extensions or filename globs Medusa ignores when post-processing\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Postpone if no subtitle\",\n id: \"postpone_if_no_subs\"\n },\n model: {\n value: _vm.postprocessing.postponeIfNoSubs,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"postponeIfNoSubs\",\n $$v\n )\n },\n expression: \"postprocessing.postponeIfNoSubs\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Wait to process a file until subtitles are present\"\n )\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"Language names are allowed in subtitle filename (en.srt, pt-br.srt, ita.srt, etc.)\"\n )\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" Automatic post-processor should be disabled to avoid files with pending subtitles being processed over and over.\"\n )\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"If you have any active show with subtitle search disabled, you must enable Automatic post-processor.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Rename Episodes\",\n id: \"rename_episodes\"\n },\n model: {\n value: _vm.postprocessing.renameEpisodes,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"renameEpisodes\",\n $$v\n )\n },\n expression: \"postprocessing.renameEpisodes\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Rename episode using the Episode Naming settings?\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Create missing show directories\",\n id: \"create_missing_show_dirs\"\n },\n model: {\n value: _vm.postprocessing.createMissingShowDirs,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"createMissingShowDirs\",\n $$v\n )\n },\n expression: \"postprocessing.createMissingShowDirs\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Create missing show directories when they get deleted\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Add shows without directory\",\n id: \"add_shows_wo_dir\"\n },\n model: {\n value: _vm.postprocessing.addShowsWithoutDir,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"addShowsWithoutDir\",\n $$v\n )\n },\n expression: \"postprocessing.addShowsWithoutDir\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Add shows without creating a directory (not recommended)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Delete associated files\",\n id: \"move_associated_files\"\n },\n model: {\n value: _vm.postprocessing.moveAssociatedFiles,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"moveAssociatedFiles\",\n $$v\n )\n },\n expression: \"postprocessing.moveAssociatedFiles\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Delete srt/srr/sfv/etc files while post-processing?\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"allowed_extensions\",\n label: \"Keep associated file extensions\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n name: \"allowed_extensions\",\n id: \"allowed_extensions\",\n \"csv-enabled\": \"\",\n \"list-items\": _vm.postprocessing.allowedExtensions\n },\n on: { change: _vm.onChangeAllowedExtensions }\n }),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"Comma separated list of associated file extensions Medusa should keep while post-processing.\"\n )\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"Leaving it empty means all associated files will be deleted\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Rename .nfo file\",\n id: \"nfo_rename\"\n },\n model: {\n value: _vm.postprocessing.nfoRename,\n callback: function($$v) {\n _vm.$set(_vm.postprocessing, \"nfoRename\", $$v)\n },\n expression: \"postprocessing.nfoRename\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Rename the original .nfo file to .nfo-orig to avoid conflicts?\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Change File Date\",\n id: \"airdate_episodes\"\n },\n model: {\n value: _vm.postprocessing.airdateEpisodes,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"airdateEpisodes\",\n $$v\n )\n },\n expression: \"postprocessing.airdateEpisodes\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Set last modified filedate to the date that the episode aired?\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"file_timestamp_timezone\",\n label: \"Timezone for File Date\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value:\n _vm.postprocessing.fileTimestampTimezone,\n expression:\n \"postprocessing.fileTimestampTimezone\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"file_timestamp_timezone\",\n name: \"file_timestamp_timezone\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.postprocessing,\n \"fileTimestampTimezone\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.timezoneOptions, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"What timezone should be used to change File Date?\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Unpack\", id: \"unpack\" },\n model: {\n value: _vm.postprocessing.unpack,\n callback: function($$v) {\n _vm.$set(_vm.postprocessing, \"unpack\", $$v)\n },\n expression: \"postprocessing.unpack\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\"Unpack any TV releases in your \"),\n _c(\"i\", [_vm._v(\"TV Download Dir\")]),\n _vm._v(\"?\")\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\" Only working with RAR archive\")\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Delete RAR contents\",\n id: \"del_rar_contents\"\n },\n model: {\n value: _vm.postprocessing.deleteRarContent,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"deleteRarContent\",\n $$v\n )\n },\n expression: \"postprocessing.deleteRarContent\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Delete content of RAR files, even if Process Method not set to move?\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Don't delete empty folders\",\n id: \"no_delete\"\n },\n model: {\n value: _vm.postprocessing.noDelete,\n callback: function($$v) {\n _vm.$set(_vm.postprocessing, \"noDelete\", $$v)\n },\n expression: \"postprocessing.noDelete\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\"Leave empty folders when post-processing?\")\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" Can be overridden using manual post-processing\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"extra_scripts\",\n label: \"Extra Scripts\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n name: \"extra_scripts\",\n id: \"extra_scripts\",\n \"csv-enabled\": \"\",\n \"list-items\": _vm.postprocessing.extraScripts\n },\n on: { change: _vm.onChangeExtraScripts }\n }),\n _vm._v(\" \"),\n _c(\n \"span\",\n [\n _vm._v(\"See \"),\n _c(\n \"app-link\",\n {\n staticClass: \"wikie\",\n attrs: {\n href: _vm.postprocessing.extraScriptsUrl\n }\n },\n [_c(\"strong\", [_vm._v(\"Wiki\")])]\n ),\n _vm._v(\n \" for script arguments description and usage.\"\n )\n ],\n 1\n )\n ],\n 1\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa config_submitter\",\n attrs: {\n type: \"submit\",\n value: \"Save Changes\",\n disabled: _vm.saving\n }\n })\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"episode-naming\" } }, [\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(3),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\"name-pattern\", {\n staticClass: \"component-item\",\n attrs: {\n \"naming-pattern\": _vm.postprocessing.naming.pattern,\n \"naming-presets\": _vm.presets,\n \"multi-ep-style\": _vm.postprocessing.naming.multiEp,\n \"multi-ep-styles\": _vm.multiEpStringsSelect,\n \"flag-loaded\": _vm.configLoaded\n },\n on: { change: _vm.saveNaming }\n }),\n _vm._v(\" \"),\n _c(\"name-pattern\", {\n staticClass: \"component-item\",\n attrs: {\n enabled:\n _vm.postprocessing.naming.enableCustomNamingSports,\n \"naming-pattern\":\n _vm.postprocessing.naming.patternSports,\n \"naming-presets\": _vm.presets,\n type: \"sports\",\n \"enabled-naming-custom\":\n _vm.postprocessing.naming.enableCustomNamingSports,\n \"flag-loaded\": _vm.configLoaded\n },\n on: { change: _vm.saveNamingSports }\n }),\n _vm._v(\" \"),\n _c(\"name-pattern\", {\n staticClass: \"component-item\",\n attrs: {\n enabled:\n _vm.postprocessing.naming\n .enableCustomNamingAirByDate,\n \"naming-pattern\":\n _vm.postprocessing.naming.patternAirByDate,\n \"naming-presets\": _vm.presets,\n type: \"airs by date\",\n \"enabled-naming-custom\":\n _vm.postprocessing.naming\n .enableCustomNamingAirByDate,\n \"flag-loaded\": _vm.configLoaded\n },\n on: { change: _vm.saveNamingAbd }\n }),\n _vm._v(\" \"),\n _c(\"name-pattern\", {\n staticClass: \"component-item\",\n attrs: {\n enabled:\n _vm.postprocessing.naming.enableCustomNamingAnime,\n \"naming-pattern\":\n _vm.postprocessing.naming.patternAnime,\n \"naming-presets\": _vm.presets,\n type: \"anime\",\n \"multi-ep-style\":\n _vm.postprocessing.naming.animeMultiEp,\n \"multi-ep-styles\": _vm.multiEpStringsSelect,\n \"anime-naming-type\":\n _vm.postprocessing.naming.animeNamingType,\n \"enabled-naming-custom\":\n _vm.postprocessing.naming.enableCustomNamingAnime,\n \"flag-loaded\": _vm.configLoaded\n },\n on: { change: _vm.saveNamingAnime }\n }),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n staticStyle: { \"margin-top\": \"1em\" },\n attrs: {\n label: \"Strip Show Year\",\n id: \"naming_strip_year\"\n },\n model: {\n value: _vm.postprocessing.naming.stripYear,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing.naming,\n \"stripYear\",\n $$v\n )\n },\n expression: \"postprocessing.naming.stripYear\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Remove the TV show's year when renaming the file?\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Only applies to shows that have year inside parentheses\"\n )\n ])\n ]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa config_submitter\",\n attrs: {\n type: \"submit\",\n value: \"Save Changes\",\n disabled: _vm.saving\n }\n })\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"metadata\" } }, [\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(4),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"metadata_type\",\n label: \"Metadata Type\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.metadataProviderSelected,\n expression: \"metadataProviderSelected\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"metadataType\",\n name: \"metadataType\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.metadataProviderSelected = $event.target\n .multiple\n ? $$selectedVal\n : $$selectedVal[0]\n }\n }\n },\n _vm._l(_vm.metadata.metadataProviders, function(\n option\n ) {\n return _c(\n \"option\",\n {\n key: option.id,\n domProps: { value: option.id }\n },\n [_vm._v(_vm._s(option.name))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"d-block\" }, [\n _vm._v(\n \"Toggle the metadata options that you wish to be created. \"\n ),\n _c(\"b\", [_vm._v(\"Multiple targets may be used.\")])\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm._l(_vm.metadata.metadataProviders, function(\n provider\n ) {\n return _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value:\n provider.id === _vm.metadataProviderSelected,\n expression:\n \"provider.id === metadataProviderSelected\"\n }\n ],\n key: provider.id,\n staticClass: \"metadata\",\n attrs: { id: \"provider.id\" }\n },\n [\n _c(\n \"div\",\n { staticClass: \"metadata-options-wrapper\" },\n [\n _c(\"h4\", [_vm._v(\"Create:\")]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"metadata_options\" }, [\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_show_metadata\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.showMetadata,\n expression: \"provider.showMetadata\"\n }\n ],\n staticClass: \"metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_show_metadata\"\n },\n domProps: {\n checked: Array.isArray(\n provider.showMetadata\n )\n ? _vm._i(\n provider.showMetadata,\n null\n ) > -1\n : provider.showMetadata\n },\n on: {\n change: function($event) {\n var $$a = provider.showMetadata,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"showMetadata\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"showMetadata\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"showMetadata\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Show Metadata\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_episode_metadata\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.episodeMetadata,\n expression:\n \"provider.episodeMetadata\"\n }\n ],\n staticClass: \"metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_episode_metadata\",\n disabled: provider.example.episodeMetadata.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.episodeMetadata\n )\n ? _vm._i(\n provider.episodeMetadata,\n null\n ) > -1\n : provider.episodeMetadata\n },\n on: {\n change: function($event) {\n var $$a = provider.episodeMetadata,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"episodeMetadata\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"episodeMetadata\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"episodeMetadata\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Episode Metadata\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n { attrs: { for: provider.id + \"_fanart\" } },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.fanart,\n expression: \"provider.fanart\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_fanart\",\n disabled: provider.example.fanart.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.fanart\n )\n ? _vm._i(provider.fanart, null) > -1\n : provider.fanart\n },\n on: {\n change: function($event) {\n var $$a = provider.fanart,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"fanart\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"fanart\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(provider, \"fanart\", $$c)\n }\n }\n }\n }),\n _vm._v(\" Show Fanart\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n { attrs: { for: provider.id + \"_poster\" } },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.poster,\n expression: \"provider.poster\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_poster\",\n disabled: provider.example.poster.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.poster\n )\n ? _vm._i(provider.poster, null) > -1\n : provider.poster\n },\n on: {\n change: function($event) {\n var $$a = provider.poster,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"poster\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"poster\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(provider, \"poster\", $$c)\n }\n }\n }\n }),\n _vm._v(\" Show Poster\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n { attrs: { for: provider.id + \"_banner\" } },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.banner,\n expression: \"provider.banner\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_banner\",\n disabled: provider.example.banner.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.banner\n )\n ? _vm._i(provider.banner, null) > -1\n : provider.banner\n },\n on: {\n change: function($event) {\n var $$a = provider.banner,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"banner\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"banner\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(provider, \"banner\", $$c)\n }\n }\n }\n }),\n _vm._v(\" Show Banner\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_episode_thumbnails\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.episodeThumbnails,\n expression:\n \"provider.episodeThumbnails\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id:\n provider.id + \"_episode_thumbnails\",\n disabled: provider.example.episodeThumbnails.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.episodeThumbnails\n )\n ? _vm._i(\n provider.episodeThumbnails,\n null\n ) > -1\n : provider.episodeThumbnails\n },\n on: {\n change: function($event) {\n var $$a =\n provider.episodeThumbnails,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"episodeThumbnails\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"episodeThumbnails\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"episodeThumbnails\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Episode Thumbnails\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_posters\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.seasonPosters,\n expression: \"provider.seasonPosters\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_season_posters\",\n disabled: provider.example.seasonPosters.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.seasonPosters\n )\n ? _vm._i(\n provider.seasonPosters,\n null\n ) > -1\n : provider.seasonPosters\n },\n on: {\n change: function($event) {\n var $$a = provider.seasonPosters,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"seasonPosters\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"seasonPosters\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"seasonPosters\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Season Posters\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_banners\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.seasonBanners,\n expression: \"provider.seasonBanners\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_season_banners\",\n disabled: provider.example.seasonBanners.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.seasonBanners\n )\n ? _vm._i(\n provider.seasonBanners,\n null\n ) > -1\n : provider.seasonBanners\n },\n on: {\n change: function($event) {\n var $$a = provider.seasonBanners,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"seasonBanners\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"seasonBanners\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"seasonBanners\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Season Banners\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_all_poster\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.seasonAllPoster,\n expression:\n \"provider.seasonAllPoster\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id:\n provider.id + \"_season_all_poster\",\n disabled: provider.example.seasonAllPoster.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.seasonAllPoster\n )\n ? _vm._i(\n provider.seasonAllPoster,\n null\n ) > -1\n : provider.seasonAllPoster\n },\n on: {\n change: function($event) {\n var $$a = provider.seasonAllPoster,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"seasonAllPoster\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"seasonAllPoster\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"seasonAllPoster\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Season All Poster\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_all_banner\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.seasonAllBanner,\n expression:\n \"provider.seasonAllBanner\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id:\n provider.id + \"_season_all_banner\",\n disabled: provider.example.seasonAllBanner.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.seasonAllBanner\n )\n ? _vm._i(\n provider.seasonAllBanner,\n null\n ) > -1\n : provider.seasonAllBanner\n },\n on: {\n change: function($event) {\n var $$a = provider.seasonAllBanner,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"seasonAllBanner\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"seasonAllBanner\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"seasonAllBanner\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Season All Banner\")\n ]\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"metadata-example-wrapper\" },\n [\n _c(\"h4\", [_vm._v(\"Results:\")]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"metadata_example\" }, [\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_show_metadata\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.showMetadata\n },\n attrs: {\n id:\n provider.id + \"_eg_show_metadata\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .showMetadata +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_episode_metadata\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.episodeMetadata\n },\n attrs: {\n id:\n provider.id +\n \"_eg_episode_metadata\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .episodeMetadata +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n { attrs: { for: provider.id + \"_fanart\" } },\n [\n _c(\n \"span\",\n {\n class: { disabled: !provider.fanart },\n attrs: {\n id: provider.id + \"_eg_fanart\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example.fanart +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n { attrs: { for: provider.id + \"_poster\" } },\n [\n _c(\n \"span\",\n {\n class: { disabled: !provider.poster },\n attrs: {\n id: provider.id + \"_eg_poster\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example.poster +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n { attrs: { for: provider.id + \"_banner\" } },\n [\n _c(\n \"span\",\n {\n class: { disabled: !provider.banner },\n attrs: {\n id: provider.id + \"_eg_banner\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example.banner +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_episode_thumbnails\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.episodeThumbnails\n },\n attrs: {\n id:\n provider.id +\n \"_eg_episode_thumbnails\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .episodeThumbnails +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_posters\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.seasonPosters\n },\n attrs: {\n id:\n provider.id + \"_eg_season_posters\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .seasonPosters +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_banners\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.seasonBanners\n },\n attrs: {\n id:\n provider.id + \"_eg_season_banners\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .seasonBanners +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_all_poster\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.seasonAllPoster\n },\n attrs: {\n id:\n provider.id +\n \"_eg_season_all_poster\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .seasonAllPoster +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_all_banner\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.seasonAllBanner\n },\n attrs: {\n id:\n provider.id +\n \"_eg_season_all_banner\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .seasonAllBanner +\n \"\"\n )\n }\n })\n ]\n )\n ]\n )\n ])\n ]\n )\n ]\n )\n })\n ],\n 2\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa config_submitter\",\n attrs: {\n type: \"submit\",\n value: \"Save Changes\",\n disabled: _vm.saving\n }\n })\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"h6\", { staticClass: \"pull-right\" }, [\n _c(\"b\", [\n _vm._v(\"All non-absolute folder locations are relative to \"),\n _c(\"span\", { staticClass: \"path\" }, [\n _vm._v(_vm._s(_vm.system.dataDir))\n ])\n ])\n ])\n ])\n ]\n )\n ])\n ])\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"Scheduled Post-Processing\")]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Settings that dictate how Medusa should process completed downloads.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"The scheduled post-processor will periodically scan a folder for media to process.\"\n )\n ])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"a\", { attrs: { name: \"automated-download-handling\" } }),\n _c(\"h3\", [_vm._v(\"Automated Download Handling\")]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Check clients directly through api's for completed or failed downloads.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"The download handler will periodically connect to the nzb or torrent clients and check for completed and failed downloads.\"\n )\n ])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"General Post-Processing\")]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Generic post-processing settings that apply both to the scheduled post-processor as external scripts\"\n )\n ])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"Episode Naming\")]),\n _vm._v(\" \"),\n _c(\"p\", [_vm._v(\"How Medusa will name and sort your episodes.\")])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"Metadata\")]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"The data associated to the data. These are files associated to a TV show in the form of images and text that, when supported, will enhance the viewing experience.\"\n )\n ])\n ]\n )\n }\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://slim/./src/components/config-post-processing.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => (/* binding */ render),\n/* harmony export */ \"staticRenderFns\": () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"config\" } }, [\n _c(\"div\", { attrs: { id: \"config-content\" } }, [\n _c(\n \"form\",\n {\n staticClass: \"form-horizontal\",\n attrs: { id: \"configForm\" },\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.save()\n }\n }\n },\n [\n _c(\"div\", { attrs: { id: \"config-components\" } }, [\n _c(\"ul\", [\n _c(\n \"li\",\n [\n _c(\"app-link\", { attrs: { href: \"#post-processing\" } }, [\n _vm._v(\"Post-Processing\")\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"li\",\n [\n _c(\"app-link\", { attrs: { href: \"#episode-naming\" } }, [\n _vm._v(\"Episode Naming\")\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"li\",\n [\n _c(\"app-link\", { attrs: { href: \"#metadata\" } }, [\n _vm._v(\"Metadata\")\n ])\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"post-processing\" } }, [\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(0),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Scheduled Post-Processor\",\n id: \"process_automatically\"\n },\n model: {\n value: _vm.postprocessing.processAutomatically,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"processAutomatically\",\n $$v\n )\n },\n expression: \"postprocessing.processAutomatically\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Enable the scheduled post-processor to scan and process any files in your \"\n ),\n _c(\"i\", [_vm._v(\"Post-Processing Dir\")]),\n _vm._v(\"?\")\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"clear-left\" }, [\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" Do not use if you use an external post-processing script\"\n )\n ])\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox-number\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.postprocessing.processAutomatically,\n expression: \"postprocessing.processAutomatically\"\n }\n ],\n attrs: {\n label: \"Auto Post-Processing Frequency\",\n id: \"autopostprocessor_frequency\",\n min: 10,\n step: 1\n },\n model: {\n value:\n _vm.postprocessing.autoPostprocessorFrequency,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"autoPostprocessorFrequency\",\n $$v\n )\n },\n expression:\n \"postprocessing.autoPostprocessorFrequency\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Time in minutes to check for new files to auto post-process (min 10)\"\n )\n ])\n ]\n )\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(1),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Enable download handler\",\n id: \"enable_download_handler\"\n },\n model: {\n value: _vm.postprocessing.downloadHandler.enabled,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing.downloadHandler,\n \"enabled\",\n $$v\n )\n },\n expression: \"postprocessing.downloadHandler.enabled\"\n }\n },\n [\n _c(\"p\", [_vm._v(\"Enable download handler\")]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \"Do not combine with scheduled post processing or external pp scripts!\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox-number\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.postprocessing.downloadHandler.enabled,\n expression:\n \"postprocessing.downloadHandler.enabled\"\n }\n ],\n attrs: {\n min:\n _vm.postprocessing.downloadHandler.minFrequency,\n step: 1,\n label: \"Download handler frequency\",\n id: \"download_handler_frequency\"\n },\n model: {\n value: _vm.postprocessing.downloadHandler.frequency,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing.downloadHandler,\n \"frequency\",\n _vm._n($$v)\n )\n },\n expression:\n \"postprocessing.downloadHandler.frequency\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Frequency to check on the download clients (default: 60)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm.postprocessing.downloadHandler.enabled\n ? _c(\n \"config-textbox-number\",\n {\n attrs: {\n label: \"Global torrent seed ratio\",\n id: \"torrent_seed_ratio\",\n step: 0.1,\n min: 0,\n max: 100\n },\n model: {\n value:\n _vm.postprocessing.downloadHandler\n .torrentSeedRatio,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing.downloadHandler,\n \"torrentSeedRatio\",\n $$v\n )\n },\n expression:\n \"postprocessing.downloadHandler.torrentSeedRatio\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Torrent seed ratio used to trigger a torrent seed action\"\n )\n ])\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"torrent_seed_action\",\n label: \"Torrent seed action\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value:\n _vm.postprocessing.downloadHandler\n .torrentSeedAction,\n expression:\n \"postprocessing.downloadHandler.torrentSeedAction\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"torrent_seed_action\",\n name: \"torrent_seed_action\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.postprocessing.downloadHandler,\n \"torrentSeedAction\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.seedActions, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Setting the ratio to 0, will have it perform the action directly after postprocessing.)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"default_client_path\",\n label: \"Default client path\"\n }\n },\n [\n _c(\"file-browser\", {\n attrs: {\n id: \"default_client_path\",\n name: \"default_client_path\",\n title: \"Select client download location\",\n \"initial-dir\":\n _vm.postprocessing.defaultClientPath\n },\n on: {\n update: function($event) {\n _vm.postprocessing.defaultClientPath = $event\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"clear-left\" }, [\n _vm._v(\n \"To prevent postprocessing from deleting your (root) download location, select the location to protect it from removal.\"\n )\n ])\n ],\n 1\n )\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(2),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"tv_download_dir\",\n label: \"Post-Processing Dir\"\n }\n },\n [\n _c(\"file-browser\", {\n attrs: {\n id: \"tv_download_dir\",\n name: \"tv_download_dir\",\n title: \"Select series download location\",\n \"initial-dir\": _vm.postprocessing.showDownloadDir\n },\n on: {\n update: function($event) {\n _vm.postprocessing.showDownloadDir = $event\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"clear-left\" }, [\n _vm._v(\n \"The folder where your download client puts the completed TV downloads.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"clear-left\" }, [\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" Please use separate downloading and completed folders in your download client if possible.\"\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"The Post processing dir is also used when your download client is running on a different machine. It will try to map a postprocessed folder to PP dir.\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"processing_method\",\n label: \"Processing Method\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.postprocessing.processMethod,\n expression: \"postprocessing.processMethod\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"processing_method\",\n name: \"processing_method\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.postprocessing,\n \"processMethod\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.processMethods, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"What method should be used to put files into the library?\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" If you keep seeding torrents after they finish, please avoid the 'move' processing method to prevent errors.\"\n )\n ]),\n _vm._v(\" \"),\n _vm.postprocessing.processMethod == \"reflink\"\n ? _c(\n \"p\",\n [\n _vm._v(\"To use reference linking, the \"),\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n \"https://pypi.python.org/pypi/reflink/0.1.4\"\n }\n },\n [_vm._v(\"reflink package\")]\n ),\n _vm._v(\" needs to be installed.\")\n ],\n 1\n )\n : _vm._e()\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Specific postprocessing methods\",\n id: \"specific_post_processing\"\n },\n model: {\n value: _vm.postprocessing.specificPostProcessing,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"specificPostProcessing\",\n $$v\n )\n },\n expression: \"postprocessing.specificPostProcessing\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Enable this option if you want to use different processing methods (copy, move, etc..) for torrent and nzb downloads.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\"This option is only used by the \"),\n _c(\n \"a\",\n {\n attrs: {\n href:\n \"config/postProcessing/#automated-download-handling\"\n }\n },\n [_vm._v(\"Automated Download Handling\")]\n ),\n _vm._v(\" option\")\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm.postprocessing.specificPostProcessing\n ? _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"processing_method_torrent\",\n label: \"Processing Method Torrent\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value:\n _vm.postprocessing.processMethodTorrent,\n expression:\n \"postprocessing.processMethodTorrent\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"processing_method_torrent\",\n name: \"processing_method_torrent\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(\n o\n ) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.postprocessing,\n \"processMethodTorrent\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.processMethods, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"What method should be used to put files into the library?\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" If you keep seeding torrents after they finish, please avoid the 'move' processing method to prevent errors.\"\n )\n ]),\n _vm._v(\" \"),\n _vm.postprocessing.processMethod == \"reflink\"\n ? _c(\n \"p\",\n [\n _vm._v(\"To use reference linking, the \"),\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n \"https://pypi.python.org/pypi/reflink/0.1.4\"\n }\n },\n [_vm._v(\"reflink package\")]\n ),\n _vm._v(\" needs to be installed.\")\n ],\n 1\n )\n : _vm._e()\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.postprocessing.specificPostProcessing\n ? _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"processing_method_nzb\",\n label: \"Processing Method Nzb\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value:\n _vm.postprocessing.processMethodNzb,\n expression:\n \"postprocessing.processMethodNzb\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"processing_method_nzb\",\n name: \"processing_method_nzb\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(\n o\n ) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.postprocessing,\n \"processMethodNzb\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.processMethods, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"What method should be used to put files into the library?\"\n )\n ]),\n _vm._v(\" \"),\n _vm.postprocessing.processMethod == \"reflink\"\n ? _c(\n \"p\",\n [\n _vm._v(\"To use reference linking, the \"),\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n \"https://pypi.python.org/pypi/reflink/0.1.4\"\n }\n },\n [_vm._v(\"reflink package\")]\n ),\n _vm._v(\" needs to be installed.\")\n ],\n 1\n )\n : _vm._e()\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Postpone post-processing\",\n id: \"postpone_if_sync_files\"\n },\n model: {\n value: _vm.postprocessing.postponeIfSyncFiles,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"postponeIfSyncFiles\",\n $$v\n )\n },\n expression: \"postprocessing.postponeIfSyncFiles\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Wait to process a folder if sync files are present.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"sync_files\",\n label: \"Sync File Extensions\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n name: \"sync_files\",\n id: \"sync_files\",\n \"csv-enabled\": \"\",\n \"list-items\": _vm.postprocessing.syncFiles\n },\n on: { change: _vm.onChangeSyncFiles }\n }),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"Comma separated list of extensions or filename globs Medusa ignores when post-processing\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Postpone if no subtitle\",\n id: \"postpone_if_no_subs\"\n },\n model: {\n value: _vm.postprocessing.postponeIfNoSubs,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"postponeIfNoSubs\",\n $$v\n )\n },\n expression: \"postprocessing.postponeIfNoSubs\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Wait to process a file until subtitles are present\"\n )\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"Language names are allowed in subtitle filename (en.srt, pt-br.srt, ita.srt, etc.)\"\n )\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" Automatic post-processor should be disabled to avoid files with pending subtitles being processed over and over.\"\n )\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"If you have any active show with subtitle search disabled, you must enable Automatic post-processor.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Rename Episodes\",\n id: \"rename_episodes\"\n },\n model: {\n value: _vm.postprocessing.renameEpisodes,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"renameEpisodes\",\n $$v\n )\n },\n expression: \"postprocessing.renameEpisodes\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Rename episode using the Episode Naming settings?\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Create missing show directories\",\n id: \"create_missing_show_dirs\"\n },\n model: {\n value: _vm.postprocessing.createMissingShowDirs,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"createMissingShowDirs\",\n $$v\n )\n },\n expression: \"postprocessing.createMissingShowDirs\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Create missing show directories when they get deleted\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Add shows without directory\",\n id: \"add_shows_wo_dir\"\n },\n model: {\n value: _vm.postprocessing.addShowsWithoutDir,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"addShowsWithoutDir\",\n $$v\n )\n },\n expression: \"postprocessing.addShowsWithoutDir\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Add shows without creating a directory (not recommended)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Delete associated files\",\n id: \"move_associated_files\"\n },\n model: {\n value: _vm.postprocessing.moveAssociatedFiles,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"moveAssociatedFiles\",\n $$v\n )\n },\n expression: \"postprocessing.moveAssociatedFiles\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Delete srt/srr/sfv/etc files while post-processing?\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"allowed_extensions\",\n label: \"Keep associated file extensions\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n name: \"allowed_extensions\",\n id: \"allowed_extensions\",\n \"csv-enabled\": \"\",\n \"list-items\": _vm.postprocessing.allowedExtensions\n },\n on: { change: _vm.onChangeAllowedExtensions }\n }),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"Comma separated list of associated file extensions Medusa should keep while post-processing.\"\n )\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"Leaving it empty means all associated files will be deleted\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Rename .nfo file\",\n id: \"nfo_rename\"\n },\n model: {\n value: _vm.postprocessing.nfoRename,\n callback: function($$v) {\n _vm.$set(_vm.postprocessing, \"nfoRename\", $$v)\n },\n expression: \"postprocessing.nfoRename\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Rename the original .nfo file to .nfo-orig to avoid conflicts?\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Change File Date\",\n id: \"airdate_episodes\"\n },\n model: {\n value: _vm.postprocessing.airdateEpisodes,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"airdateEpisodes\",\n $$v\n )\n },\n expression: \"postprocessing.airdateEpisodes\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Set last modified filedate to the date that the episode aired?\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"file_timestamp_timezone\",\n label: \"Timezone for File Date\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value:\n _vm.postprocessing.fileTimestampTimezone,\n expression:\n \"postprocessing.fileTimestampTimezone\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"file_timestamp_timezone\",\n name: \"file_timestamp_timezone\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.postprocessing,\n \"fileTimestampTimezone\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.timezoneOptions, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"What timezone should be used to change File Date?\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Unpack\", id: \"unpack\" },\n model: {\n value: _vm.postprocessing.unpack,\n callback: function($$v) {\n _vm.$set(_vm.postprocessing, \"unpack\", $$v)\n },\n expression: \"postprocessing.unpack\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\"Unpack any TV releases in your \"),\n _c(\"i\", [_vm._v(\"TV Download Dir\")]),\n _vm._v(\"?\")\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\" Only working with RAR archive\")\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Delete RAR contents\",\n id: \"del_rar_contents\"\n },\n model: {\n value: _vm.postprocessing.deleteRarContent,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"deleteRarContent\",\n $$v\n )\n },\n expression: \"postprocessing.deleteRarContent\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Delete content of RAR files, even if Process Method not set to move?\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Don't delete empty folders\",\n id: \"no_delete\"\n },\n model: {\n value: _vm.postprocessing.noDelete,\n callback: function($$v) {\n _vm.$set(_vm.postprocessing, \"noDelete\", $$v)\n },\n expression: \"postprocessing.noDelete\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\"Leave empty folders when post-processing?\")\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" Can be overridden using manual post-processing\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"extra_scripts\",\n label: \"Extra Scripts\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n name: \"extra_scripts\",\n id: \"extra_scripts\",\n \"csv-enabled\": \"\",\n \"list-items\": _vm.postprocessing.extraScripts\n },\n on: { change: _vm.onChangeExtraScripts }\n }),\n _vm._v(\" \"),\n _c(\n \"span\",\n [\n _vm._v(\"See \"),\n _c(\n \"app-link\",\n {\n staticClass: \"wikie\",\n attrs: {\n href: _vm.postprocessing.extraScriptsUrl\n }\n },\n [_c(\"strong\", [_vm._v(\"Wiki\")])]\n ),\n _vm._v(\n \" for script arguments description and usage.\"\n )\n ],\n 1\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n disabled:\n _vm.system.ffprobeVersion ===\n \"ffprobe not available\",\n label:\n \"Use ffprobe to validate downloaded video files for a minimum of one video and audio stream\",\n id: \"check_streams\"\n },\n model: {\n value: _vm.postprocessing.ffmpeg.checkStreams,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing.ffmpeg,\n \"checkStreams\",\n $$v\n )\n },\n expression: \"postprocessing.ffmpeg.checkStreams\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Use PPROBE to check a video for a minimum of one audio and video stream. This is the more safe version of the two. It will only scan the video files meta data.\"\n )\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _vm.system.ffprobeVersion === \"ffprobe not available\"\n ? _c(\"span\", { staticStyle: { color: \"red\" } }, [\n _vm._v(\n \"Ffmpeg binary not found. Add the ffmpeg bin location to your system's environment or configure a path manually below.\"\n )\n ])\n : _vm._e()\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"ffmpeg_path\",\n label: \"Alternative ffmpeg path\"\n }\n },\n [\n _c(\"file-browser\", {\n attrs: {\n id: \"ffmpeg_path\",\n name: \"ffmpeg_path\",\n title:\n \"Select folder location for the ffmpeg binary\",\n \"initial-dir\": _vm.postprocessing.ffmpeg.path\n },\n on: {\n update: function($event) {\n _vm.postprocessing.ffmpeg.path = $event\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"If you can't or don't want to depend on the os environment path, you can fix the location to your ffmpeg binary.\"\n )\n ])\n ],\n 1\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa config_submitter\",\n attrs: {\n type: \"submit\",\n value: \"Save Changes\",\n disabled: _vm.saving\n }\n })\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"episode-naming\" } }, [\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(3),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\"name-pattern\", {\n staticClass: \"component-item\",\n attrs: {\n \"naming-pattern\": _vm.postprocessing.naming.pattern,\n \"naming-presets\": _vm.presets,\n \"multi-ep-style\": _vm.postprocessing.naming.multiEp,\n \"multi-ep-styles\": _vm.multiEpStringsSelect,\n \"flag-loaded\": _vm.configLoaded\n },\n on: { change: _vm.saveNaming }\n }),\n _vm._v(\" \"),\n _c(\"name-pattern\", {\n staticClass: \"component-item\",\n attrs: {\n enabled:\n _vm.postprocessing.naming.enableCustomNamingSports,\n \"naming-pattern\":\n _vm.postprocessing.naming.patternSports,\n \"naming-presets\": _vm.presets,\n type: \"sports\",\n \"enabled-naming-custom\":\n _vm.postprocessing.naming.enableCustomNamingSports,\n \"flag-loaded\": _vm.configLoaded\n },\n on: { change: _vm.saveNamingSports }\n }),\n _vm._v(\" \"),\n _c(\"name-pattern\", {\n staticClass: \"component-item\",\n attrs: {\n enabled:\n _vm.postprocessing.naming\n .enableCustomNamingAirByDate,\n \"naming-pattern\":\n _vm.postprocessing.naming.patternAirByDate,\n \"naming-presets\": _vm.presets,\n type: \"airs by date\",\n \"enabled-naming-custom\":\n _vm.postprocessing.naming\n .enableCustomNamingAirByDate,\n \"flag-loaded\": _vm.configLoaded\n },\n on: { change: _vm.saveNamingAbd }\n }),\n _vm._v(\" \"),\n _c(\"name-pattern\", {\n staticClass: \"component-item\",\n attrs: {\n enabled:\n _vm.postprocessing.naming.enableCustomNamingAnime,\n \"naming-pattern\":\n _vm.postprocessing.naming.patternAnime,\n \"naming-presets\": _vm.presets,\n type: \"anime\",\n \"multi-ep-style\":\n _vm.postprocessing.naming.animeMultiEp,\n \"multi-ep-styles\": _vm.multiEpStringsSelect,\n \"anime-naming-type\":\n _vm.postprocessing.naming.animeNamingType,\n \"enabled-naming-custom\":\n _vm.postprocessing.naming.enableCustomNamingAnime,\n \"flag-loaded\": _vm.configLoaded\n },\n on: { change: _vm.saveNamingAnime }\n }),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n staticStyle: { \"margin-top\": \"1em\" },\n attrs: {\n label: \"Strip Show Year\",\n id: \"naming_strip_year\"\n },\n model: {\n value: _vm.postprocessing.naming.stripYear,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing.naming,\n \"stripYear\",\n $$v\n )\n },\n expression: \"postprocessing.naming.stripYear\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Remove the TV show's year when renaming the file?\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Only applies to shows that have year inside parentheses\"\n )\n ])\n ]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa config_submitter\",\n attrs: {\n type: \"submit\",\n value: \"Save Changes\",\n disabled: _vm.saving\n }\n })\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"metadata\" } }, [\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(4),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"metadata_type\",\n label: \"Metadata Type\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.metadataProviderSelected,\n expression: \"metadataProviderSelected\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"metadataType\",\n name: \"metadataType\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.metadataProviderSelected = $event.target\n .multiple\n ? $$selectedVal\n : $$selectedVal[0]\n }\n }\n },\n _vm._l(_vm.metadata.metadataProviders, function(\n option\n ) {\n return _c(\n \"option\",\n {\n key: option.id,\n domProps: { value: option.id }\n },\n [_vm._v(_vm._s(option.name))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"d-block\" }, [\n _vm._v(\n \"Toggle the metadata options that you wish to be created. \"\n ),\n _c(\"b\", [_vm._v(\"Multiple targets may be used.\")])\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm._l(_vm.metadata.metadataProviders, function(\n provider\n ) {\n return _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value:\n provider.id === _vm.metadataProviderSelected,\n expression:\n \"provider.id === metadataProviderSelected\"\n }\n ],\n key: provider.id,\n staticClass: \"metadata\",\n attrs: { id: \"provider.id\" }\n },\n [\n _c(\n \"div\",\n { staticClass: \"metadata-options-wrapper\" },\n [\n _c(\"h4\", [_vm._v(\"Create:\")]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"metadata_options\" }, [\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_show_metadata\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.showMetadata,\n expression: \"provider.showMetadata\"\n }\n ],\n staticClass: \"metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_show_metadata\"\n },\n domProps: {\n checked: Array.isArray(\n provider.showMetadata\n )\n ? _vm._i(\n provider.showMetadata,\n null\n ) > -1\n : provider.showMetadata\n },\n on: {\n change: function($event) {\n var $$a = provider.showMetadata,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"showMetadata\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"showMetadata\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"showMetadata\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Show Metadata\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_episode_metadata\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.episodeMetadata,\n expression:\n \"provider.episodeMetadata\"\n }\n ],\n staticClass: \"metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_episode_metadata\",\n disabled: provider.example.episodeMetadata.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.episodeMetadata\n )\n ? _vm._i(\n provider.episodeMetadata,\n null\n ) > -1\n : provider.episodeMetadata\n },\n on: {\n change: function($event) {\n var $$a = provider.episodeMetadata,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"episodeMetadata\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"episodeMetadata\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"episodeMetadata\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Episode Metadata\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n { attrs: { for: provider.id + \"_fanart\" } },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.fanart,\n expression: \"provider.fanart\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_fanart\",\n disabled: provider.example.fanart.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.fanart\n )\n ? _vm._i(provider.fanart, null) > -1\n : provider.fanart\n },\n on: {\n change: function($event) {\n var $$a = provider.fanart,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"fanart\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"fanart\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(provider, \"fanart\", $$c)\n }\n }\n }\n }),\n _vm._v(\" Show Fanart\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n { attrs: { for: provider.id + \"_poster\" } },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.poster,\n expression: \"provider.poster\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_poster\",\n disabled: provider.example.poster.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.poster\n )\n ? _vm._i(provider.poster, null) > -1\n : provider.poster\n },\n on: {\n change: function($event) {\n var $$a = provider.poster,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"poster\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"poster\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(provider, \"poster\", $$c)\n }\n }\n }\n }),\n _vm._v(\" Show Poster\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n { attrs: { for: provider.id + \"_banner\" } },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.banner,\n expression: \"provider.banner\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_banner\",\n disabled: provider.example.banner.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.banner\n )\n ? _vm._i(provider.banner, null) > -1\n : provider.banner\n },\n on: {\n change: function($event) {\n var $$a = provider.banner,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"banner\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"banner\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(provider, \"banner\", $$c)\n }\n }\n }\n }),\n _vm._v(\" Show Banner\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_episode_thumbnails\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.episodeThumbnails,\n expression:\n \"provider.episodeThumbnails\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id:\n provider.id + \"_episode_thumbnails\",\n disabled: provider.example.episodeThumbnails.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.episodeThumbnails\n )\n ? _vm._i(\n provider.episodeThumbnails,\n null\n ) > -1\n : provider.episodeThumbnails\n },\n on: {\n change: function($event) {\n var $$a =\n provider.episodeThumbnails,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"episodeThumbnails\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"episodeThumbnails\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"episodeThumbnails\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Episode Thumbnails\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_posters\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.seasonPosters,\n expression: \"provider.seasonPosters\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_season_posters\",\n disabled: provider.example.seasonPosters.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.seasonPosters\n )\n ? _vm._i(\n provider.seasonPosters,\n null\n ) > -1\n : provider.seasonPosters\n },\n on: {\n change: function($event) {\n var $$a = provider.seasonPosters,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"seasonPosters\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"seasonPosters\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"seasonPosters\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Season Posters\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_banners\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.seasonBanners,\n expression: \"provider.seasonBanners\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_season_banners\",\n disabled: provider.example.seasonBanners.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.seasonBanners\n )\n ? _vm._i(\n provider.seasonBanners,\n null\n ) > -1\n : provider.seasonBanners\n },\n on: {\n change: function($event) {\n var $$a = provider.seasonBanners,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"seasonBanners\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"seasonBanners\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"seasonBanners\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Season Banners\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_all_poster\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.seasonAllPoster,\n expression:\n \"provider.seasonAllPoster\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id:\n provider.id + \"_season_all_poster\",\n disabled: provider.example.seasonAllPoster.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.seasonAllPoster\n )\n ? _vm._i(\n provider.seasonAllPoster,\n null\n ) > -1\n : provider.seasonAllPoster\n },\n on: {\n change: function($event) {\n var $$a = provider.seasonAllPoster,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"seasonAllPoster\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"seasonAllPoster\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"seasonAllPoster\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Season All Poster\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_all_banner\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.seasonAllBanner,\n expression:\n \"provider.seasonAllBanner\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id:\n provider.id + \"_season_all_banner\",\n disabled: provider.example.seasonAllBanner.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.seasonAllBanner\n )\n ? _vm._i(\n provider.seasonAllBanner,\n null\n ) > -1\n : provider.seasonAllBanner\n },\n on: {\n change: function($event) {\n var $$a = provider.seasonAllBanner,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"seasonAllBanner\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"seasonAllBanner\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"seasonAllBanner\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Season All Banner\")\n ]\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"metadata-example-wrapper\" },\n [\n _c(\"h4\", [_vm._v(\"Results:\")]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"metadata_example\" }, [\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_show_metadata\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.showMetadata\n },\n attrs: {\n id:\n provider.id + \"_eg_show_metadata\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .showMetadata +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_episode_metadata\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.episodeMetadata\n },\n attrs: {\n id:\n provider.id +\n \"_eg_episode_metadata\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .episodeMetadata +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n { attrs: { for: provider.id + \"_fanart\" } },\n [\n _c(\n \"span\",\n {\n class: { disabled: !provider.fanart },\n attrs: {\n id: provider.id + \"_eg_fanart\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example.fanart +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n { attrs: { for: provider.id + \"_poster\" } },\n [\n _c(\n \"span\",\n {\n class: { disabled: !provider.poster },\n attrs: {\n id: provider.id + \"_eg_poster\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example.poster +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n { attrs: { for: provider.id + \"_banner\" } },\n [\n _c(\n \"span\",\n {\n class: { disabled: !provider.banner },\n attrs: {\n id: provider.id + \"_eg_banner\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example.banner +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_episode_thumbnails\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.episodeThumbnails\n },\n attrs: {\n id:\n provider.id +\n \"_eg_episode_thumbnails\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .episodeThumbnails +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_posters\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.seasonPosters\n },\n attrs: {\n id:\n provider.id + \"_eg_season_posters\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .seasonPosters +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_banners\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.seasonBanners\n },\n attrs: {\n id:\n provider.id + \"_eg_season_banners\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .seasonBanners +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_all_poster\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.seasonAllPoster\n },\n attrs: {\n id:\n provider.id +\n \"_eg_season_all_poster\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .seasonAllPoster +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_all_banner\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.seasonAllBanner\n },\n attrs: {\n id:\n provider.id +\n \"_eg_season_all_banner\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .seasonAllBanner +\n \"\"\n )\n }\n })\n ]\n )\n ]\n )\n ])\n ]\n )\n ]\n )\n })\n ],\n 2\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa config_submitter\",\n attrs: {\n type: \"submit\",\n value: \"Save Changes\",\n disabled: _vm.saving\n }\n })\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"h6\", { staticClass: \"pull-right\" }, [\n _c(\"b\", [\n _vm._v(\"All non-absolute folder locations are relative to \"),\n _c(\"span\", { staticClass: \"path\" }, [\n _vm._v(_vm._s(_vm.system.dataDir))\n ])\n ])\n ])\n ])\n ]\n )\n ])\n ])\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"Scheduled Post-Processing\")]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Settings that dictate how Medusa should process completed downloads.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"The scheduled post-processor will periodically scan a folder for media to process.\"\n )\n ])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"a\", { attrs: { name: \"automated-download-handling\" } }),\n _c(\"h3\", [_vm._v(\"Automated Download Handling\")]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Check clients directly through api's for completed or failed downloads.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"The download handler will periodically connect to the nzb or torrent clients and check for completed and failed downloads.\"\n )\n ])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"General Post-Processing\")]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Generic post-processing settings that apply both to the scheduled post-processor as external scripts\"\n )\n ])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"Episode Naming\")]),\n _vm._v(\" \"),\n _c(\"p\", [_vm._v(\"How Medusa will name and sort your episodes.\")])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"Metadata\")]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"The data associated to the data. These are files associated to a TV show in the form of images and text that, when supported, will enhance the viewing experience.\"\n )\n ])\n ]\n )\n }\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://slim/./src/components/config-post-processing.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options"); /***/ }), @@ -6746,7 +6746,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => (/* binding */ render),\n/* harmony export */ \"staticRenderFns\": () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"config-content\" } }, [\n _c(\n \"table\",\n {\n staticClass: \"infoTable\",\n attrs: {\n cellspacing: \"1\",\n border: \"0\",\n cellpadding: \"0\",\n width: \"100%\"\n }\n },\n [\n _c(\"tr\", [\n _vm._m(0),\n _vm._v(\" \"),\n _c(\"td\", [\n _vm._v(\"\\n Branch:\\n \"),\n _vm.system.branch\n ? _c(\n \"span\",\n [\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n _vm.config.sourceUrl + \"/tree/\" + _vm.system.branch\n }\n },\n [_vm._v(_vm._s(_vm.system.branch))]\n )\n ],\n 1\n )\n : _c(\"span\", [_vm._v(\"Unknown\")]),\n _vm._v(\" \"),\n _c(\"br\"),\n _vm._v(\"\\n Commit:\\n \"),\n _vm.system.commitHash\n ? _c(\n \"span\",\n [\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n _vm.config.sourceUrl +\n \"/commit/\" +\n _vm.system.commitHash\n }\n },\n [_vm._v(_vm._s(_vm.system.commitHash))]\n )\n ],\n 1\n )\n : _c(\"span\", [_vm._v(\"Unknown\")]),\n _vm._v(\" \"),\n _c(\"br\"),\n _vm._v(\"\\n Version:\\n \"),\n _vm.system.release\n ? _c(\n \"span\",\n [\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n _vm.config.sourceUrl +\n \"/releases/tag/v\" +\n _vm.system.release\n }\n },\n [_vm._v(_vm._s(_vm.system.release))]\n )\n ],\n 1\n )\n : _c(\"span\", [_vm._v(\"Unknown\")]),\n _vm._v(\" \"),\n _c(\"br\"),\n _vm._v(\"\\n Database:\\n \"),\n _vm.system.databaseVersion\n ? _c(\"span\", [\n _vm._v(\n _vm._s(_vm.system.databaseVersion.major) +\n \".\" +\n _vm._s(_vm.system.databaseVersion.minor)\n )\n ])\n : _c(\"span\", [_vm._v(\"Unknown\")])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(1),\n _c(\"td\", [_vm._v(_vm._s(_vm.system.pythonVersion))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(2),\n _c(\"td\", [_vm._v(_vm._s(_vm.system.sslVersion))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(3), _c(\"td\", [_vm._v(_vm._s(_vm.system.os))])]),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(4), _c(\"td\", [_vm._v(_vm._s(_vm.system.locale))])]),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(5), _c(\"td\", [_vm._v(_vm._s(_vm.system.timezone))])]),\n _vm._v(\" \"),\n _vm._m(6),\n _vm._v(\" \"),\n _vm._m(7),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(8), _c(\"td\", [_vm._v(_vm._s(_vm.system.localUser))])]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(9),\n _c(\"td\", [_vm._v(_vm._s(_vm.system.programDir))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(10),\n _c(\"td\", [_vm._v(_vm._s(_vm.system.configFile))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(11), _c(\"td\", [_vm._v(_vm._s(_vm.system.dbPath))])]),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(12), _c(\"td\", [_vm._v(_vm._s(_vm.system.cacheDir))])]),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(13), _c(\"td\", [_vm._v(_vm._s(_vm.system.logDir))])]),\n _vm._v(\" \"),\n _vm.system.appArgs\n ? _c(\"tr\", [\n _vm._m(14),\n _c(\"td\", [\n _c(\"pre\", [_vm._v(_vm._s(_vm.system.appArgs.join(\" \")))])\n ])\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.system.webRoot\n ? _c(\"tr\", [\n _vm._m(15),\n _c(\"td\", [_vm._v(_vm._s(_vm.system.webRoot))])\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.system.runsInDocker\n ? _c(\"tr\", [_vm._m(16), _c(\"td\", [_vm._v(\"Yes\")])])\n : _vm._e(),\n _vm._v(\" \"),\n _vm._m(17),\n _vm._v(\" \"),\n _vm._m(18),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(19),\n _c(\n \"td\",\n [\n _c(\"app-link\", { attrs: { href: _vm.config.git.url } }, [\n _vm._v(_vm._s(_vm.config.git.url))\n ])\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(20),\n _c(\n \"td\",\n [\n _c(\"app-link\", { attrs: { href: _vm.config.wikiUrl } }, [\n _vm._v(_vm._s(_vm.config.wikiUrl))\n ])\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(21),\n _c(\n \"td\",\n [\n _c(\"app-link\", { attrs: { href: _vm.config.sourceUrl } }, [\n _vm._v(_vm._s(_vm.config.sourceUrl))\n ])\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(22),\n _c(\n \"td\",\n [\n _c(\n \"app-link\",\n { attrs: { href: \"irc://irc.freenode.net/#pymedusa\" } },\n [\n _c(\"i\", [_vm._v(\"#pymedusa\")]),\n _vm._v(\" on \"),\n _c(\"i\", [_vm._v(\"irc.freenode.net\")])\n ]\n )\n ],\n 1\n )\n ])\n ]\n )\n ])\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-application\" }),\n _vm._v(\" Medusa Info:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-python\" }),\n _vm._v(\" Python Version:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-ssl\" }),\n _vm._v(\" SSL Version:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-os\" }),\n _vm._v(\" OS:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-locale\" }),\n _vm._v(\" Locale:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-locale\" }),\n _vm._v(\" Timezone:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [_c(\"td\", [_vm._v(\" \")]), _c(\"td\", [_vm._v(\" \")])])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"infoTableSeperator\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _c(\"td\", [_vm._v(\" \")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-user\" }),\n _vm._v(\" User:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-dir\" }),\n _vm._v(\" Program Folder:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-config\" }),\n _vm._v(\" Config File:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-db\" }),\n _vm._v(\" Database File:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-cache\" }),\n _vm._v(\" Cache Folder:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-log\" }),\n _vm._v(\" Log Folder:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-arguments\" }),\n _vm._v(\" Arguments:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-dir\" }),\n _vm._v(\" Web Root:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-docker\" }),\n _vm._v(\" Runs in Docker:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [_c(\"td\", [_vm._v(\" \")]), _c(\"td\", [_vm._v(\" \")])])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"infoTableSeperator\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _c(\"td\", [_vm._v(\" \")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-web\" }),\n _vm._v(\" Website:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-wiki\" }),\n _vm._v(\" Wiki:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-github\" }),\n _vm._v(\" Source:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-mirc\" }),\n _vm._v(\" IRC Chat:\")\n ])\n }\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://slim/./src/components/config.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => (/* binding */ render),\n/* harmony export */ \"staticRenderFns\": () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"config-content\" } }, [\n _c(\n \"table\",\n {\n staticClass: \"infoTable\",\n attrs: {\n cellspacing: \"1\",\n border: \"0\",\n cellpadding: \"0\",\n width: \"100%\"\n }\n },\n [\n _c(\"tr\", [\n _vm._m(0),\n _vm._v(\" \"),\n _c(\"td\", [\n _vm._v(\"\\n Branch:\\n \"),\n _vm.system.branch\n ? _c(\n \"span\",\n [\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n _vm.config.sourceUrl + \"/tree/\" + _vm.system.branch\n }\n },\n [_vm._v(_vm._s(_vm.system.branch))]\n )\n ],\n 1\n )\n : _c(\"span\", [_vm._v(\"Unknown\")]),\n _vm._v(\" \"),\n _c(\"br\"),\n _vm._v(\"\\n Commit:\\n \"),\n _vm.system.commitHash\n ? _c(\n \"span\",\n [\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n _vm.config.sourceUrl +\n \"/commit/\" +\n _vm.system.commitHash\n }\n },\n [_vm._v(_vm._s(_vm.system.commitHash))]\n )\n ],\n 1\n )\n : _c(\"span\", [_vm._v(\"Unknown\")]),\n _vm._v(\" \"),\n _c(\"br\"),\n _vm._v(\"\\n Version:\\n \"),\n _vm.system.release\n ? _c(\n \"span\",\n [\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n _vm.config.sourceUrl +\n \"/releases/tag/v\" +\n _vm.system.release\n }\n },\n [_vm._v(_vm._s(_vm.system.release))]\n )\n ],\n 1\n )\n : _c(\"span\", [_vm._v(\"Unknown\")]),\n _vm._v(\" \"),\n _c(\"br\"),\n _vm._v(\"\\n Database:\\n \"),\n _vm.system.databaseVersion\n ? _c(\"span\", [\n _vm._v(\n _vm._s(_vm.system.databaseVersion.major) +\n \".\" +\n _vm._s(_vm.system.databaseVersion.minor)\n )\n ])\n : _c(\"span\", [_vm._v(\"Unknown\")])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(1),\n _c(\"td\", [_vm._v(_vm._s(_vm.system.pythonVersion))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(2),\n _c(\"td\", [_vm._v(_vm._s(_vm.system.sslVersion))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(3), _c(\"td\", [_vm._v(_vm._s(_vm.system.os))])]),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(4), _c(\"td\", [_vm._v(_vm._s(_vm.system.locale))])]),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(5), _c(\"td\", [_vm._v(_vm._s(_vm.system.timezone))])]),\n _vm._v(\" \"),\n _vm._m(6),\n _vm._v(\" \"),\n _vm._m(7),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(8), _c(\"td\", [_vm._v(_vm._s(_vm.system.localUser))])]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(9),\n _c(\"td\", [_vm._v(_vm._s(_vm.system.programDir))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(10),\n _c(\"td\", [_vm._v(_vm._s(_vm.system.configFile))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(11), _c(\"td\", [_vm._v(_vm._s(_vm.system.dbPath))])]),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(12), _c(\"td\", [_vm._v(_vm._s(_vm.system.cacheDir))])]),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(13), _c(\"td\", [_vm._v(_vm._s(_vm.system.logDir))])]),\n _vm._v(\" \"),\n _vm.system.appArgs\n ? _c(\"tr\", [\n _vm._m(14),\n _c(\"td\", [\n _c(\"pre\", [_vm._v(_vm._s(_vm.system.appArgs.join(\" \")))])\n ])\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.system.webRoot\n ? _c(\"tr\", [\n _vm._m(15),\n _c(\"td\", [_vm._v(_vm._s(_vm.system.webRoot))])\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.system.runsInDocker\n ? _c(\"tr\", [_vm._m(16), _c(\"td\", [_vm._v(\"Yes\")])])\n : _vm._e(),\n _vm._v(\" \"),\n _vm._m(17),\n _vm._v(\" \"),\n _vm._m(18),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(19),\n _c(\"td\", [_vm._v(_vm._s(_vm.system.ffprobeVersion))])\n ]),\n _vm._v(\" \"),\n _vm._m(20),\n _vm._v(\" \"),\n _vm._m(21),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(22),\n _c(\n \"td\",\n [\n _c(\"app-link\", { attrs: { href: _vm.config.git.url } }, [\n _vm._v(_vm._s(_vm.config.git.url))\n ])\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(23),\n _c(\n \"td\",\n [\n _c(\"app-link\", { attrs: { href: _vm.config.wikiUrl } }, [\n _vm._v(_vm._s(_vm.config.wikiUrl))\n ])\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(24),\n _c(\n \"td\",\n [\n _c(\"app-link\", { attrs: { href: _vm.config.sourceUrl } }, [\n _vm._v(_vm._s(_vm.config.sourceUrl))\n ])\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(25),\n _c(\n \"td\",\n [\n _c(\n \"app-link\",\n { attrs: { href: \"irc://irc.freenode.net/#pymedusa\" } },\n [\n _c(\"i\", [_vm._v(\"#pymedusa\")]),\n _vm._v(\" on \"),\n _c(\"i\", [_vm._v(\"irc.freenode.net\")])\n ]\n )\n ],\n 1\n )\n ])\n ]\n )\n ])\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-application\" }),\n _vm._v(\" Medusa Info:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-python\" }),\n _vm._v(\" Python Version:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-ssl\" }),\n _vm._v(\" SSL Version:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-os\" }),\n _vm._v(\" OS:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-locale\" }),\n _vm._v(\" Locale:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-locale\" }),\n _vm._v(\" Timezone:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [_c(\"td\", [_vm._v(\" \")]), _c(\"td\", [_vm._v(\" \")])])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"infoTableSeperator\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _c(\"td\", [_vm._v(\" \")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-user\" }),\n _vm._v(\" User:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-dir\" }),\n _vm._v(\" Program Folder:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-config\" }),\n _vm._v(\" Config File:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-db\" }),\n _vm._v(\" Database File:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-cache\" }),\n _vm._v(\" Cache Folder:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-log\" }),\n _vm._v(\" Log Folder:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-arguments\" }),\n _vm._v(\" Arguments:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-dir\" }),\n _vm._v(\" Web Root:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-docker\" }),\n _vm._v(\" Runs in Docker:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [_c(\"td\", [_vm._v(\" \")]), _c(\"td\", [_vm._v(\" \")])])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"infoTableSeperator\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _c(\"td\", [_vm._v(\" \")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-arguments\" }),\n _vm._v(\" Ffprobe version:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [_c(\"td\", [_vm._v(\" \")]), _c(\"td\", [_vm._v(\" \")])])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"infoTableSeperator\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _c(\"td\", [_vm._v(\" \")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-web\" }),\n _vm._v(\" Website:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-wiki\" }),\n _vm._v(\" Wiki:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-github\" }),\n _vm._v(\" Source:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-mirc\" }),\n _vm._v(\" IRC Chat:\")\n ])\n }\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://slim/./src/components/config.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options"); /***/ }), diff --git a/themes/light/assets/js/medusa-runtime.js b/themes/light/assets/js/medusa-runtime.js index 3239e11693..fd02b858fc 100644 --- a/themes/light/assets/js/medusa-runtime.js +++ b/themes/light/assets/js/medusa-runtime.js @@ -147,7 +147,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n/* provided dependency */ var $ = __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'config-post-processing',\n components: {\n AppLink: _helpers__WEBPACK_IMPORTED_MODULE_0__.AppLink,\n ConfigTextboxNumber: _helpers__WEBPACK_IMPORTED_MODULE_0__.ConfigTextboxNumber,\n ConfigToggleSlider: _helpers__WEBPACK_IMPORTED_MODULE_0__.ConfigToggleSlider,\n ConfigTemplate: _helpers__WEBPACK_IMPORTED_MODULE_0__.ConfigTemplate,\n FileBrowser: _helpers__WEBPACK_IMPORTED_MODULE_0__.FileBrowser,\n NamePattern: _helpers__WEBPACK_IMPORTED_MODULE_0__.NamePattern,\n SelectList: _helpers__WEBPACK_IMPORTED_MODULE_0__.SelectList\n },\n\n data() {\n return {\n presets: [{\n pattern: 'Season %0S/%SN - %Sx%0E - %EN',\n example: 'Season 02/Show Name - 2x03 - Ep Name'\n }, {\n pattern: 'Season %0S/%S.N.S%0SE%0E.%E.N',\n example: 'Season 02/Show.Name.S02E03.Ep.Name'\n }, {\n pattern: 'Season %S/%S_N_%Sx%0E_%E_N',\n example: 'Season 2/Show_Name_2x03_Ep_Name'\n }, {\n pattern: 'Season %S/%SN S%0SE%0E %SQN',\n example: 'Season 2/Show Name S02E03 720p HDTV x264'\n }, {\n pattern: 'Season %0S/%S.N.S%0SE%0E.%Q.N-%RG',\n example: 'Season 02/Show.Name.S02E03.720p.HDTV-RLSGROUP'\n }],\n processMethods: [{\n value: 'copy',\n text: 'Copy'\n }, {\n value: 'move',\n text: 'Move'\n }, {\n value: 'hardlink',\n text: 'Hard Link'\n }, {\n value: 'symlink',\n text: 'Symbolic Link'\n }, {\n value: 'keeplink',\n text: 'Keep Link'\n }],\n timezoneOptions: [{\n value: 'local',\n text: 'Local'\n }, {\n value: 'network',\n text: 'Network'\n }],\n metadataProviderSelected: null,\n saving: false\n };\n },\n\n methods: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_1__.mapActions)(['setConfig']),\n\n onChangeSyncFiles(items) {\n const {\n postprocessing\n } = this;\n postprocessing.syncFiles = items.map(item => item.value);\n },\n\n onChangeAllowedExtensions(items) {\n const {\n postprocessing\n } = this;\n postprocessing.allowedExtensions = items.map(item => item.value);\n },\n\n onChangeExtraScripts(items) {\n const {\n postprocessing\n } = this;\n postprocessing.extraScripts = items.map(item => item.value);\n },\n\n saveNaming(values) {\n const {\n postprocessing\n } = this;\n\n if (!this.configLoaded) {\n return;\n }\n\n postprocessing.naming.pattern = values.pattern;\n postprocessing.naming.multiEp = values.multiEpStyle;\n },\n\n saveNamingSports(values) {\n const {\n postprocessing\n } = this;\n\n if (!this.configLoaded) {\n return;\n }\n\n postprocessing.naming.patternSports = values.pattern;\n postprocessing.naming.enableCustomNamingSports = values.enabled;\n },\n\n saveNamingAbd(values) {\n const {\n postprocessing\n } = this;\n\n if (!this.configLoaded) {\n return;\n }\n\n postprocessing.naming.patternAirByDate = values.pattern;\n postprocessing.naming.enableCustomNamingAirByDate = values.enabled;\n },\n\n saveNamingAnime(values) {\n const {\n postprocessing\n } = this;\n\n if (!this.configLoaded) {\n return;\n }\n\n postprocessing.naming.patternAnime = values.pattern;\n postprocessing.naming.animeMultiEp = values.multiEpStyle;\n postprocessing.naming.animeNamingType = values.animeNamingType;\n postprocessing.naming.enableCustomNamingAnime = values.enabled;\n },\n\n async save() {\n const {\n postprocessing,\n metadata,\n setConfig\n } = this; // We want to wait until the page has been fully loaded, before starting to save stuff.\n\n if (!this.configLoaded) {\n return;\n } // Disable the save button until we're done.\n\n\n this.saving = true; // Clone the config into a new object\n\n const config = Object.assign({}, {\n postProcessing: postprocessing,\n metadata\n }); // Use destructuring to remove the unwanted keys.\n\n const {\n multiEpStrings,\n reflinkAvailable,\n extraScriptsUrl,\n ...rest\n } = postprocessing; // Assign the object with the keys removed to our copied object.\n\n config.postProcessing = rest;\n const section = 'main';\n\n try {\n await setConfig({\n section,\n config\n });\n this.$snotify.success('Saved Post-Processing config', 'Saved', {\n timeout: 5000\n });\n } catch (error) {\n this.$snotify.error('Error while trying to save Post-Processing config', 'Error');\n } finally {\n this.saving = false;\n }\n },\n\n /**\n * Get the first enabled metadata provider based on enabled features.\n * @param {Object} providers - The metadata providers object.\n * @return {String} - The id of the first enabled provider.\n */\n getFirstEnabledMetadataProvider() {\n const {\n metadata\n } = this;\n const firstEnabledProvider = Object.values(metadata.metadataProviders).find(provider => {\n return provider.showMetadata || provider.episodeMetadata;\n });\n return firstEnabledProvider === undefined ? 'kodi' : firstEnabledProvider.id;\n }\n\n },\n computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_1__.mapState)({\n config: state => state.config.general,\n metadata: state => state.config.metadata,\n postprocessing: state => state.config.postprocessing,\n torrentMethod: state => state.config.clients.torrents.method,\n system: state => state.config.system\n }),\n\n configLoaded() {\n const {\n postprocessing\n } = this;\n return postprocessing.processAutomatically !== null;\n },\n\n multiEpStringsSelect() {\n const {\n postprocessing\n } = this;\n\n if (!postprocessing.multiEpStrings) {\n return [];\n }\n\n return Object.keys(postprocessing.multiEpStrings).map(k => ({\n value: Number(k),\n text: postprocessing.multiEpStrings[k]\n }));\n },\n\n seedActions() {\n const {\n torrentMethod\n } = this;\n let actions = [{\n value: '',\n text: 'No action'\n }, {\n value: 'remove',\n text: 'Remove torrent'\n }, {\n value: 'pause',\n text: 'Pause torrent'\n }];\n const removeWithData = [{\n value: 'remove_with_data',\n text: 'Remove torrent with data'\n }];\n\n if (!['rtorrent'].includes(torrentMethod)) {\n actions = [...actions, ...removeWithData];\n }\n\n return actions;\n }\n\n },\n\n beforeMount() {\n // Wait for the next tick, so the component is rendered\n this.$nextTick(() => {\n $('#config-components').tabs();\n });\n },\n\n watch: {\n 'metadata.metadataProviders': function (providers) {\n // eslint-disable-line object-shorthand\n const {\n getFirstEnabledMetadataProvider\n } = this;\n\n if (Object.keys(providers).length > 0) {\n this.metadataProviderSelected = getFirstEnabledMetadataProvider();\n }\n }\n }\n});\n\n//# sourceURL=webpack://slim/./src/components/config-post-processing.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-1%5B0%5D.rules%5B0%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n/* provided dependency */ var $ = __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'config-post-processing',\n components: {\n AppLink: _helpers__WEBPACK_IMPORTED_MODULE_0__.AppLink,\n ConfigTextboxNumber: _helpers__WEBPACK_IMPORTED_MODULE_0__.ConfigTextboxNumber,\n ConfigToggleSlider: _helpers__WEBPACK_IMPORTED_MODULE_0__.ConfigToggleSlider,\n ConfigTemplate: _helpers__WEBPACK_IMPORTED_MODULE_0__.ConfigTemplate,\n FileBrowser: _helpers__WEBPACK_IMPORTED_MODULE_0__.FileBrowser,\n NamePattern: _helpers__WEBPACK_IMPORTED_MODULE_0__.NamePattern,\n SelectList: _helpers__WEBPACK_IMPORTED_MODULE_0__.SelectList\n },\n\n data() {\n return {\n presets: [{\n pattern: 'Season %0S/%SN - %Sx%0E - %EN',\n example: 'Season 02/Show Name - 2x03 - Ep Name'\n }, {\n pattern: 'Season %0S/%S.N.S%0SE%0E.%E.N',\n example: 'Season 02/Show.Name.S02E03.Ep.Name'\n }, {\n pattern: 'Season %S/%S_N_%Sx%0E_%E_N',\n example: 'Season 2/Show_Name_2x03_Ep_Name'\n }, {\n pattern: 'Season %S/%SN S%0SE%0E %SQN',\n example: 'Season 2/Show Name S02E03 720p HDTV x264'\n }, {\n pattern: 'Season %0S/%S.N.S%0SE%0E.%Q.N-%RG',\n example: 'Season 02/Show.Name.S02E03.720p.HDTV-RLSGROUP'\n }],\n processMethods: [{\n value: 'copy',\n text: 'Copy'\n }, {\n value: 'move',\n text: 'Move'\n }, {\n value: 'hardlink',\n text: 'Hard Link'\n }, {\n value: 'symlink',\n text: 'Symbolic Link'\n }, {\n value: 'keeplink',\n text: 'Keep Link'\n }],\n timezoneOptions: [{\n value: 'local',\n text: 'Local'\n }, {\n value: 'network',\n text: 'Network'\n }],\n metadataProviderSelected: null,\n saving: false\n };\n },\n\n methods: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_1__.mapActions)(['getConfig', 'setConfig']),\n\n onChangeSyncFiles(items) {\n const {\n postprocessing\n } = this;\n postprocessing.syncFiles = items.map(item => item.value);\n },\n\n onChangeAllowedExtensions(items) {\n const {\n postprocessing\n } = this;\n postprocessing.allowedExtensions = items.map(item => item.value);\n },\n\n onChangeExtraScripts(items) {\n const {\n postprocessing\n } = this;\n postprocessing.extraScripts = items.map(item => item.value);\n },\n\n saveNaming(values) {\n const {\n postprocessing\n } = this;\n\n if (!this.configLoaded) {\n return;\n }\n\n postprocessing.naming.pattern = values.pattern;\n postprocessing.naming.multiEp = values.multiEpStyle;\n },\n\n saveNamingSports(values) {\n const {\n postprocessing\n } = this;\n\n if (!this.configLoaded) {\n return;\n }\n\n postprocessing.naming.patternSports = values.pattern;\n postprocessing.naming.enableCustomNamingSports = values.enabled;\n },\n\n saveNamingAbd(values) {\n const {\n postprocessing\n } = this;\n\n if (!this.configLoaded) {\n return;\n }\n\n postprocessing.naming.patternAirByDate = values.pattern;\n postprocessing.naming.enableCustomNamingAirByDate = values.enabled;\n },\n\n saveNamingAnime(values) {\n const {\n postprocessing\n } = this;\n\n if (!this.configLoaded) {\n return;\n }\n\n postprocessing.naming.patternAnime = values.pattern;\n postprocessing.naming.animeMultiEp = values.multiEpStyle;\n postprocessing.naming.animeNamingType = values.animeNamingType;\n postprocessing.naming.enableCustomNamingAnime = values.enabled;\n },\n\n async save() {\n const {\n postprocessing,\n metadata,\n setConfig\n } = this; // We want to wait until the page has been fully loaded, before starting to save stuff.\n\n if (!this.configLoaded) {\n return;\n } // Disable the save button until we're done.\n\n\n this.saving = true; // Clone the config into a new object\n\n const config = Object.assign({}, {\n postProcessing: postprocessing,\n metadata\n }); // Use destructuring to remove the unwanted keys.\n\n const {\n multiEpStrings,\n reflinkAvailable,\n extraScriptsUrl,\n ...rest\n } = postprocessing; // Assign the object with the keys removed to our copied object.\n\n config.postProcessing = rest;\n const section = 'main';\n\n try {\n await setConfig({\n section,\n config\n });\n this.$snotify.success('Saved Post-Processing config', 'Saved', {\n timeout: 5000\n }); // Get system config to check for the ffmpeg binary.\n\n this.getConfig('system');\n } catch (error) {\n this.$snotify.error('Error while trying to save Post-Processing config', 'Error');\n } finally {\n this.saving = false;\n }\n },\n\n /**\n * Get the first enabled metadata provider based on enabled features.\n * @param {Object} providers - The metadata providers object.\n * @return {String} - The id of the first enabled provider.\n */\n getFirstEnabledMetadataProvider() {\n const {\n metadata\n } = this;\n const firstEnabledProvider = Object.values(metadata.metadataProviders).find(provider => {\n return provider.showMetadata || provider.episodeMetadata;\n });\n return firstEnabledProvider === undefined ? 'kodi' : firstEnabledProvider.id;\n }\n\n },\n computed: { ...(0,vuex__WEBPACK_IMPORTED_MODULE_1__.mapState)({\n config: state => state.config.general,\n metadata: state => state.config.metadata,\n postprocessing: state => state.config.postprocessing,\n torrentMethod: state => state.config.clients.torrents.method,\n system: state => state.config.system\n }),\n\n configLoaded() {\n const {\n postprocessing\n } = this;\n return postprocessing.processAutomatically !== null;\n },\n\n multiEpStringsSelect() {\n const {\n postprocessing\n } = this;\n\n if (!postprocessing.multiEpStrings) {\n return [];\n }\n\n return Object.keys(postprocessing.multiEpStrings).map(k => ({\n value: Number(k),\n text: postprocessing.multiEpStrings[k]\n }));\n },\n\n seedActions() {\n const {\n torrentMethod\n } = this;\n let actions = [{\n value: '',\n text: 'No action'\n }, {\n value: 'remove',\n text: 'Remove torrent'\n }, {\n value: 'pause',\n text: 'Pause torrent'\n }];\n const removeWithData = [{\n value: 'remove_with_data',\n text: 'Remove torrent with data'\n }];\n\n if (!['rtorrent'].includes(torrentMethod)) {\n actions = [...actions, ...removeWithData];\n }\n\n return actions;\n }\n\n },\n\n beforeMount() {\n // Wait for the next tick, so the component is rendered\n this.$nextTick(() => {\n $('#config-components').tabs();\n });\n },\n\n watch: {\n 'metadata.metadataProviders': function (providers) {\n // eslint-disable-line object-shorthand\n const {\n getFirstEnabledMetadataProvider\n } = this;\n\n if (Object.keys(providers).length > 0) {\n this.metadataProviderSelected = getFirstEnabledMetadataProvider();\n }\n }\n }\n});\n\n//# sourceURL=webpack://slim/./src/components/config-post-processing.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-1%5B0%5D.rules%5B0%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options"); /***/ }), @@ -191,7 +191,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'config',\n components: {\n AppLink: _helpers__WEBPACK_IMPORTED_MODULE_0__.AppLink\n },\n computed: (0,vuex__WEBPACK_IMPORTED_MODULE_1__.mapState)({\n config: state => state.config.general,\n system: state => state.config.system\n })\n});\n\n//# sourceURL=webpack://slim/./src/components/config.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-1%5B0%5D.rules%5B0%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers */ \"./src/components/helpers/index.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'config',\n components: {\n AppLink: _helpers__WEBPACK_IMPORTED_MODULE_0__.AppLink\n },\n computed: (0,vuex__WEBPACK_IMPORTED_MODULE_1__.mapState)({\n config: state => state.config.general,\n system: state => state.config.system\n })\n});\n\n//# sourceURL=webpack://slim/./src/components/config.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-1%5B0%5D.rules%5B0%5D!./node_modules/vue-loader/lib/index.js??vue-loader-options"); /***/ }), @@ -1621,7 +1621,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _mutation_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mutation-types */ \"./src/store/mutation-types.js\");\n\nconst state = {\n naming: {\n pattern: null,\n multiEp: null,\n enableCustomNamingSports: null,\n enableCustomNamingAirByDate: null,\n patternSports: null,\n patternAirByDate: null,\n enableCustomNamingAnime: null,\n patternAnime: null,\n animeMultiEp: null,\n animeNamingType: null,\n stripYear: null\n },\n showDownloadDir: null,\n processAutomatically: null,\n processMethod: null,\n deleteRarContent: null,\n unpack: null,\n noDelete: null,\n reflinkAvailable: null,\n postponeIfSyncFiles: null,\n autoPostprocessorFrequency: 10,\n airdateEpisodes: null,\n moveAssociatedFiles: null,\n allowedExtensions: [],\n addShowsWithoutDir: null,\n createMissingShowDirs: null,\n renameEpisodes: null,\n postponeIfNoSubs: null,\n nfoRename: null,\n syncFiles: [],\n fileTimestampTimezone: 'local',\n extraScripts: [],\n extraScriptsUrl: null,\n multiEpStrings: {},\n downloadHandler: {\n enabled: null,\n frequency: null,\n minFrequency: null,\n torrentSeedRatio: null,\n torrentSeedAction: null\n }\n};\nconst mutations = {\n [_mutation_types__WEBPACK_IMPORTED_MODULE_0__.ADD_CONFIG](state, _ref) {\n let {\n section,\n config\n } = _ref;\n\n if (section === 'postprocessing') {\n state = Object.assign(state, config);\n }\n }\n\n};\nconst getters = {};\nconst actions = {};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n state,\n mutations,\n getters,\n actions\n});\n\n//# sourceURL=webpack://slim/./src/store/modules/config/postprocessing.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _mutation_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mutation-types */ \"./src/store/mutation-types.js\");\n\nconst state = {\n naming: {\n pattern: null,\n multiEp: null,\n enableCustomNamingSports: null,\n enableCustomNamingAirByDate: null,\n patternSports: null,\n patternAirByDate: null,\n enableCustomNamingAnime: null,\n patternAnime: null,\n animeMultiEp: null,\n animeNamingType: null,\n stripYear: null\n },\n showDownloadDir: null,\n processAutomatically: null,\n processMethod: null,\n deleteRarContent: null,\n unpack: null,\n noDelete: null,\n reflinkAvailable: null,\n postponeIfSyncFiles: null,\n autoPostprocessorFrequency: 10,\n airdateEpisodes: null,\n moveAssociatedFiles: null,\n allowedExtensions: [],\n addShowsWithoutDir: null,\n createMissingShowDirs: null,\n renameEpisodes: null,\n postponeIfNoSubs: null,\n nfoRename: null,\n syncFiles: [],\n fileTimestampTimezone: 'local',\n extraScripts: [],\n extraScriptsUrl: null,\n multiEpStrings: {},\n downloadHandler: {\n enabled: null,\n frequency: null,\n minFrequency: null,\n torrentSeedRatio: null,\n torrentSeedAction: null\n },\n ffmpeg: {\n checkStreams: null,\n path: ''\n }\n};\nconst mutations = {\n [_mutation_types__WEBPACK_IMPORTED_MODULE_0__.ADD_CONFIG](state, _ref) {\n let {\n section,\n config\n } = _ref;\n\n if (section === 'postprocessing') {\n state = Object.assign(state, config);\n }\n }\n\n};\nconst getters = {};\nconst actions = {};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n state,\n mutations,\n getters,\n actions\n});\n\n//# sourceURL=webpack://slim/./src/store/modules/config/postprocessing.js?"); /***/ }), @@ -1654,7 +1654,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _mutation_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mutation-types */ \"./src/store/mutation-types.js\");\n/* harmony import */ var _api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../api.js */ \"./src/api.js\");\n\n\n/**\n * An object representing a scheduler.\n *\n * If a scheduler isn't initialized on the backend,\n * this object will only have the `key` and `name` properties.\n * @typedef {object} Scheduler\n * @property {string} key\n * A camelCase key representing this scheduler.\n * @property {string} name\n * The scheduler's name.\n * @property {boolean} [isAlive]\n * Is the scheduler alive?\n * @property {boolean|string} [isEnabled]\n * Is the scheduler enabled? For the `backlog` scheduler, the value might be `Paused`.\n * @property {boolean} [isActive]\n * Is the scheduler's action currently running?\n * @property {string|null} [startTime]\n * The time of day in which this scheduler runs (format: ISO-8601 time), or `null` if not applicable.\n * @property {number} [cycleTime]\n * The duration in milliseconds between each run, or `null` if not applicable.\n * @property {number} [nextRun]\n * The duration in milliseconds until the next run.\n * @property {string} [lastRun]\n * The date and time of the previous run (format: ISO-8601 date-time).\n * @property {boolean} [isSilent]\n * Is the scheduler silent?\n */\n\nconst state = {\n branch: null,\n memoryUsage: null,\n schedulers: [],\n showQueue: [],\n diskSpace: [],\n sslVersion: null,\n pythonVersion: null,\n pid: null,\n os: null,\n logDir: null,\n dbPath: null,\n configFile: null,\n databaseVersion: {\n major: null,\n minor: null\n },\n locale: null,\n timezone: null,\n localUser: null,\n programDir: null,\n dataDir: null,\n cacheDir: null,\n appArgs: [],\n webRoot: null,\n runsInDocker: null,\n newestVersionMessage: null,\n gitRemoteBranches: [],\n cpuPresets: null,\n news: {\n lastRead: null,\n latest: null,\n unread: null\n }\n};\nconst mutations = {\n [_mutation_types__WEBPACK_IMPORTED_MODULE_0__.ADD_CONFIG](state, _ref) {\n let {\n section,\n config\n } = _ref;\n\n if (section === 'system') {\n state = Object.assign(state, config);\n }\n },\n\n [_mutation_types__WEBPACK_IMPORTED_MODULE_0__.ADD_REMOTE_BRANCHES](state, branches) {\n state.gitRemoteBranches = branches;\n }\n\n};\nconst getters = {\n getScheduler: state => {\n /**\n * Get a scheduler object using a key.\n *\n * @param {string} key The combined quality to split.\n * @returns {Scheduler|object} The scheduler object or an empty object if not found.\n */\n const _getScheduler = key => state.schedulers.find(scheduler => key === scheduler.key) || {};\n\n return _getScheduler;\n }\n};\nconst actions = {\n getGitRemoteBranches(context) {\n const {\n commit\n } = context;\n return (0,_api_js__WEBPACK_IMPORTED_MODULE_1__.apiRoute)('home/branchForceUpdate').then(response => {\n if (response.data && response.data.branches.length > 0) {\n commit(_mutation_types__WEBPACK_IMPORTED_MODULE_0__.ADD_REMOTE_BRANCHES, response.data.branches);\n return response.data.branches;\n }\n });\n },\n\n getShowQueue(context) {\n const {\n commit\n } = context;\n return _api_js__WEBPACK_IMPORTED_MODULE_1__.api.get('/config/system/showQueue').then(res => {\n const showQueue = res.data;\n const config = {\n showQueue\n };\n commit(_mutation_types__WEBPACK_IMPORTED_MODULE_0__.ADD_CONFIG, {\n section: 'system',\n config\n });\n return showQueue;\n });\n },\n\n updateQueueItemShow(context, queueItem) {\n // Update store's show queue item. (provided through websocket)\n const {\n commit\n } = context;\n return commit(_mutation_types__WEBPACK_IMPORTED_MODULE_0__.ADD_SHOW_QUEUE_ITEM, queueItem);\n }\n\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n state,\n mutations,\n getters,\n actions\n});\n\n//# sourceURL=webpack://slim/./src/store/modules/config/system.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _mutation_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mutation-types */ \"./src/store/mutation-types.js\");\n/* harmony import */ var _api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../api.js */ \"./src/api.js\");\n\n\n/**\n * An object representing a scheduler.\n *\n * If a scheduler isn't initialized on the backend,\n * this object will only have the `key` and `name` properties.\n * @typedef {object} Scheduler\n * @property {string} key\n * A camelCase key representing this scheduler.\n * @property {string} name\n * The scheduler's name.\n * @property {boolean} [isAlive]\n * Is the scheduler alive?\n * @property {boolean|string} [isEnabled]\n * Is the scheduler enabled? For the `backlog` scheduler, the value might be `Paused`.\n * @property {boolean} [isActive]\n * Is the scheduler's action currently running?\n * @property {string|null} [startTime]\n * The time of day in which this scheduler runs (format: ISO-8601 time), or `null` if not applicable.\n * @property {number} [cycleTime]\n * The duration in milliseconds between each run, or `null` if not applicable.\n * @property {number} [nextRun]\n * The duration in milliseconds until the next run.\n * @property {string} [lastRun]\n * The date and time of the previous run (format: ISO-8601 date-time).\n * @property {boolean} [isSilent]\n * Is the scheduler silent?\n */\n\nconst state = {\n branch: null,\n memoryUsage: null,\n schedulers: [],\n showQueue: [],\n diskSpace: [],\n sslVersion: null,\n pythonVersion: null,\n pid: null,\n os: null,\n logDir: null,\n dbPath: null,\n configFile: null,\n databaseVersion: {\n major: null,\n minor: null\n },\n locale: null,\n timezone: null,\n localUser: null,\n programDir: null,\n dataDir: null,\n cacheDir: null,\n appArgs: [],\n webRoot: null,\n runsInDocker: null,\n newestVersionMessage: null,\n gitRemoteBranches: [],\n cpuPresets: null,\n news: {\n lastRead: null,\n latest: null,\n unread: null\n },\n ffprobeVersion: null\n};\nconst mutations = {\n [_mutation_types__WEBPACK_IMPORTED_MODULE_0__.ADD_CONFIG](state, _ref) {\n let {\n section,\n config\n } = _ref;\n\n if (section === 'system') {\n state = Object.assign(state, config);\n }\n },\n\n [_mutation_types__WEBPACK_IMPORTED_MODULE_0__.ADD_REMOTE_BRANCHES](state, branches) {\n state.gitRemoteBranches = branches;\n }\n\n};\nconst getters = {\n getScheduler: state => {\n /**\n * Get a scheduler object using a key.\n *\n * @param {string} key The combined quality to split.\n * @returns {Scheduler|object} The scheduler object or an empty object if not found.\n */\n const _getScheduler = key => state.schedulers.find(scheduler => key === scheduler.key) || {};\n\n return _getScheduler;\n }\n};\nconst actions = {\n getGitRemoteBranches(context) {\n const {\n commit\n } = context;\n return (0,_api_js__WEBPACK_IMPORTED_MODULE_1__.apiRoute)('home/branchForceUpdate').then(response => {\n if (response.data && response.data.branches.length > 0) {\n commit(_mutation_types__WEBPACK_IMPORTED_MODULE_0__.ADD_REMOTE_BRANCHES, response.data.branches);\n return response.data.branches;\n }\n });\n },\n\n getShowQueue(context) {\n const {\n commit\n } = context;\n return _api_js__WEBPACK_IMPORTED_MODULE_1__.api.get('/config/system/showQueue').then(res => {\n const showQueue = res.data;\n const config = {\n showQueue\n };\n commit(_mutation_types__WEBPACK_IMPORTED_MODULE_0__.ADD_CONFIG, {\n section: 'system',\n config\n });\n return showQueue;\n });\n },\n\n updateQueueItemShow(context, queueItem) {\n // Update store's show queue item. (provided through websocket)\n const {\n commit\n } = context;\n return commit(_mutation_types__WEBPACK_IMPORTED_MODULE_0__.ADD_SHOW_QUEUE_ITEM, queueItem);\n }\n\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n state,\n mutations,\n getters,\n actions\n});\n\n//# sourceURL=webpack://slim/./src/store/modules/config/system.js?"); /***/ }), @@ -6702,7 +6702,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => (/* binding */ render),\n/* harmony export */ \"staticRenderFns\": () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"config\" } }, [\n _c(\"div\", { attrs: { id: \"config-content\" } }, [\n _c(\n \"form\",\n {\n staticClass: \"form-horizontal\",\n attrs: { id: \"configForm\" },\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.save()\n }\n }\n },\n [\n _c(\"div\", { attrs: { id: \"config-components\" } }, [\n _c(\"ul\", [\n _c(\n \"li\",\n [\n _c(\"app-link\", { attrs: { href: \"#post-processing\" } }, [\n _vm._v(\"Post-Processing\")\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"li\",\n [\n _c(\"app-link\", { attrs: { href: \"#episode-naming\" } }, [\n _vm._v(\"Episode Naming\")\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"li\",\n [\n _c(\"app-link\", { attrs: { href: \"#metadata\" } }, [\n _vm._v(\"Metadata\")\n ])\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"post-processing\" } }, [\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(0),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Scheduled Post-Processor\",\n id: \"process_automatically\"\n },\n model: {\n value: _vm.postprocessing.processAutomatically,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"processAutomatically\",\n $$v\n )\n },\n expression: \"postprocessing.processAutomatically\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Enable the scheduled post-processor to scan and process any files in your \"\n ),\n _c(\"i\", [_vm._v(\"Post-Processing Dir\")]),\n _vm._v(\"?\")\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"clear-left\" }, [\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" Do not use if you use an external post-processing script\"\n )\n ])\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox-number\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.postprocessing.processAutomatically,\n expression: \"postprocessing.processAutomatically\"\n }\n ],\n attrs: {\n label: \"Auto Post-Processing Frequency\",\n id: \"autopostprocessor_frequency\",\n min: 10,\n step: 1\n },\n model: {\n value:\n _vm.postprocessing.autoPostprocessorFrequency,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"autoPostprocessorFrequency\",\n $$v\n )\n },\n expression:\n \"postprocessing.autoPostprocessorFrequency\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Time in minutes to check for new files to auto post-process (min 10)\"\n )\n ])\n ]\n )\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(1),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Enable download handler\",\n id: \"enable_download_handler\"\n },\n model: {\n value: _vm.postprocessing.downloadHandler.enabled,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing.downloadHandler,\n \"enabled\",\n $$v\n )\n },\n expression: \"postprocessing.downloadHandler.enabled\"\n }\n },\n [\n _c(\"p\", [_vm._v(\"Enable download handler\")]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \"Do not combine with scheduled post processing or external pp scripts!\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox-number\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.postprocessing.downloadHandler.enabled,\n expression:\n \"postprocessing.downloadHandler.enabled\"\n }\n ],\n attrs: {\n min:\n _vm.postprocessing.downloadHandler.minFrequency,\n step: 1,\n label: \"Download handler frequency\",\n id: \"download_handler_frequency\"\n },\n model: {\n value: _vm.postprocessing.downloadHandler.frequency,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing.downloadHandler,\n \"frequency\",\n _vm._n($$v)\n )\n },\n expression:\n \"postprocessing.downloadHandler.frequency\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Frequency to check on the download clients (default: 60)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm.postprocessing.downloadHandler.enabled\n ? _c(\n \"config-textbox-number\",\n {\n attrs: {\n label: \"Global torrent seed ratio\",\n id: \"torrent_seed_ratio\",\n step: 0.1,\n min: 0,\n max: 100\n },\n model: {\n value:\n _vm.postprocessing.downloadHandler\n .torrentSeedRatio,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing.downloadHandler,\n \"torrentSeedRatio\",\n $$v\n )\n },\n expression:\n \"postprocessing.downloadHandler.torrentSeedRatio\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Torrent seed ratio used to trigger a torrent seed action\"\n )\n ])\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"torrent_seed_action\",\n label: \"Torrent seed action\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value:\n _vm.postprocessing.downloadHandler\n .torrentSeedAction,\n expression:\n \"postprocessing.downloadHandler.torrentSeedAction\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"torrent_seed_action\",\n name: \"torrent_seed_action\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.postprocessing.downloadHandler,\n \"torrentSeedAction\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.seedActions, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Setting the ratio to 0, will have it perform the action directly after postprocessing.)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"default_client_path\",\n label: \"Default client path\"\n }\n },\n [\n _c(\"file-browser\", {\n attrs: {\n id: \"default_client_path\",\n name: \"default_client_path\",\n title: \"Select client download location\",\n \"initial-dir\":\n _vm.postprocessing.defaultClientPath\n },\n on: {\n update: function($event) {\n _vm.postprocessing.defaultClientPath = $event\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"clear-left\" }, [\n _vm._v(\n \"To prevent postprocessing from deleting your (root) download location, select the location to protect it from removal.\"\n )\n ])\n ],\n 1\n )\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(2),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"tv_download_dir\",\n label: \"Post-Processing Dir\"\n }\n },\n [\n _c(\"file-browser\", {\n attrs: {\n id: \"tv_download_dir\",\n name: \"tv_download_dir\",\n title: \"Select series download location\",\n \"initial-dir\": _vm.postprocessing.showDownloadDir\n },\n on: {\n update: function($event) {\n _vm.postprocessing.showDownloadDir = $event\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"clear-left\" }, [\n _vm._v(\n \"The folder where your download client puts the completed TV downloads.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"clear-left\" }, [\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" Please use separate downloading and completed folders in your download client if possible.\"\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"The Post processing dir is also used when your download client is running on a different machine. It will try to map a postprocessed folder to PP dir.\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"processing_method\",\n label: \"Processing Method\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.postprocessing.processMethod,\n expression: \"postprocessing.processMethod\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"processing_method\",\n name: \"processing_method\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.postprocessing,\n \"processMethod\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.processMethods, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"What method should be used to put files into the library?\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" If you keep seeding torrents after they finish, please avoid the 'move' processing method to prevent errors.\"\n )\n ]),\n _vm._v(\" \"),\n _vm.postprocessing.processMethod == \"reflink\"\n ? _c(\n \"p\",\n [\n _vm._v(\"To use reference linking, the \"),\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n \"https://pypi.python.org/pypi/reflink/0.1.4\"\n }\n },\n [_vm._v(\"reflink package\")]\n ),\n _vm._v(\" needs to be installed.\")\n ],\n 1\n )\n : _vm._e()\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Specific postprocessing methods\",\n id: \"specific_post_processing\"\n },\n model: {\n value: _vm.postprocessing.specificPostProcessing,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"specificPostProcessing\",\n $$v\n )\n },\n expression: \"postprocessing.specificPostProcessing\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Enable this option if you want to use different processing methods (copy, move, etc..) for torrent and nzb downloads.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\"This option is only used by the \"),\n _c(\n \"a\",\n {\n attrs: {\n href:\n \"config/postProcessing/#automated-download-handling\"\n }\n },\n [_vm._v(\"Automated Download Handling\")]\n ),\n _vm._v(\" option\")\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm.postprocessing.specificPostProcessing\n ? _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"processing_method_torrent\",\n label: \"Processing Method Torrent\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value:\n _vm.postprocessing.processMethodTorrent,\n expression:\n \"postprocessing.processMethodTorrent\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"processing_method_torrent\",\n name: \"processing_method_torrent\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(\n o\n ) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.postprocessing,\n \"processMethodTorrent\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.processMethods, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"What method should be used to put files into the library?\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" If you keep seeding torrents after they finish, please avoid the 'move' processing method to prevent errors.\"\n )\n ]),\n _vm._v(\" \"),\n _vm.postprocessing.processMethod == \"reflink\"\n ? _c(\n \"p\",\n [\n _vm._v(\"To use reference linking, the \"),\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n \"https://pypi.python.org/pypi/reflink/0.1.4\"\n }\n },\n [_vm._v(\"reflink package\")]\n ),\n _vm._v(\" needs to be installed.\")\n ],\n 1\n )\n : _vm._e()\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.postprocessing.specificPostProcessing\n ? _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"processing_method_nzb\",\n label: \"Processing Method Nzb\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value:\n _vm.postprocessing.processMethodNzb,\n expression:\n \"postprocessing.processMethodNzb\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"processing_method_nzb\",\n name: \"processing_method_nzb\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(\n o\n ) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.postprocessing,\n \"processMethodNzb\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.processMethods, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"What method should be used to put files into the library?\"\n )\n ]),\n _vm._v(\" \"),\n _vm.postprocessing.processMethod == \"reflink\"\n ? _c(\n \"p\",\n [\n _vm._v(\"To use reference linking, the \"),\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n \"https://pypi.python.org/pypi/reflink/0.1.4\"\n }\n },\n [_vm._v(\"reflink package\")]\n ),\n _vm._v(\" needs to be installed.\")\n ],\n 1\n )\n : _vm._e()\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Postpone post-processing\",\n id: \"postpone_if_sync_files\"\n },\n model: {\n value: _vm.postprocessing.postponeIfSyncFiles,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"postponeIfSyncFiles\",\n $$v\n )\n },\n expression: \"postprocessing.postponeIfSyncFiles\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Wait to process a folder if sync files are present.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"sync_files\",\n label: \"Sync File Extensions\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n name: \"sync_files\",\n id: \"sync_files\",\n \"csv-enabled\": \"\",\n \"list-items\": _vm.postprocessing.syncFiles\n },\n on: { change: _vm.onChangeSyncFiles }\n }),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"Comma separated list of extensions or filename globs Medusa ignores when post-processing\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Postpone if no subtitle\",\n id: \"postpone_if_no_subs\"\n },\n model: {\n value: _vm.postprocessing.postponeIfNoSubs,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"postponeIfNoSubs\",\n $$v\n )\n },\n expression: \"postprocessing.postponeIfNoSubs\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Wait to process a file until subtitles are present\"\n )\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"Language names are allowed in subtitle filename (en.srt, pt-br.srt, ita.srt, etc.)\"\n )\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" Automatic post-processor should be disabled to avoid files with pending subtitles being processed over and over.\"\n )\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"If you have any active show with subtitle search disabled, you must enable Automatic post-processor.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Rename Episodes\",\n id: \"rename_episodes\"\n },\n model: {\n value: _vm.postprocessing.renameEpisodes,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"renameEpisodes\",\n $$v\n )\n },\n expression: \"postprocessing.renameEpisodes\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Rename episode using the Episode Naming settings?\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Create missing show directories\",\n id: \"create_missing_show_dirs\"\n },\n model: {\n value: _vm.postprocessing.createMissingShowDirs,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"createMissingShowDirs\",\n $$v\n )\n },\n expression: \"postprocessing.createMissingShowDirs\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Create missing show directories when they get deleted\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Add shows without directory\",\n id: \"add_shows_wo_dir\"\n },\n model: {\n value: _vm.postprocessing.addShowsWithoutDir,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"addShowsWithoutDir\",\n $$v\n )\n },\n expression: \"postprocessing.addShowsWithoutDir\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Add shows without creating a directory (not recommended)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Delete associated files\",\n id: \"move_associated_files\"\n },\n model: {\n value: _vm.postprocessing.moveAssociatedFiles,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"moveAssociatedFiles\",\n $$v\n )\n },\n expression: \"postprocessing.moveAssociatedFiles\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Delete srt/srr/sfv/etc files while post-processing?\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"allowed_extensions\",\n label: \"Keep associated file extensions\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n name: \"allowed_extensions\",\n id: \"allowed_extensions\",\n \"csv-enabled\": \"\",\n \"list-items\": _vm.postprocessing.allowedExtensions\n },\n on: { change: _vm.onChangeAllowedExtensions }\n }),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"Comma separated list of associated file extensions Medusa should keep while post-processing.\"\n )\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"Leaving it empty means all associated files will be deleted\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Rename .nfo file\",\n id: \"nfo_rename\"\n },\n model: {\n value: _vm.postprocessing.nfoRename,\n callback: function($$v) {\n _vm.$set(_vm.postprocessing, \"nfoRename\", $$v)\n },\n expression: \"postprocessing.nfoRename\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Rename the original .nfo file to .nfo-orig to avoid conflicts?\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Change File Date\",\n id: \"airdate_episodes\"\n },\n model: {\n value: _vm.postprocessing.airdateEpisodes,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"airdateEpisodes\",\n $$v\n )\n },\n expression: \"postprocessing.airdateEpisodes\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Set last modified filedate to the date that the episode aired?\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"file_timestamp_timezone\",\n label: \"Timezone for File Date\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value:\n _vm.postprocessing.fileTimestampTimezone,\n expression:\n \"postprocessing.fileTimestampTimezone\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"file_timestamp_timezone\",\n name: \"file_timestamp_timezone\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.postprocessing,\n \"fileTimestampTimezone\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.timezoneOptions, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"What timezone should be used to change File Date?\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Unpack\", id: \"unpack\" },\n model: {\n value: _vm.postprocessing.unpack,\n callback: function($$v) {\n _vm.$set(_vm.postprocessing, \"unpack\", $$v)\n },\n expression: \"postprocessing.unpack\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\"Unpack any TV releases in your \"),\n _c(\"i\", [_vm._v(\"TV Download Dir\")]),\n _vm._v(\"?\")\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\" Only working with RAR archive\")\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Delete RAR contents\",\n id: \"del_rar_contents\"\n },\n model: {\n value: _vm.postprocessing.deleteRarContent,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"deleteRarContent\",\n $$v\n )\n },\n expression: \"postprocessing.deleteRarContent\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Delete content of RAR files, even if Process Method not set to move?\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Don't delete empty folders\",\n id: \"no_delete\"\n },\n model: {\n value: _vm.postprocessing.noDelete,\n callback: function($$v) {\n _vm.$set(_vm.postprocessing, \"noDelete\", $$v)\n },\n expression: \"postprocessing.noDelete\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\"Leave empty folders when post-processing?\")\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" Can be overridden using manual post-processing\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"extra_scripts\",\n label: \"Extra Scripts\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n name: \"extra_scripts\",\n id: \"extra_scripts\",\n \"csv-enabled\": \"\",\n \"list-items\": _vm.postprocessing.extraScripts\n },\n on: { change: _vm.onChangeExtraScripts }\n }),\n _vm._v(\" \"),\n _c(\n \"span\",\n [\n _vm._v(\"See \"),\n _c(\n \"app-link\",\n {\n staticClass: \"wikie\",\n attrs: {\n href: _vm.postprocessing.extraScriptsUrl\n }\n },\n [_c(\"strong\", [_vm._v(\"Wiki\")])]\n ),\n _vm._v(\n \" for script arguments description and usage.\"\n )\n ],\n 1\n )\n ],\n 1\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa config_submitter\",\n attrs: {\n type: \"submit\",\n value: \"Save Changes\",\n disabled: _vm.saving\n }\n })\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"episode-naming\" } }, [\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(3),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\"name-pattern\", {\n staticClass: \"component-item\",\n attrs: {\n \"naming-pattern\": _vm.postprocessing.naming.pattern,\n \"naming-presets\": _vm.presets,\n \"multi-ep-style\": _vm.postprocessing.naming.multiEp,\n \"multi-ep-styles\": _vm.multiEpStringsSelect,\n \"flag-loaded\": _vm.configLoaded\n },\n on: { change: _vm.saveNaming }\n }),\n _vm._v(\" \"),\n _c(\"name-pattern\", {\n staticClass: \"component-item\",\n attrs: {\n enabled:\n _vm.postprocessing.naming.enableCustomNamingSports,\n \"naming-pattern\":\n _vm.postprocessing.naming.patternSports,\n \"naming-presets\": _vm.presets,\n type: \"sports\",\n \"enabled-naming-custom\":\n _vm.postprocessing.naming.enableCustomNamingSports,\n \"flag-loaded\": _vm.configLoaded\n },\n on: { change: _vm.saveNamingSports }\n }),\n _vm._v(\" \"),\n _c(\"name-pattern\", {\n staticClass: \"component-item\",\n attrs: {\n enabled:\n _vm.postprocessing.naming\n .enableCustomNamingAirByDate,\n \"naming-pattern\":\n _vm.postprocessing.naming.patternAirByDate,\n \"naming-presets\": _vm.presets,\n type: \"airs by date\",\n \"enabled-naming-custom\":\n _vm.postprocessing.naming\n .enableCustomNamingAirByDate,\n \"flag-loaded\": _vm.configLoaded\n },\n on: { change: _vm.saveNamingAbd }\n }),\n _vm._v(\" \"),\n _c(\"name-pattern\", {\n staticClass: \"component-item\",\n attrs: {\n enabled:\n _vm.postprocessing.naming.enableCustomNamingAnime,\n \"naming-pattern\":\n _vm.postprocessing.naming.patternAnime,\n \"naming-presets\": _vm.presets,\n type: \"anime\",\n \"multi-ep-style\":\n _vm.postprocessing.naming.animeMultiEp,\n \"multi-ep-styles\": _vm.multiEpStringsSelect,\n \"anime-naming-type\":\n _vm.postprocessing.naming.animeNamingType,\n \"enabled-naming-custom\":\n _vm.postprocessing.naming.enableCustomNamingAnime,\n \"flag-loaded\": _vm.configLoaded\n },\n on: { change: _vm.saveNamingAnime }\n }),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n staticStyle: { \"margin-top\": \"1em\" },\n attrs: {\n label: \"Strip Show Year\",\n id: \"naming_strip_year\"\n },\n model: {\n value: _vm.postprocessing.naming.stripYear,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing.naming,\n \"stripYear\",\n $$v\n )\n },\n expression: \"postprocessing.naming.stripYear\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Remove the TV show's year when renaming the file?\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Only applies to shows that have year inside parentheses\"\n )\n ])\n ]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa config_submitter\",\n attrs: {\n type: \"submit\",\n value: \"Save Changes\",\n disabled: _vm.saving\n }\n })\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"metadata\" } }, [\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(4),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"metadata_type\",\n label: \"Metadata Type\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.metadataProviderSelected,\n expression: \"metadataProviderSelected\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"metadataType\",\n name: \"metadataType\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.metadataProviderSelected = $event.target\n .multiple\n ? $$selectedVal\n : $$selectedVal[0]\n }\n }\n },\n _vm._l(_vm.metadata.metadataProviders, function(\n option\n ) {\n return _c(\n \"option\",\n {\n key: option.id,\n domProps: { value: option.id }\n },\n [_vm._v(_vm._s(option.name))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"d-block\" }, [\n _vm._v(\n \"Toggle the metadata options that you wish to be created. \"\n ),\n _c(\"b\", [_vm._v(\"Multiple targets may be used.\")])\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm._l(_vm.metadata.metadataProviders, function(\n provider\n ) {\n return _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value:\n provider.id === _vm.metadataProviderSelected,\n expression:\n \"provider.id === metadataProviderSelected\"\n }\n ],\n key: provider.id,\n staticClass: \"metadata\",\n attrs: { id: \"provider.id\" }\n },\n [\n _c(\n \"div\",\n { staticClass: \"metadata-options-wrapper\" },\n [\n _c(\"h4\", [_vm._v(\"Create:\")]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"metadata_options\" }, [\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_show_metadata\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.showMetadata,\n expression: \"provider.showMetadata\"\n }\n ],\n staticClass: \"metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_show_metadata\"\n },\n domProps: {\n checked: Array.isArray(\n provider.showMetadata\n )\n ? _vm._i(\n provider.showMetadata,\n null\n ) > -1\n : provider.showMetadata\n },\n on: {\n change: function($event) {\n var $$a = provider.showMetadata,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"showMetadata\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"showMetadata\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"showMetadata\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Show Metadata\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_episode_metadata\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.episodeMetadata,\n expression:\n \"provider.episodeMetadata\"\n }\n ],\n staticClass: \"metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_episode_metadata\",\n disabled: provider.example.episodeMetadata.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.episodeMetadata\n )\n ? _vm._i(\n provider.episodeMetadata,\n null\n ) > -1\n : provider.episodeMetadata\n },\n on: {\n change: function($event) {\n var $$a = provider.episodeMetadata,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"episodeMetadata\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"episodeMetadata\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"episodeMetadata\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Episode Metadata\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n { attrs: { for: provider.id + \"_fanart\" } },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.fanart,\n expression: \"provider.fanart\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_fanart\",\n disabled: provider.example.fanart.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.fanart\n )\n ? _vm._i(provider.fanart, null) > -1\n : provider.fanart\n },\n on: {\n change: function($event) {\n var $$a = provider.fanart,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"fanart\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"fanart\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(provider, \"fanart\", $$c)\n }\n }\n }\n }),\n _vm._v(\" Show Fanart\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n { attrs: { for: provider.id + \"_poster\" } },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.poster,\n expression: \"provider.poster\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_poster\",\n disabled: provider.example.poster.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.poster\n )\n ? _vm._i(provider.poster, null) > -1\n : provider.poster\n },\n on: {\n change: function($event) {\n var $$a = provider.poster,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"poster\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"poster\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(provider, \"poster\", $$c)\n }\n }\n }\n }),\n _vm._v(\" Show Poster\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n { attrs: { for: provider.id + \"_banner\" } },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.banner,\n expression: \"provider.banner\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_banner\",\n disabled: provider.example.banner.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.banner\n )\n ? _vm._i(provider.banner, null) > -1\n : provider.banner\n },\n on: {\n change: function($event) {\n var $$a = provider.banner,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"banner\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"banner\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(provider, \"banner\", $$c)\n }\n }\n }\n }),\n _vm._v(\" Show Banner\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_episode_thumbnails\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.episodeThumbnails,\n expression:\n \"provider.episodeThumbnails\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id:\n provider.id + \"_episode_thumbnails\",\n disabled: provider.example.episodeThumbnails.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.episodeThumbnails\n )\n ? _vm._i(\n provider.episodeThumbnails,\n null\n ) > -1\n : provider.episodeThumbnails\n },\n on: {\n change: function($event) {\n var $$a =\n provider.episodeThumbnails,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"episodeThumbnails\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"episodeThumbnails\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"episodeThumbnails\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Episode Thumbnails\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_posters\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.seasonPosters,\n expression: \"provider.seasonPosters\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_season_posters\",\n disabled: provider.example.seasonPosters.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.seasonPosters\n )\n ? _vm._i(\n provider.seasonPosters,\n null\n ) > -1\n : provider.seasonPosters\n },\n on: {\n change: function($event) {\n var $$a = provider.seasonPosters,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"seasonPosters\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"seasonPosters\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"seasonPosters\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Season Posters\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_banners\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.seasonBanners,\n expression: \"provider.seasonBanners\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_season_banners\",\n disabled: provider.example.seasonBanners.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.seasonBanners\n )\n ? _vm._i(\n provider.seasonBanners,\n null\n ) > -1\n : provider.seasonBanners\n },\n on: {\n change: function($event) {\n var $$a = provider.seasonBanners,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"seasonBanners\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"seasonBanners\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"seasonBanners\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Season Banners\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_all_poster\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.seasonAllPoster,\n expression:\n \"provider.seasonAllPoster\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id:\n provider.id + \"_season_all_poster\",\n disabled: provider.example.seasonAllPoster.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.seasonAllPoster\n )\n ? _vm._i(\n provider.seasonAllPoster,\n null\n ) > -1\n : provider.seasonAllPoster\n },\n on: {\n change: function($event) {\n var $$a = provider.seasonAllPoster,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"seasonAllPoster\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"seasonAllPoster\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"seasonAllPoster\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Season All Poster\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_all_banner\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.seasonAllBanner,\n expression:\n \"provider.seasonAllBanner\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id:\n provider.id + \"_season_all_banner\",\n disabled: provider.example.seasonAllBanner.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.seasonAllBanner\n )\n ? _vm._i(\n provider.seasonAllBanner,\n null\n ) > -1\n : provider.seasonAllBanner\n },\n on: {\n change: function($event) {\n var $$a = provider.seasonAllBanner,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"seasonAllBanner\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"seasonAllBanner\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"seasonAllBanner\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Season All Banner\")\n ]\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"metadata-example-wrapper\" },\n [\n _c(\"h4\", [_vm._v(\"Results:\")]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"metadata_example\" }, [\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_show_metadata\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.showMetadata\n },\n attrs: {\n id:\n provider.id + \"_eg_show_metadata\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .showMetadata +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_episode_metadata\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.episodeMetadata\n },\n attrs: {\n id:\n provider.id +\n \"_eg_episode_metadata\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .episodeMetadata +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n { attrs: { for: provider.id + \"_fanart\" } },\n [\n _c(\n \"span\",\n {\n class: { disabled: !provider.fanart },\n attrs: {\n id: provider.id + \"_eg_fanart\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example.fanart +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n { attrs: { for: provider.id + \"_poster\" } },\n [\n _c(\n \"span\",\n {\n class: { disabled: !provider.poster },\n attrs: {\n id: provider.id + \"_eg_poster\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example.poster +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n { attrs: { for: provider.id + \"_banner\" } },\n [\n _c(\n \"span\",\n {\n class: { disabled: !provider.banner },\n attrs: {\n id: provider.id + \"_eg_banner\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example.banner +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_episode_thumbnails\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.episodeThumbnails\n },\n attrs: {\n id:\n provider.id +\n \"_eg_episode_thumbnails\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .episodeThumbnails +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_posters\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.seasonPosters\n },\n attrs: {\n id:\n provider.id + \"_eg_season_posters\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .seasonPosters +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_banners\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.seasonBanners\n },\n attrs: {\n id:\n provider.id + \"_eg_season_banners\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .seasonBanners +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_all_poster\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.seasonAllPoster\n },\n attrs: {\n id:\n provider.id +\n \"_eg_season_all_poster\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .seasonAllPoster +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_all_banner\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.seasonAllBanner\n },\n attrs: {\n id:\n provider.id +\n \"_eg_season_all_banner\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .seasonAllBanner +\n \"\"\n )\n }\n })\n ]\n )\n ]\n )\n ])\n ]\n )\n ]\n )\n })\n ],\n 2\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa config_submitter\",\n attrs: {\n type: \"submit\",\n value: \"Save Changes\",\n disabled: _vm.saving\n }\n })\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"h6\", { staticClass: \"pull-right\" }, [\n _c(\"b\", [\n _vm._v(\"All non-absolute folder locations are relative to \"),\n _c(\"span\", { staticClass: \"path\" }, [\n _vm._v(_vm._s(_vm.system.dataDir))\n ])\n ])\n ])\n ])\n ]\n )\n ])\n ])\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"Scheduled Post-Processing\")]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Settings that dictate how Medusa should process completed downloads.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"The scheduled post-processor will periodically scan a folder for media to process.\"\n )\n ])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"a\", { attrs: { name: \"automated-download-handling\" } }),\n _c(\"h3\", [_vm._v(\"Automated Download Handling\")]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Check clients directly through api's for completed or failed downloads.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"The download handler will periodically connect to the nzb or torrent clients and check for completed and failed downloads.\"\n )\n ])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"General Post-Processing\")]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Generic post-processing settings that apply both to the scheduled post-processor as external scripts\"\n )\n ])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"Episode Naming\")]),\n _vm._v(\" \"),\n _c(\"p\", [_vm._v(\"How Medusa will name and sort your episodes.\")])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"Metadata\")]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"The data associated to the data. These are files associated to a TV show in the form of images and text that, when supported, will enhance the viewing experience.\"\n )\n ])\n ]\n )\n }\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://slim/./src/components/config-post-processing.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => (/* binding */ render),\n/* harmony export */ \"staticRenderFns\": () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"config\" } }, [\n _c(\"div\", { attrs: { id: \"config-content\" } }, [\n _c(\n \"form\",\n {\n staticClass: \"form-horizontal\",\n attrs: { id: \"configForm\" },\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.save()\n }\n }\n },\n [\n _c(\"div\", { attrs: { id: \"config-components\" } }, [\n _c(\"ul\", [\n _c(\n \"li\",\n [\n _c(\"app-link\", { attrs: { href: \"#post-processing\" } }, [\n _vm._v(\"Post-Processing\")\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"li\",\n [\n _c(\"app-link\", { attrs: { href: \"#episode-naming\" } }, [\n _vm._v(\"Episode Naming\")\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"li\",\n [\n _c(\"app-link\", { attrs: { href: \"#metadata\" } }, [\n _vm._v(\"Metadata\")\n ])\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"post-processing\" } }, [\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(0),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Scheduled Post-Processor\",\n id: \"process_automatically\"\n },\n model: {\n value: _vm.postprocessing.processAutomatically,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"processAutomatically\",\n $$v\n )\n },\n expression: \"postprocessing.processAutomatically\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Enable the scheduled post-processor to scan and process any files in your \"\n ),\n _c(\"i\", [_vm._v(\"Post-Processing Dir\")]),\n _vm._v(\"?\")\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"clear-left\" }, [\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" Do not use if you use an external post-processing script\"\n )\n ])\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox-number\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.postprocessing.processAutomatically,\n expression: \"postprocessing.processAutomatically\"\n }\n ],\n attrs: {\n label: \"Auto Post-Processing Frequency\",\n id: \"autopostprocessor_frequency\",\n min: 10,\n step: 1\n },\n model: {\n value:\n _vm.postprocessing.autoPostprocessorFrequency,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"autoPostprocessorFrequency\",\n $$v\n )\n },\n expression:\n \"postprocessing.autoPostprocessorFrequency\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Time in minutes to check for new files to auto post-process (min 10)\"\n )\n ])\n ]\n )\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(1),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Enable download handler\",\n id: \"enable_download_handler\"\n },\n model: {\n value: _vm.postprocessing.downloadHandler.enabled,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing.downloadHandler,\n \"enabled\",\n $$v\n )\n },\n expression: \"postprocessing.downloadHandler.enabled\"\n }\n },\n [\n _c(\"p\", [_vm._v(\"Enable download handler\")]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \"Do not combine with scheduled post processing or external pp scripts!\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-textbox-number\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.postprocessing.downloadHandler.enabled,\n expression:\n \"postprocessing.downloadHandler.enabled\"\n }\n ],\n attrs: {\n min:\n _vm.postprocessing.downloadHandler.minFrequency,\n step: 1,\n label: \"Download handler frequency\",\n id: \"download_handler_frequency\"\n },\n model: {\n value: _vm.postprocessing.downloadHandler.frequency,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing.downloadHandler,\n \"frequency\",\n _vm._n($$v)\n )\n },\n expression:\n \"postprocessing.downloadHandler.frequency\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Frequency to check on the download clients (default: 60)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm.postprocessing.downloadHandler.enabled\n ? _c(\n \"config-textbox-number\",\n {\n attrs: {\n label: \"Global torrent seed ratio\",\n id: \"torrent_seed_ratio\",\n step: 0.1,\n min: 0,\n max: 100\n },\n model: {\n value:\n _vm.postprocessing.downloadHandler\n .torrentSeedRatio,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing.downloadHandler,\n \"torrentSeedRatio\",\n $$v\n )\n },\n expression:\n \"postprocessing.downloadHandler.torrentSeedRatio\"\n }\n },\n [\n _c(\"p\", [\n _vm._v(\n \"Torrent seed ratio used to trigger a torrent seed action\"\n )\n ])\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"torrent_seed_action\",\n label: \"Torrent seed action\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value:\n _vm.postprocessing.downloadHandler\n .torrentSeedAction,\n expression:\n \"postprocessing.downloadHandler.torrentSeedAction\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"torrent_seed_action\",\n name: \"torrent_seed_action\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.postprocessing.downloadHandler,\n \"torrentSeedAction\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.seedActions, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Setting the ratio to 0, will have it perform the action directly after postprocessing.)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"default_client_path\",\n label: \"Default client path\"\n }\n },\n [\n _c(\"file-browser\", {\n attrs: {\n id: \"default_client_path\",\n name: \"default_client_path\",\n title: \"Select client download location\",\n \"initial-dir\":\n _vm.postprocessing.defaultClientPath\n },\n on: {\n update: function($event) {\n _vm.postprocessing.defaultClientPath = $event\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"clear-left\" }, [\n _vm._v(\n \"To prevent postprocessing from deleting your (root) download location, select the location to protect it from removal.\"\n )\n ])\n ],\n 1\n )\n ],\n 1\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(2),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"tv_download_dir\",\n label: \"Post-Processing Dir\"\n }\n },\n [\n _c(\"file-browser\", {\n attrs: {\n id: \"tv_download_dir\",\n name: \"tv_download_dir\",\n title: \"Select series download location\",\n \"initial-dir\": _vm.postprocessing.showDownloadDir\n },\n on: {\n update: function($event) {\n _vm.postprocessing.showDownloadDir = $event\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"clear-left\" }, [\n _vm._v(\n \"The folder where your download client puts the completed TV downloads.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"clear-left\" }, [\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" Please use separate downloading and completed folders in your download client if possible.\"\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"The Post processing dir is also used when your download client is running on a different machine. It will try to map a postprocessed folder to PP dir.\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"processing_method\",\n label: \"Processing Method\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.postprocessing.processMethod,\n expression: \"postprocessing.processMethod\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"processing_method\",\n name: \"processing_method\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.postprocessing,\n \"processMethod\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.processMethods, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"What method should be used to put files into the library?\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" If you keep seeding torrents after they finish, please avoid the 'move' processing method to prevent errors.\"\n )\n ]),\n _vm._v(\" \"),\n _vm.postprocessing.processMethod == \"reflink\"\n ? _c(\n \"p\",\n [\n _vm._v(\"To use reference linking, the \"),\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n \"https://pypi.python.org/pypi/reflink/0.1.4\"\n }\n },\n [_vm._v(\"reflink package\")]\n ),\n _vm._v(\" needs to be installed.\")\n ],\n 1\n )\n : _vm._e()\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Specific postprocessing methods\",\n id: \"specific_post_processing\"\n },\n model: {\n value: _vm.postprocessing.specificPostProcessing,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"specificPostProcessing\",\n $$v\n )\n },\n expression: \"postprocessing.specificPostProcessing\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Enable this option if you want to use different processing methods (copy, move, etc..) for torrent and nzb downloads.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\"This option is only used by the \"),\n _c(\n \"a\",\n {\n attrs: {\n href:\n \"config/postProcessing/#automated-download-handling\"\n }\n },\n [_vm._v(\"Automated Download Handling\")]\n ),\n _vm._v(\" option\")\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm.postprocessing.specificPostProcessing\n ? _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"processing_method_torrent\",\n label: \"Processing Method Torrent\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value:\n _vm.postprocessing.processMethodTorrent,\n expression:\n \"postprocessing.processMethodTorrent\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"processing_method_torrent\",\n name: \"processing_method_torrent\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(\n o\n ) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.postprocessing,\n \"processMethodTorrent\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.processMethods, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"What method should be used to put files into the library?\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" If you keep seeding torrents after they finish, please avoid the 'move' processing method to prevent errors.\"\n )\n ]),\n _vm._v(\" \"),\n _vm.postprocessing.processMethod == \"reflink\"\n ? _c(\n \"p\",\n [\n _vm._v(\"To use reference linking, the \"),\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n \"https://pypi.python.org/pypi/reflink/0.1.4\"\n }\n },\n [_vm._v(\"reflink package\")]\n ),\n _vm._v(\" needs to be installed.\")\n ],\n 1\n )\n : _vm._e()\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.postprocessing.specificPostProcessing\n ? _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"processing_method_nzb\",\n label: \"Processing Method Nzb\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value:\n _vm.postprocessing.processMethodNzb,\n expression:\n \"postprocessing.processMethodNzb\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"processing_method_nzb\",\n name: \"processing_method_nzb\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(\n o\n ) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.postprocessing,\n \"processMethodNzb\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.processMethods, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"What method should be used to put files into the library?\"\n )\n ]),\n _vm._v(\" \"),\n _vm.postprocessing.processMethod == \"reflink\"\n ? _c(\n \"p\",\n [\n _vm._v(\"To use reference linking, the \"),\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n \"https://pypi.python.org/pypi/reflink/0.1.4\"\n }\n },\n [_vm._v(\"reflink package\")]\n ),\n _vm._v(\" needs to be installed.\")\n ],\n 1\n )\n : _vm._e()\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Postpone post-processing\",\n id: \"postpone_if_sync_files\"\n },\n model: {\n value: _vm.postprocessing.postponeIfSyncFiles,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"postponeIfSyncFiles\",\n $$v\n )\n },\n expression: \"postprocessing.postponeIfSyncFiles\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Wait to process a folder if sync files are present.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"sync_files\",\n label: \"Sync File Extensions\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n name: \"sync_files\",\n id: \"sync_files\",\n \"csv-enabled\": \"\",\n \"list-items\": _vm.postprocessing.syncFiles\n },\n on: { change: _vm.onChangeSyncFiles }\n }),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"Comma separated list of extensions or filename globs Medusa ignores when post-processing\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Postpone if no subtitle\",\n id: \"postpone_if_no_subs\"\n },\n model: {\n value: _vm.postprocessing.postponeIfNoSubs,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"postponeIfNoSubs\",\n $$v\n )\n },\n expression: \"postprocessing.postponeIfNoSubs\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Wait to process a file until subtitles are present\"\n )\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"Language names are allowed in subtitle filename (en.srt, pt-br.srt, ita.srt, etc.)\"\n )\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" Automatic post-processor should be disabled to avoid files with pending subtitles being processed over and over.\"\n )\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"If you have any active show with subtitle search disabled, you must enable Automatic post-processor.\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Rename Episodes\",\n id: \"rename_episodes\"\n },\n model: {\n value: _vm.postprocessing.renameEpisodes,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"renameEpisodes\",\n $$v\n )\n },\n expression: \"postprocessing.renameEpisodes\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Rename episode using the Episode Naming settings?\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Create missing show directories\",\n id: \"create_missing_show_dirs\"\n },\n model: {\n value: _vm.postprocessing.createMissingShowDirs,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"createMissingShowDirs\",\n $$v\n )\n },\n expression: \"postprocessing.createMissingShowDirs\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Create missing show directories when they get deleted\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Add shows without directory\",\n id: \"add_shows_wo_dir\"\n },\n model: {\n value: _vm.postprocessing.addShowsWithoutDir,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"addShowsWithoutDir\",\n $$v\n )\n },\n expression: \"postprocessing.addShowsWithoutDir\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Add shows without creating a directory (not recommended)\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Delete associated files\",\n id: \"move_associated_files\"\n },\n model: {\n value: _vm.postprocessing.moveAssociatedFiles,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"moveAssociatedFiles\",\n $$v\n )\n },\n expression: \"postprocessing.moveAssociatedFiles\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Delete srt/srr/sfv/etc files while post-processing?\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"allowed_extensions\",\n label: \"Keep associated file extensions\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n name: \"allowed_extensions\",\n id: \"allowed_extensions\",\n \"csv-enabled\": \"\",\n \"list-items\": _vm.postprocessing.allowedExtensions\n },\n on: { change: _vm.onChangeAllowedExtensions }\n }),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"Comma separated list of associated file extensions Medusa should keep while post-processing.\"\n )\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"Leaving it empty means all associated files will be deleted\"\n )\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Rename .nfo file\",\n id: \"nfo_rename\"\n },\n model: {\n value: _vm.postprocessing.nfoRename,\n callback: function($$v) {\n _vm.$set(_vm.postprocessing, \"nfoRename\", $$v)\n },\n expression: \"postprocessing.nfoRename\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Rename the original .nfo file to .nfo-orig to avoid conflicts?\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Change File Date\",\n id: \"airdate_episodes\"\n },\n model: {\n value: _vm.postprocessing.airdateEpisodes,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"airdateEpisodes\",\n $$v\n )\n },\n expression: \"postprocessing.airdateEpisodes\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Set last modified filedate to the date that the episode aired?\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"file_timestamp_timezone\",\n label: \"Timezone for File Date\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value:\n _vm.postprocessing.fileTimestampTimezone,\n expression:\n \"postprocessing.fileTimestampTimezone\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"file_timestamp_timezone\",\n name: \"file_timestamp_timezone\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.$set(\n _vm.postprocessing,\n \"fileTimestampTimezone\",\n $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n )\n }\n }\n },\n _vm._l(_vm.timezoneOptions, function(option) {\n return _c(\n \"option\",\n {\n key: option.value,\n domProps: { value: option.value }\n },\n [_vm._v(_vm._s(option.text))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"What timezone should be used to change File Date?\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: { label: \"Unpack\", id: \"unpack\" },\n model: {\n value: _vm.postprocessing.unpack,\n callback: function($$v) {\n _vm.$set(_vm.postprocessing, \"unpack\", $$v)\n },\n expression: \"postprocessing.unpack\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\"Unpack any TV releases in your \"),\n _c(\"i\", [_vm._v(\"TV Download Dir\")]),\n _vm._v(\"?\")\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\" Only working with RAR archive\")\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Delete RAR contents\",\n id: \"del_rar_contents\"\n },\n model: {\n value: _vm.postprocessing.deleteRarContent,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing,\n \"deleteRarContent\",\n $$v\n )\n },\n expression: \"postprocessing.deleteRarContent\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Delete content of RAR files, even if Process Method not set to move?\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n label: \"Don't delete empty folders\",\n id: \"no_delete\"\n },\n model: {\n value: _vm.postprocessing.noDelete,\n callback: function($$v) {\n _vm.$set(_vm.postprocessing, \"noDelete\", $$v)\n },\n expression: \"postprocessing.noDelete\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\"Leave empty folders when post-processing?\")\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _c(\"span\", [\n _c(\"b\", [_vm._v(\"Note:\")]),\n _vm._v(\n \" Can be overridden using manual post-processing\"\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"extra_scripts\",\n label: \"Extra Scripts\"\n }\n },\n [\n _c(\"select-list\", {\n attrs: {\n name: \"extra_scripts\",\n id: \"extra_scripts\",\n \"csv-enabled\": \"\",\n \"list-items\": _vm.postprocessing.extraScripts\n },\n on: { change: _vm.onChangeExtraScripts }\n }),\n _vm._v(\" \"),\n _c(\n \"span\",\n [\n _vm._v(\"See \"),\n _c(\n \"app-link\",\n {\n staticClass: \"wikie\",\n attrs: {\n href: _vm.postprocessing.extraScriptsUrl\n }\n },\n [_c(\"strong\", [_vm._v(\"Wiki\")])]\n ),\n _vm._v(\n \" for script arguments description and usage.\"\n )\n ],\n 1\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n attrs: {\n disabled:\n _vm.system.ffprobeVersion ===\n \"ffprobe not available\",\n label:\n \"Use ffprobe to validate downloaded video files for a minimum of one video and audio stream\",\n id: \"check_streams\"\n },\n model: {\n value: _vm.postprocessing.ffmpeg.checkStreams,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing.ffmpeg,\n \"checkStreams\",\n $$v\n )\n },\n expression: \"postprocessing.ffmpeg.checkStreams\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Use PPROBE to check a video for a minimum of one audio and video stream. This is the more safe version of the two. It will only scan the video files meta data.\"\n )\n ]),\n _c(\"br\"),\n _vm._v(\" \"),\n _vm.system.ffprobeVersion === \"ffprobe not available\"\n ? _c(\"span\", { staticStyle: { color: \"red\" } }, [\n _vm._v(\n \"Ffmpeg binary not found. Add the ffmpeg bin location to your system's environment or configure a path manually below.\"\n )\n ])\n : _vm._e()\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"ffmpeg_path\",\n label: \"Alternative ffmpeg path\"\n }\n },\n [\n _c(\"file-browser\", {\n attrs: {\n id: \"ffmpeg_path\",\n name: \"ffmpeg_path\",\n title:\n \"Select folder location for the ffmpeg binary\",\n \"initial-dir\": _vm.postprocessing.ffmpeg.path\n },\n on: {\n update: function($event) {\n _vm.postprocessing.ffmpeg.path = $event\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"span\", [\n _vm._v(\n \"If you can't or don't want to depend on the os environment path, you can fix the location to your ffmpeg binary.\"\n )\n ])\n ],\n 1\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa config_submitter\",\n attrs: {\n type: \"submit\",\n value: \"Save Changes\",\n disabled: _vm.saving\n }\n })\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"episode-naming\" } }, [\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(3),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\"name-pattern\", {\n staticClass: \"component-item\",\n attrs: {\n \"naming-pattern\": _vm.postprocessing.naming.pattern,\n \"naming-presets\": _vm.presets,\n \"multi-ep-style\": _vm.postprocessing.naming.multiEp,\n \"multi-ep-styles\": _vm.multiEpStringsSelect,\n \"flag-loaded\": _vm.configLoaded\n },\n on: { change: _vm.saveNaming }\n }),\n _vm._v(\" \"),\n _c(\"name-pattern\", {\n staticClass: \"component-item\",\n attrs: {\n enabled:\n _vm.postprocessing.naming.enableCustomNamingSports,\n \"naming-pattern\":\n _vm.postprocessing.naming.patternSports,\n \"naming-presets\": _vm.presets,\n type: \"sports\",\n \"enabled-naming-custom\":\n _vm.postprocessing.naming.enableCustomNamingSports,\n \"flag-loaded\": _vm.configLoaded\n },\n on: { change: _vm.saveNamingSports }\n }),\n _vm._v(\" \"),\n _c(\"name-pattern\", {\n staticClass: \"component-item\",\n attrs: {\n enabled:\n _vm.postprocessing.naming\n .enableCustomNamingAirByDate,\n \"naming-pattern\":\n _vm.postprocessing.naming.patternAirByDate,\n \"naming-presets\": _vm.presets,\n type: \"airs by date\",\n \"enabled-naming-custom\":\n _vm.postprocessing.naming\n .enableCustomNamingAirByDate,\n \"flag-loaded\": _vm.configLoaded\n },\n on: { change: _vm.saveNamingAbd }\n }),\n _vm._v(\" \"),\n _c(\"name-pattern\", {\n staticClass: \"component-item\",\n attrs: {\n enabled:\n _vm.postprocessing.naming.enableCustomNamingAnime,\n \"naming-pattern\":\n _vm.postprocessing.naming.patternAnime,\n \"naming-presets\": _vm.presets,\n type: \"anime\",\n \"multi-ep-style\":\n _vm.postprocessing.naming.animeMultiEp,\n \"multi-ep-styles\": _vm.multiEpStringsSelect,\n \"anime-naming-type\":\n _vm.postprocessing.naming.animeNamingType,\n \"enabled-naming-custom\":\n _vm.postprocessing.naming.enableCustomNamingAnime,\n \"flag-loaded\": _vm.configLoaded\n },\n on: { change: _vm.saveNamingAnime }\n }),\n _vm._v(\" \"),\n _c(\n \"config-toggle-slider\",\n {\n staticStyle: { \"margin-top\": \"1em\" },\n attrs: {\n label: \"Strip Show Year\",\n id: \"naming_strip_year\"\n },\n model: {\n value: _vm.postprocessing.naming.stripYear,\n callback: function($$v) {\n _vm.$set(\n _vm.postprocessing.naming,\n \"stripYear\",\n $$v\n )\n },\n expression: \"postprocessing.naming.stripYear\"\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n \"Remove the TV show's year when renaming the file?\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Only applies to shows that have year inside parentheses\"\n )\n ])\n ]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa config_submitter\",\n attrs: {\n type: \"submit\",\n value: \"Save Changes\",\n disabled: _vm.saving\n }\n })\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"metadata\" } }, [\n _c(\"div\", { staticClass: \"row component-group\" }, [\n _vm._m(4),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"col-xs-12 col-md-10\" }, [\n _c(\n \"fieldset\",\n { staticClass: \"component-group-list\" },\n [\n _c(\n \"config-template\",\n {\n attrs: {\n \"label-for\": \"metadata_type\",\n label: \"Metadata Type\"\n }\n },\n [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.metadataProviderSelected,\n expression: \"metadataProviderSelected\"\n }\n ],\n staticClass: \"form-control input-sm\",\n attrs: {\n id: \"metadataType\",\n name: \"metadataType\"\n },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val =\n \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.metadataProviderSelected = $event.target\n .multiple\n ? $$selectedVal\n : $$selectedVal[0]\n }\n }\n },\n _vm._l(_vm.metadata.metadataProviders, function(\n option\n ) {\n return _c(\n \"option\",\n {\n key: option.id,\n domProps: { value: option.id }\n },\n [_vm._v(_vm._s(option.name))]\n )\n }),\n 0\n ),\n _vm._v(\" \"),\n _c(\"span\", { staticClass: \"d-block\" }, [\n _vm._v(\n \"Toggle the metadata options that you wish to be created. \"\n ),\n _c(\"b\", [_vm._v(\"Multiple targets may be used.\")])\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm._l(_vm.metadata.metadataProviders, function(\n provider\n ) {\n return _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value:\n provider.id === _vm.metadataProviderSelected,\n expression:\n \"provider.id === metadataProviderSelected\"\n }\n ],\n key: provider.id,\n staticClass: \"metadata\",\n attrs: { id: \"provider.id\" }\n },\n [\n _c(\n \"div\",\n { staticClass: \"metadata-options-wrapper\" },\n [\n _c(\"h4\", [_vm._v(\"Create:\")]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"metadata_options\" }, [\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_show_metadata\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.showMetadata,\n expression: \"provider.showMetadata\"\n }\n ],\n staticClass: \"metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_show_metadata\"\n },\n domProps: {\n checked: Array.isArray(\n provider.showMetadata\n )\n ? _vm._i(\n provider.showMetadata,\n null\n ) > -1\n : provider.showMetadata\n },\n on: {\n change: function($event) {\n var $$a = provider.showMetadata,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"showMetadata\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"showMetadata\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"showMetadata\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Show Metadata\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_episode_metadata\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.episodeMetadata,\n expression:\n \"provider.episodeMetadata\"\n }\n ],\n staticClass: \"metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_episode_metadata\",\n disabled: provider.example.episodeMetadata.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.episodeMetadata\n )\n ? _vm._i(\n provider.episodeMetadata,\n null\n ) > -1\n : provider.episodeMetadata\n },\n on: {\n change: function($event) {\n var $$a = provider.episodeMetadata,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"episodeMetadata\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"episodeMetadata\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"episodeMetadata\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Episode Metadata\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n { attrs: { for: provider.id + \"_fanart\" } },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.fanart,\n expression: \"provider.fanart\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_fanart\",\n disabled: provider.example.fanart.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.fanart\n )\n ? _vm._i(provider.fanart, null) > -1\n : provider.fanart\n },\n on: {\n change: function($event) {\n var $$a = provider.fanart,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"fanart\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"fanart\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(provider, \"fanart\", $$c)\n }\n }\n }\n }),\n _vm._v(\" Show Fanart\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n { attrs: { for: provider.id + \"_poster\" } },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.poster,\n expression: \"provider.poster\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_poster\",\n disabled: provider.example.poster.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.poster\n )\n ? _vm._i(provider.poster, null) > -1\n : provider.poster\n },\n on: {\n change: function($event) {\n var $$a = provider.poster,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"poster\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"poster\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(provider, \"poster\", $$c)\n }\n }\n }\n }),\n _vm._v(\" Show Poster\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n { attrs: { for: provider.id + \"_banner\" } },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.banner,\n expression: \"provider.banner\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_banner\",\n disabled: provider.example.banner.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.banner\n )\n ? _vm._i(provider.banner, null) > -1\n : provider.banner\n },\n on: {\n change: function($event) {\n var $$a = provider.banner,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"banner\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"banner\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(provider, \"banner\", $$c)\n }\n }\n }\n }),\n _vm._v(\" Show Banner\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_episode_thumbnails\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.episodeThumbnails,\n expression:\n \"provider.episodeThumbnails\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id:\n provider.id + \"_episode_thumbnails\",\n disabled: provider.example.episodeThumbnails.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.episodeThumbnails\n )\n ? _vm._i(\n provider.episodeThumbnails,\n null\n ) > -1\n : provider.episodeThumbnails\n },\n on: {\n change: function($event) {\n var $$a =\n provider.episodeThumbnails,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"episodeThumbnails\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"episodeThumbnails\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"episodeThumbnails\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Episode Thumbnails\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_posters\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.seasonPosters,\n expression: \"provider.seasonPosters\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_season_posters\",\n disabled: provider.example.seasonPosters.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.seasonPosters\n )\n ? _vm._i(\n provider.seasonPosters,\n null\n ) > -1\n : provider.seasonPosters\n },\n on: {\n change: function($event) {\n var $$a = provider.seasonPosters,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"seasonPosters\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"seasonPosters\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"seasonPosters\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Season Posters\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_banners\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.seasonBanners,\n expression: \"provider.seasonBanners\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id: provider.id + \"_season_banners\",\n disabled: provider.example.seasonBanners.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.seasonBanners\n )\n ? _vm._i(\n provider.seasonBanners,\n null\n ) > -1\n : provider.seasonBanners\n },\n on: {\n change: function($event) {\n var $$a = provider.seasonBanners,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"seasonBanners\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"seasonBanners\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"seasonBanners\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Season Banners\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_all_poster\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.seasonAllPoster,\n expression:\n \"provider.seasonAllPoster\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id:\n provider.id + \"_season_all_poster\",\n disabled: provider.example.seasonAllPoster.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.seasonAllPoster\n )\n ? _vm._i(\n provider.seasonAllPoster,\n null\n ) > -1\n : provider.seasonAllPoster\n },\n on: {\n change: function($event) {\n var $$a = provider.seasonAllPoster,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"seasonAllPoster\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"seasonAllPoster\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"seasonAllPoster\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Season All Poster\")\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_all_banner\"\n }\n },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: provider.seasonAllBanner,\n expression:\n \"provider.seasonAllBanner\"\n }\n ],\n staticClass:\n \"float-left metadata_checkbox\",\n attrs: {\n type: \"checkbox\",\n id:\n provider.id + \"_season_all_banner\",\n disabled: provider.example.seasonAllBanner.includes(\n \"not supported\"\n )\n },\n domProps: {\n checked: Array.isArray(\n provider.seasonAllBanner\n )\n ? _vm._i(\n provider.seasonAllBanner,\n null\n ) > -1\n : provider.seasonAllBanner\n },\n on: {\n change: function($event) {\n var $$a = provider.seasonAllBanner,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n _vm.$set(\n provider,\n \"seasonAllBanner\",\n $$a.concat([$$v])\n )\n } else {\n $$i > -1 &&\n _vm.$set(\n provider,\n \"seasonAllBanner\",\n $$a\n .slice(0, $$i)\n .concat(\n $$a.slice($$i + 1)\n )\n )\n }\n } else {\n _vm.$set(\n provider,\n \"seasonAllBanner\",\n $$c\n )\n }\n }\n }\n }),\n _vm._v(\" Season All Banner\")\n ]\n )\n ])\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"metadata-example-wrapper\" },\n [\n _c(\"h4\", [_vm._v(\"Results:\")]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"metadata_example\" }, [\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_show_metadata\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.showMetadata\n },\n attrs: {\n id:\n provider.id + \"_eg_show_metadata\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .showMetadata +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_episode_metadata\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.episodeMetadata\n },\n attrs: {\n id:\n provider.id +\n \"_eg_episode_metadata\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .episodeMetadata +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n { attrs: { for: provider.id + \"_fanart\" } },\n [\n _c(\n \"span\",\n {\n class: { disabled: !provider.fanart },\n attrs: {\n id: provider.id + \"_eg_fanart\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example.fanart +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n { attrs: { for: provider.id + \"_poster\" } },\n [\n _c(\n \"span\",\n {\n class: { disabled: !provider.poster },\n attrs: {\n id: provider.id + \"_eg_poster\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example.poster +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n { attrs: { for: provider.id + \"_banner\" } },\n [\n _c(\n \"span\",\n {\n class: { disabled: !provider.banner },\n attrs: {\n id: provider.id + \"_eg_banner\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example.banner +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_episode_thumbnails\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.episodeThumbnails\n },\n attrs: {\n id:\n provider.id +\n \"_eg_episode_thumbnails\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .episodeThumbnails +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_posters\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.seasonPosters\n },\n attrs: {\n id:\n provider.id + \"_eg_season_posters\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .seasonPosters +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_banners\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.seasonBanners\n },\n attrs: {\n id:\n provider.id + \"_eg_season_banners\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .seasonBanners +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_all_poster\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.seasonAllPoster\n },\n attrs: {\n id:\n provider.id +\n \"_eg_season_all_poster\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .seasonAllPoster +\n \"\"\n )\n }\n })\n ]\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"label\",\n {\n attrs: {\n for: provider.id + \"_season_all_banner\"\n }\n },\n [\n _c(\n \"span\",\n {\n class: {\n disabled: !provider.seasonAllBanner\n },\n attrs: {\n id:\n provider.id +\n \"_eg_season_all_banner\"\n }\n },\n [\n _c(\"span\", {\n domProps: {\n innerHTML: _vm._s(\n \"\" +\n provider.example\n .seasonAllBanner +\n \"\"\n )\n }\n })\n ]\n )\n ]\n )\n ])\n ]\n )\n ]\n )\n })\n ],\n 2\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"btn-medusa config_submitter\",\n attrs: {\n type: \"submit\",\n value: \"Save Changes\",\n disabled: _vm.saving\n }\n })\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"h6\", { staticClass: \"pull-right\" }, [\n _c(\"b\", [\n _vm._v(\"All non-absolute folder locations are relative to \"),\n _c(\"span\", { staticClass: \"path\" }, [\n _vm._v(_vm._s(_vm.system.dataDir))\n ])\n ])\n ])\n ])\n ]\n )\n ])\n ])\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"Scheduled Post-Processing\")]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Settings that dictate how Medusa should process completed downloads.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"The scheduled post-processor will periodically scan a folder for media to process.\"\n )\n ])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"a\", { attrs: { name: \"automated-download-handling\" } }),\n _c(\"h3\", [_vm._v(\"Automated Download Handling\")]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Check clients directly through api's for completed or failed downloads.\"\n )\n ]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"The download handler will periodically connect to the nzb or torrent clients and check for completed and failed downloads.\"\n )\n ])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"General Post-Processing\")]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"Generic post-processing settings that apply both to the scheduled post-processor as external scripts\"\n )\n ])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"Episode Naming\")]),\n _vm._v(\" \"),\n _c(\"p\", [_vm._v(\"How Medusa will name and sort your episodes.\")])\n ]\n )\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"component-group-desc col-xs-12 col-md-2\" },\n [\n _c(\"h3\", [_vm._v(\"Metadata\")]),\n _vm._v(\" \"),\n _c(\"p\", [\n _vm._v(\n \"The data associated to the data. These are files associated to a TV show in the form of images and text that, when supported, will enhance the viewing experience.\"\n )\n ])\n ]\n )\n }\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://slim/./src/components/config-post-processing.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options"); /***/ }), @@ -6746,7 +6746,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => (/* binding */ render),\n/* harmony export */ \"staticRenderFns\": () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"config-content\" } }, [\n _c(\n \"table\",\n {\n staticClass: \"infoTable\",\n attrs: {\n cellspacing: \"1\",\n border: \"0\",\n cellpadding: \"0\",\n width: \"100%\"\n }\n },\n [\n _c(\"tr\", [\n _vm._m(0),\n _vm._v(\" \"),\n _c(\"td\", [\n _vm._v(\"\\n Branch:\\n \"),\n _vm.system.branch\n ? _c(\n \"span\",\n [\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n _vm.config.sourceUrl + \"/tree/\" + _vm.system.branch\n }\n },\n [_vm._v(_vm._s(_vm.system.branch))]\n )\n ],\n 1\n )\n : _c(\"span\", [_vm._v(\"Unknown\")]),\n _vm._v(\" \"),\n _c(\"br\"),\n _vm._v(\"\\n Commit:\\n \"),\n _vm.system.commitHash\n ? _c(\n \"span\",\n [\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n _vm.config.sourceUrl +\n \"/commit/\" +\n _vm.system.commitHash\n }\n },\n [_vm._v(_vm._s(_vm.system.commitHash))]\n )\n ],\n 1\n )\n : _c(\"span\", [_vm._v(\"Unknown\")]),\n _vm._v(\" \"),\n _c(\"br\"),\n _vm._v(\"\\n Version:\\n \"),\n _vm.system.release\n ? _c(\n \"span\",\n [\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n _vm.config.sourceUrl +\n \"/releases/tag/v\" +\n _vm.system.release\n }\n },\n [_vm._v(_vm._s(_vm.system.release))]\n )\n ],\n 1\n )\n : _c(\"span\", [_vm._v(\"Unknown\")]),\n _vm._v(\" \"),\n _c(\"br\"),\n _vm._v(\"\\n Database:\\n \"),\n _vm.system.databaseVersion\n ? _c(\"span\", [\n _vm._v(\n _vm._s(_vm.system.databaseVersion.major) +\n \".\" +\n _vm._s(_vm.system.databaseVersion.minor)\n )\n ])\n : _c(\"span\", [_vm._v(\"Unknown\")])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(1),\n _c(\"td\", [_vm._v(_vm._s(_vm.system.pythonVersion))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(2),\n _c(\"td\", [_vm._v(_vm._s(_vm.system.sslVersion))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(3), _c(\"td\", [_vm._v(_vm._s(_vm.system.os))])]),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(4), _c(\"td\", [_vm._v(_vm._s(_vm.system.locale))])]),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(5), _c(\"td\", [_vm._v(_vm._s(_vm.system.timezone))])]),\n _vm._v(\" \"),\n _vm._m(6),\n _vm._v(\" \"),\n _vm._m(7),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(8), _c(\"td\", [_vm._v(_vm._s(_vm.system.localUser))])]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(9),\n _c(\"td\", [_vm._v(_vm._s(_vm.system.programDir))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(10),\n _c(\"td\", [_vm._v(_vm._s(_vm.system.configFile))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(11), _c(\"td\", [_vm._v(_vm._s(_vm.system.dbPath))])]),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(12), _c(\"td\", [_vm._v(_vm._s(_vm.system.cacheDir))])]),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(13), _c(\"td\", [_vm._v(_vm._s(_vm.system.logDir))])]),\n _vm._v(\" \"),\n _vm.system.appArgs\n ? _c(\"tr\", [\n _vm._m(14),\n _c(\"td\", [\n _c(\"pre\", [_vm._v(_vm._s(_vm.system.appArgs.join(\" \")))])\n ])\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.system.webRoot\n ? _c(\"tr\", [\n _vm._m(15),\n _c(\"td\", [_vm._v(_vm._s(_vm.system.webRoot))])\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.system.runsInDocker\n ? _c(\"tr\", [_vm._m(16), _c(\"td\", [_vm._v(\"Yes\")])])\n : _vm._e(),\n _vm._v(\" \"),\n _vm._m(17),\n _vm._v(\" \"),\n _vm._m(18),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(19),\n _c(\n \"td\",\n [\n _c(\"app-link\", { attrs: { href: _vm.config.git.url } }, [\n _vm._v(_vm._s(_vm.config.git.url))\n ])\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(20),\n _c(\n \"td\",\n [\n _c(\"app-link\", { attrs: { href: _vm.config.wikiUrl } }, [\n _vm._v(_vm._s(_vm.config.wikiUrl))\n ])\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(21),\n _c(\n \"td\",\n [\n _c(\"app-link\", { attrs: { href: _vm.config.sourceUrl } }, [\n _vm._v(_vm._s(_vm.config.sourceUrl))\n ])\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(22),\n _c(\n \"td\",\n [\n _c(\n \"app-link\",\n { attrs: { href: \"irc://irc.freenode.net/#pymedusa\" } },\n [\n _c(\"i\", [_vm._v(\"#pymedusa\")]),\n _vm._v(\" on \"),\n _c(\"i\", [_vm._v(\"irc.freenode.net\")])\n ]\n )\n ],\n 1\n )\n ])\n ]\n )\n ])\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-application\" }),\n _vm._v(\" Medusa Info:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-python\" }),\n _vm._v(\" Python Version:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-ssl\" }),\n _vm._v(\" SSL Version:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-os\" }),\n _vm._v(\" OS:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-locale\" }),\n _vm._v(\" Locale:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-locale\" }),\n _vm._v(\" Timezone:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [_c(\"td\", [_vm._v(\" \")]), _c(\"td\", [_vm._v(\" \")])])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"infoTableSeperator\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _c(\"td\", [_vm._v(\" \")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-user\" }),\n _vm._v(\" User:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-dir\" }),\n _vm._v(\" Program Folder:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-config\" }),\n _vm._v(\" Config File:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-db\" }),\n _vm._v(\" Database File:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-cache\" }),\n _vm._v(\" Cache Folder:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-log\" }),\n _vm._v(\" Log Folder:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-arguments\" }),\n _vm._v(\" Arguments:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-dir\" }),\n _vm._v(\" Web Root:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-docker\" }),\n _vm._v(\" Runs in Docker:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [_c(\"td\", [_vm._v(\" \")]), _c(\"td\", [_vm._v(\" \")])])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"infoTableSeperator\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _c(\"td\", [_vm._v(\" \")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-web\" }),\n _vm._v(\" Website:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-wiki\" }),\n _vm._v(\" Wiki:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-github\" }),\n _vm._v(\" Source:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-mirc\" }),\n _vm._v(\" IRC Chat:\")\n ])\n }\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://slim/./src/components/config.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"render\": () => (/* binding */ render),\n/* harmony export */ \"staticRenderFns\": () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"config-content\" } }, [\n _c(\n \"table\",\n {\n staticClass: \"infoTable\",\n attrs: {\n cellspacing: \"1\",\n border: \"0\",\n cellpadding: \"0\",\n width: \"100%\"\n }\n },\n [\n _c(\"tr\", [\n _vm._m(0),\n _vm._v(\" \"),\n _c(\"td\", [\n _vm._v(\"\\n Branch:\\n \"),\n _vm.system.branch\n ? _c(\n \"span\",\n [\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n _vm.config.sourceUrl + \"/tree/\" + _vm.system.branch\n }\n },\n [_vm._v(_vm._s(_vm.system.branch))]\n )\n ],\n 1\n )\n : _c(\"span\", [_vm._v(\"Unknown\")]),\n _vm._v(\" \"),\n _c(\"br\"),\n _vm._v(\"\\n Commit:\\n \"),\n _vm.system.commitHash\n ? _c(\n \"span\",\n [\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n _vm.config.sourceUrl +\n \"/commit/\" +\n _vm.system.commitHash\n }\n },\n [_vm._v(_vm._s(_vm.system.commitHash))]\n )\n ],\n 1\n )\n : _c(\"span\", [_vm._v(\"Unknown\")]),\n _vm._v(\" \"),\n _c(\"br\"),\n _vm._v(\"\\n Version:\\n \"),\n _vm.system.release\n ? _c(\n \"span\",\n [\n _c(\n \"app-link\",\n {\n attrs: {\n href:\n _vm.config.sourceUrl +\n \"/releases/tag/v\" +\n _vm.system.release\n }\n },\n [_vm._v(_vm._s(_vm.system.release))]\n )\n ],\n 1\n )\n : _c(\"span\", [_vm._v(\"Unknown\")]),\n _vm._v(\" \"),\n _c(\"br\"),\n _vm._v(\"\\n Database:\\n \"),\n _vm.system.databaseVersion\n ? _c(\"span\", [\n _vm._v(\n _vm._s(_vm.system.databaseVersion.major) +\n \".\" +\n _vm._s(_vm.system.databaseVersion.minor)\n )\n ])\n : _c(\"span\", [_vm._v(\"Unknown\")])\n ])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(1),\n _c(\"td\", [_vm._v(_vm._s(_vm.system.pythonVersion))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(2),\n _c(\"td\", [_vm._v(_vm._s(_vm.system.sslVersion))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(3), _c(\"td\", [_vm._v(_vm._s(_vm.system.os))])]),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(4), _c(\"td\", [_vm._v(_vm._s(_vm.system.locale))])]),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(5), _c(\"td\", [_vm._v(_vm._s(_vm.system.timezone))])]),\n _vm._v(\" \"),\n _vm._m(6),\n _vm._v(\" \"),\n _vm._m(7),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(8), _c(\"td\", [_vm._v(_vm._s(_vm.system.localUser))])]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(9),\n _c(\"td\", [_vm._v(_vm._s(_vm.system.programDir))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(10),\n _c(\"td\", [_vm._v(_vm._s(_vm.system.configFile))])\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(11), _c(\"td\", [_vm._v(_vm._s(_vm.system.dbPath))])]),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(12), _c(\"td\", [_vm._v(_vm._s(_vm.system.cacheDir))])]),\n _vm._v(\" \"),\n _c(\"tr\", [_vm._m(13), _c(\"td\", [_vm._v(_vm._s(_vm.system.logDir))])]),\n _vm._v(\" \"),\n _vm.system.appArgs\n ? _c(\"tr\", [\n _vm._m(14),\n _c(\"td\", [\n _c(\"pre\", [_vm._v(_vm._s(_vm.system.appArgs.join(\" \")))])\n ])\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.system.webRoot\n ? _c(\"tr\", [\n _vm._m(15),\n _c(\"td\", [_vm._v(_vm._s(_vm.system.webRoot))])\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.system.runsInDocker\n ? _c(\"tr\", [_vm._m(16), _c(\"td\", [_vm._v(\"Yes\")])])\n : _vm._e(),\n _vm._v(\" \"),\n _vm._m(17),\n _vm._v(\" \"),\n _vm._m(18),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(19),\n _c(\"td\", [_vm._v(_vm._s(_vm.system.ffprobeVersion))])\n ]),\n _vm._v(\" \"),\n _vm._m(20),\n _vm._v(\" \"),\n _vm._m(21),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(22),\n _c(\n \"td\",\n [\n _c(\"app-link\", { attrs: { href: _vm.config.git.url } }, [\n _vm._v(_vm._s(_vm.config.git.url))\n ])\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(23),\n _c(\n \"td\",\n [\n _c(\"app-link\", { attrs: { href: _vm.config.wikiUrl } }, [\n _vm._v(_vm._s(_vm.config.wikiUrl))\n ])\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(24),\n _c(\n \"td\",\n [\n _c(\"app-link\", { attrs: { href: _vm.config.sourceUrl } }, [\n _vm._v(_vm._s(_vm.config.sourceUrl))\n ])\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"tr\", [\n _vm._m(25),\n _c(\n \"td\",\n [\n _c(\n \"app-link\",\n { attrs: { href: \"irc://irc.freenode.net/#pymedusa\" } },\n [\n _c(\"i\", [_vm._v(\"#pymedusa\")]),\n _vm._v(\" on \"),\n _c(\"i\", [_vm._v(\"irc.freenode.net\")])\n ]\n )\n ],\n 1\n )\n ])\n ]\n )\n ])\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-application\" }),\n _vm._v(\" Medusa Info:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-python\" }),\n _vm._v(\" Python Version:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-ssl\" }),\n _vm._v(\" SSL Version:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-os\" }),\n _vm._v(\" OS:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-locale\" }),\n _vm._v(\" Locale:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-locale\" }),\n _vm._v(\" Timezone:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [_c(\"td\", [_vm._v(\" \")]), _c(\"td\", [_vm._v(\" \")])])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"infoTableSeperator\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _c(\"td\", [_vm._v(\" \")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-user\" }),\n _vm._v(\" User:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-dir\" }),\n _vm._v(\" Program Folder:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-config\" }),\n _vm._v(\" Config File:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-db\" }),\n _vm._v(\" Database File:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-cache\" }),\n _vm._v(\" Cache Folder:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-log\" }),\n _vm._v(\" Log Folder:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-arguments\" }),\n _vm._v(\" Arguments:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-dir\" }),\n _vm._v(\" Web Root:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-docker\" }),\n _vm._v(\" Runs in Docker:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [_c(\"td\", [_vm._v(\" \")]), _c(\"td\", [_vm._v(\" \")])])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"infoTableSeperator\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _c(\"td\", [_vm._v(\" \")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-arguments\" }),\n _vm._v(\" Ffprobe version:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", [_c(\"td\", [_vm._v(\" \")]), _c(\"td\", [_vm._v(\" \")])])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"tr\", { staticClass: \"infoTableSeperator\" }, [\n _c(\"td\", [_vm._v(\" \")]),\n _c(\"td\", [_vm._v(\" \")])\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-web\" }),\n _vm._v(\" Website:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-wiki\" }),\n _vm._v(\" Wiki:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-github\" }),\n _vm._v(\" Source:\")\n ])\n },\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"td\", [\n _c(\"i\", { staticClass: \"icon16-config-mirc\" }),\n _vm._v(\" IRC Chat:\")\n ])\n }\n]\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://slim/./src/components/config.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options"); /***/ }),