|
@@ -1,3 +1,9 @@
|
|
|
+from games.constants import (
|
|
|
+ ENGLISH_PATCHED_KEYWORDS,
|
|
|
+ HACK_KEYWORDS,
|
|
|
+ REGION_KEYWORDS,
|
|
|
+ UNDUB_KEYWORDS,
|
|
|
+)
|
|
|
import os
|
|
|
import xml.etree.ElementTree as ET
|
|
|
import subprocess
|
|
@@ -11,10 +17,6 @@ import logging
|
|
|
|
|
|
logger = logging.Logger(__name__)
|
|
|
|
|
|
-US_STRINGS = ["(u)", "(usa)", "(us)"]
|
|
|
-JP_STRINGS = ["(j)", "japan", "jp", "jpn"]
|
|
|
-EU_STRINGS = ["(e)", "eur", "europe", "pal"]
|
|
|
-
|
|
|
|
|
|
def update_media_root_for_import(file_path):
|
|
|
"""Given a file path, re-write it for our app MEDIA_ROOT"""
|
|
@@ -52,24 +54,31 @@ def import_gamelist_file_to_db_for_system(
|
|
|
for game in games:
|
|
|
name = game.find("name").text
|
|
|
game_path = game.find("path").text.lower()
|
|
|
- obj, created = Game.objects.get_or_create(name=name, game_system=game_system)
|
|
|
+ try:
|
|
|
+ obj, created = Game.objects.get_or_create(
|
|
|
+ name=name, game_system=game_system
|
|
|
+ )
|
|
|
+ except Game.MultipleObjectsReturned:
|
|
|
+ logger.warning(
|
|
|
+ f"While importing {name} for {game_system}, duplicate entry found"
|
|
|
+ )
|
|
|
|
|
|
if not created and not full_scan:
|
|
|
not_imported_games.append(game)
|
|
|
logger.info(f"Found game {game} and not doing full scan, so skipping")
|
|
|
continue
|
|
|
|
|
|
- english_patched = "patched" in game_path
|
|
|
- undub = "undub" in game_path
|
|
|
- hack = "hack" in game_path
|
|
|
+ english_patched = game_path.lower() in ENGLISH_PATCHED_KEYWORDS
|
|
|
+ undub = game_path.lower() in UNDUB_KEYWORDS
|
|
|
+ hack = game_path.lower() in HACK_KEYWORDS
|
|
|
|
|
|
region = None
|
|
|
|
|
|
- if any(us in game_path for us in US_STRINGS):
|
|
|
+ if any(us in game_path for us in REGION_KEYWORDS["US"]):
|
|
|
region = Game.Region.US.name
|
|
|
- if any(jp in game_path for jp in JP_STRINGS):
|
|
|
+ if any(jp in game_path for jp in REGION_KEYWORDS["JP"]):
|
|
|
region = Game.Region.JP.name
|
|
|
- if any(eu in game_path for eu in EU_STRINGS):
|
|
|
+ if any(eu in game_path for eu in REGION_KEYWORDS["EU"]):
|
|
|
region = Game.Region.EU.name
|
|
|
|
|
|
release_date_str = game.find("releasedate").text
|