V2.2.0.5 - Implement support for unknown file extensions in system , ability to deactivate warning (Introduced new settings in rgsx_settings.py for this)

- If file is ZIP and extension supported download and extract without error
- Updated various parts of the codebase to check for this setting before blocking downloads.
- Added Italian translation
This commit is contained in:
skymike03
2025-09-10 18:39:27 +02:00
parent 44bf0eda24
commit 8d1f57d13e
12 changed files with 468 additions and 82 deletions
+19 -4
View File
@@ -247,9 +247,11 @@ def check_extension_before_download(url, platform, game_name):
try:
sanitized_name = sanitize_filename(game_name)
extensions_data = load_extensions_json()
# Si le cache des extensions est vide/introuvable, ne bloquez pas: traitez comme "inconnu"
# afin d'afficher l'avertissement d'extension au lieu d'une erreur fatale.
if not extensions_data:
logger.error(f"Fichier {config.JSON_EXTENSIONS} vide ou introuvable")
return None
logger.warning(f"Fichier {config.JSON_EXTENSIONS} vide ou introuvable; poursuite avec extensions inconnues")
extensions_data = []
is_supported = is_extension_supported(sanitized_name, platform, extensions_data)
extension = os.path.splitext(sanitized_name)[1].lower()
@@ -271,10 +273,23 @@ def check_extension_before_download(url, platform, game_name):
if is_supported:
logger.debug(f"L'extension de {sanitized_name} est supportée pour {platform}")
return (url, platform, game_name, False)
elif is_archive and system_known:
logger.debug(f"Archive {extension.upper()} détectée pour {sanitized_name}, extraction automatique prévue")
elif is_archive:
# Même si le système n'est pas connu ou que l'extension n'est pas listée,
# on force l'extraction des archives (ZIP/RAR) à la fin du téléchargement
# puis suppression du fichier.
logger.debug(f"Archive {extension.upper()} détectée pour {sanitized_name}, extraction automatique prévue (extension non listée)")
return (url, platform, game_name, True)
else:
# Autoriser si l'utilisateur a choisi d'autoriser les extensions inconnues
allow_unknown = False
try:
from rgsx_settings import get_allow_unknown_extensions
allow_unknown = get_allow_unknown_extensions()
except Exception:
allow_unknown = False
if allow_unknown:
logger.debug(f"Extension non supportée ({extension}) mais autorisée par l'utilisateur pour {sanitized_name}")
return (url, platform, game_name, False)
logger.debug(f"Extension non supportée ({extension}) pour {sanitized_name}, avertissement affiché")
return (url, platform, game_name, False)
except Exception as e: