|
12 | 12 | REMOVE_FAILED = get_config_value('REMOVE_FAILED', 'features', False, bool, False) |
13 | 13 | REMOVE_FAILED_IMPORTS = get_config_value('REMOVE_FAILED_IMPORTS' , 'features', False, bool, False) |
14 | 14 | REMOVE_METADATA_MISSING = get_config_value('REMOVE_METADATA_MISSING', 'features', False, bool, False) |
15 | | -REMOVE_MISSING_FILES = get_config_value('REMOVE_MISSING_FILES' , 'features', False, bool, False) |
16 | | -REMOVE_NO_FORMAT_UPGRADE = get_config_value('REMOVE_NO_FORMAT_UPGRADE' , 'features', False, bool, False) # OUTDATED - WILL RETURN WARNING |
17 | | -REMOVE_ORPHANS = get_config_value('REMOVE_ORPHANS' , 'features', False, bool, False) |
18 | | -REMOVE_SLOW = get_config_value('REMOVE_SLOW' , 'features', False, bool, False) |
| 15 | +REMOVE_MISSING_FILES = get_config_value('REMOVE_MISSING_FILES', 'features', False, bool, False) |
| 16 | +REMOVE_NO_FORMAT_UPGRADE = get_config_value('REMOVE_NO_FORMAT_UPGRADE', 'features', False, bool, False) # OUTDATED - WILL RETURN WARNING |
| 17 | +REMOVE_ORPHANS = get_config_value('REMOVE_ORPHANS', 'features', False, bool, False) |
| 18 | +REMOVE_SLOW = get_config_value('REMOVE_SLOW', 'features', False, bool, False) |
19 | 19 | REMOVE_STALLED = get_config_value('REMOVE_STALLED', 'features', False, bool, False) |
20 | | -REMOVE_UNMONITORED = get_config_value('REMOVE_UNMONITORED' , 'features', False, bool, False) |
21 | | -MIN_DOWNLOAD_SPEED = get_config_value('MIN_DOWNLOAD_SPEED', 'features', False, int, 0) |
22 | | -PERMITTED_ATTEMPTS = get_config_value('PERMITTED_ATTEMPTS', 'features', False, int, 3) |
23 | | -NO_STALLED_REMOVAL_QBIT_TAG = get_config_value('NO_STALLED_REMOVAL_QBIT_TAG', 'features', False, str, 'Don\'t Kill') |
24 | | -IGNORE_PRIVATE_TRACKERS = get_config_value('IGNORE_PRIVATE_TRACKERS', 'features', False, bool, True) |
25 | | -FAILED_IMPORT_MESSAGE_PATTERNS = get_config_value('FAILED_IMPORT_MESSAGE_PATTERNS','features', False, list, []) |
| 20 | +REMOVE_UNMONITORED = get_config_value('REMOVE_UNMONITORED', 'features', False, bool, False) |
| 21 | +RUN_PERIODIC_RESCANS = get_config_value('RUN_PERIODIC_RESCANS', 'features', False, dict, {}) |
| 22 | + |
| 23 | +# Feature Settings |
| 24 | +MIN_DOWNLOAD_SPEED = get_config_value('MIN_DOWNLOAD_SPEED', 'feature_settings', False, int, 0) |
| 25 | +PERMITTED_ATTEMPTS = get_config_value('PERMITTED_ATTEMPTS', 'feature_settings', False, int, 3) |
| 26 | +NO_STALLED_REMOVAL_QBIT_TAG = get_config_value('NO_STALLED_REMOVAL_QBIT_TAG', 'feature_settings', False, str, 'Don\'t Kill') |
| 27 | +IGNORE_PRIVATE_TRACKERS = get_config_value('IGNORE_PRIVATE_TRACKERS', 'feature_settings', False, bool, True) |
| 28 | +FAILED_IMPORT_MESSAGE_PATTERNS = get_config_value('FAILED_IMPORT_MESSAGE_PATTERNS','feature_settings', False, list, []) |
26 | 29 |
|
27 | 30 | # Radarr |
28 | 31 | RADARR_URL = get_config_value('RADARR_URL', 'radarr', False, str) |
|
60 | 63 | print(f'[ ERROR ]: No Radarr/Sonarr/Lidarr/Readarr/Whisparr URLs specified (nothing to monitor)') |
61 | 64 | exit() |
62 | 65 |
|
| 66 | + |
| 67 | +#### Validate rescan settings |
| 68 | +PERIODIC_RESCANS = get_config_value("PERIODIC_RESCANS", "features", False, dict, {}) |
| 69 | + |
| 70 | +rescan_supported_apps = ["SONARR", "RADARR"] |
| 71 | +rescan_default_values = { |
| 72 | + "MISSING": (True, bool), |
| 73 | + "CUTOFF_UNMET": (True, bool), |
| 74 | + "MAX_CONCURRENT_SCANS": (3, int), |
| 75 | + "MIN_DAYS_BEFORE_RESCAN": (7, int), |
| 76 | +} |
| 77 | + |
| 78 | + |
| 79 | +# Remove rescan apps that are not supported |
| 80 | +for key in list(RUN_PERIODIC_RESCANS.keys()): |
| 81 | + if key not in rescan_supported_apps: |
| 82 | + print(f"[ WARNING ]: Removed '{key}' from RUN_PERIODIC_RESCANS since only {rescan_supported_apps} are supported.") |
| 83 | + RUN_PERIODIC_RESCANS.pop(key) |
| 84 | + |
| 85 | +# Ensure SONARR and RADARR have the required parameters with default values if they are present |
| 86 | +for app in rescan_supported_apps: |
| 87 | + if app in RUN_PERIODIC_RESCANS: |
| 88 | + for param, (default, expected_type) in rescan_default_values.items(): |
| 89 | + if param not in RUN_PERIODIC_RESCANS[app]: |
| 90 | + print(f"[ INFO ]: Adding missing parameter '{param}' to '{app}' with default value '{default}'.") |
| 91 | + RUN_PERIODIC_RESCANS[app][param] = default |
| 92 | + else: |
| 93 | + # Check the type and correct if necessary |
| 94 | + current_value = RUN_PERIODIC_RESCANS[app][param] |
| 95 | + if not isinstance(current_value, expected_type): |
| 96 | + print( |
| 97 | + f"[ INFO ]: Parameter '{param}' for '{app}' must be of type {expected_type.__name__} and found value '{current_value}' (type '{type(current_value).__name__}'). Defaulting to '{default}'." |
| 98 | + ) |
| 99 | + RUN_PERIODIC_RESCANS[app][param] = default |
| 100 | + |
63 | 101 | ########### Enrich setting variables |
64 | 102 | if RADARR_URL: RADARR_URL = RADARR_URL.rstrip('/') + '/api/v3' |
65 | 103 | if SONARR_URL: SONARR_URL = SONARR_URL.rstrip('/') + '/api/v3' |
|
68 | 106 | if WHISPARR_URL: WHISPARR_URL = WHISPARR_URL.rstrip('/') + '/api/v3' |
69 | 107 | if QBITTORRENT_URL: QBITTORRENT_URL = QBITTORRENT_URL.rstrip('/') + '/api/v2' |
70 | 108 |
|
71 | | -RADARR_MIN_VERSION = '5.3.6.8608' |
72 | | -SONARR_MIN_VERSION = '4.0.1.1131' |
| 109 | + |
| 110 | +RADARR_MIN_VERSION = "5.3.6.8608" |
| 111 | +if "RADARR" in PERIODIC_RESCANS: |
| 112 | + RADARR_MIN_VERSION = "5.10.3.9171" |
| 113 | + |
| 114 | +SONARR_MIN_VERSION = "4.0.1.1131" |
| 115 | +if "SONARR" in PERIODIC_RESCANS: |
| 116 | + SONARR_MIN_VERSION = "4.0.9.2332" |
73 | 117 | LIDARR_MIN_VERSION = None |
74 | 118 | READARR_MIN_VERSION = None |
75 | 119 | WHISPARR_MIN_VERSION = '2.0.0.548' |
|
82 | 126 | for var_name in dir(): |
83 | 127 | if var_name.isupper(): |
84 | 128 | settingsDict[var_name] = locals()[var_name] |
85 | | - |
|
0 commit comments