diff --git a/backend/app/importarr/__init__.py b/backend/app/importarr/__init__.py index 0d0c321..c87f92b 100644 --- a/backend/app/importarr/__init__.py +++ b/backend/app/importarr/__init__.py @@ -7,6 +7,7 @@ from ..arr.manager import get_arr_config from ..data.utils import get_category_directory, load_yaml_file from .format import import_formats_to_arr from .profile import import_profiles_to_arr +from ..db import get_unique_arrs logger = logging.getLogger('importarr') @@ -39,6 +40,23 @@ def import_formats(): 'Either formatNames or all=true is required' }), 400 + # Get import_as_unique setting using the new function + import_settings = get_unique_arrs([arr_id]) + arr_settings = import_settings.get(arr_id, { + 'import_as_unique': False, + 'name': 'Unknown' + }) + import_as_unique = arr_settings['import_as_unique'] + + if import_as_unique: + logger.info( + f"Unique imports for {arr_settings['name']} are on, adjusting names for custom formats" + ) + else: + logger.info( + f"Unique imports for {arr_settings['name']} is off, using original names" + ) + # Get arr configuration arr_config = get_arr_config(arr_id) if not arr_config['success']: @@ -69,8 +87,18 @@ def import_formats(): 'Failed to read custom formats directory' }), 500 - # Import formats with arr type from config + # Store original names for file lookups + original_names = format_names.copy() + + # Modify format names if import_as_unique is true + if import_as_unique: + format_names = [f"{name} [Dictionarry]" for name in format_names] + logger.info( + f"Modified format names for unique import: {format_names}") + + # Import formats with arr type from config, but use original names for file lookups result = import_formats_to_arr(format_names=format_names, + original_names=original_names, base_url=arr_data['arrServer'], api_key=arr_data['apiKey'], arr_type=arr_data['type']) @@ -108,6 +136,22 @@ def import_profiles(): 'Either profileNames or all=true is required' }), 400 + import_settings = get_unique_arrs([arr_id]) + arr_settings = import_settings.get(arr_id, { + 'import_as_unique': False, + 'name': 'Unknown' + }) + import_as_unique = arr_settings['import_as_unique'] + + if import_as_unique: + logger.info( + f"Unique imports for {arr_settings['name']} are on, adjusting names for quality profiles" + ) + else: + logger.info( + f"Unique imports for {arr_settings['name']} is off, using original names" + ) + # Get arr configuration arr_config = get_arr_config(arr_id) if not arr_config['success']: diff --git a/backend/app/importarr/format.py b/backend/app/importarr/format.py index 42e4a15..c48dfcd 100644 --- a/backend/app/importarr/format.py +++ b/backend/app/importarr/format.py @@ -10,7 +10,8 @@ from ..compile import CustomFormat, FormatConverter, TargetApp logger = logging.getLogger('importarr') -def import_formats_to_arr(format_names, base_url, api_key, arr_type): +def import_formats_to_arr(format_names, base_url, api_key, arr_type, + original_names): logger.info( f"Received {len(format_names)} formats to import for {arr_type}") results = { @@ -47,9 +48,11 @@ def import_formats_to_arr(format_names, base_url, api_key, arr_type): target_app = TargetApp.RADARR if arr_type.lower( ) == 'radarr' else TargetApp.SONARR - for format_name in format_names: + for i, format_name in enumerate(format_names): try: - format_file = f"{get_category_directory('custom_format')}/{format_name}.yml" + # Use original name for file lookup + original_name = original_names[i] + format_file = f"{get_category_directory('custom_format')}/{original_name}.yml" format_data = load_yaml_file(format_file) logger.info("Received format:\n" + yaml.dump(format_data, sort_keys=False)) @@ -60,9 +63,10 @@ def import_formats_to_arr(format_names, base_url, api_key, arr_type): if not converted_format: raise ValueError("Format conversion failed") + # Use the potentially modified name (with [Dictionarry]) for arr compiled_data = { 'name': - converted_format.name, + format_name, # Use the possibly modified name 'specifications': [vars(spec) for spec in converted_format.specifications] }