mirror of
https://github.com/Dictionarry-Hub/profilarr.git
synced 2026-01-03 12:17:45 -05:00
59 lines
2.0 KiB
Python
59 lines
2.0 KiB
Python
# app/utils/hash.py
|
|
|
|
import hashlib
|
|
from typing import Dict, Any, Optional
|
|
|
|
|
|
def generate_format_hash(format_name: str, profile_name: str,
|
|
arr_config: Dict[str, Any]) -> str:
|
|
"""
|
|
Generate a unique hash for a format based on its name, parent profile, and arr config.
|
|
"""
|
|
arr_identifier = f"{arr_config['name']}-{arr_config['type']}"
|
|
hash_input = f"{format_name}:{profile_name}:{arr_identifier}".encode(
|
|
'utf-8')
|
|
return hashlib.sha256(hash_input).hexdigest()[:8]
|
|
|
|
|
|
def process_format_name(format_name: str, profile_name: Optional[str],
|
|
arr_config: Dict[str, Any]) -> str:
|
|
"""
|
|
Process a format name and generate a unique version if needed.
|
|
If profile_name is None, appends [Profilarr] tag instead of hash.
|
|
"""
|
|
if not arr_config.get('import_as_unique', False):
|
|
return format_name
|
|
|
|
if profile_name:
|
|
# Format is part of a profile - use hash
|
|
hash_value = generate_format_hash(format_name, profile_name,
|
|
arr_config)
|
|
return f"{format_name} [{hash_value}]"
|
|
else:
|
|
# Standalone format - use Profilarr tag
|
|
return f"{format_name} [Profilarr]"
|
|
|
|
|
|
def generate_profile_hash(profile_data: Dict[str, Any],
|
|
arr_config: Dict[str, Any]) -> str:
|
|
"""
|
|
Generate a unique hash for a profile based on profile name and arr name.
|
|
"""
|
|
profile_name = profile_data.get('name', '')
|
|
arr_name = arr_config['name']
|
|
hash_input = f"{profile_name}:{arr_name}".encode('utf-8')
|
|
return hashlib.sha256(hash_input).hexdigest()[:8]
|
|
|
|
|
|
def process_profile_name(profile_data: Dict[str, Any],
|
|
arr_config: Dict[str, Any]) -> str:
|
|
"""
|
|
Process a profile name and generate a unique hashed version if needed.
|
|
"""
|
|
profile_name = profile_data['name']
|
|
if not arr_config.get('import_as_unique', False):
|
|
return profile_name
|
|
|
|
hash_value = generate_profile_hash(profile_data, arr_config)
|
|
return f"{profile_name} [{hash_value}]"
|