feat: enhance import functionality to support unique import settings and original name preservation

This commit is contained in:
Sam Chau
2025-01-10 00:48:37 +10:30
parent f39b693b3d
commit 0fc36be017
2 changed files with 53 additions and 5 deletions

View File

@@ -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']:

View File

@@ -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]
}