Added new rom import system utilizing WAL to avoid locking the database and freezing the frontend
Also added new logging setup to hopefully stream the scrape process
This commit is contained in:
@@ -65,6 +65,8 @@ class Config:
|
||||
return {
|
||||
"rom_path": str(self.rom_path),
|
||||
"metadata_path": str(self.metadata_path),
|
||||
"database_path": str(self.database_path),
|
||||
"images_path": str(self.images_path),
|
||||
"host": self.host,
|
||||
"port": self.port,
|
||||
"websocket_port": self.websocket_port,
|
||||
@@ -73,21 +75,21 @@ class Config:
|
||||
}
|
||||
|
||||
def save(self):
|
||||
# Ensure config directory exists
|
||||
if not self.path.parent.exists():
|
||||
self.path.parent.mkdir(parents=True, exist_ok=True)
|
||||
rom_path = input(f"Enter the path to your ROMs [{self.rom_path}] enter for default: ").strip()
|
||||
metadata_path = input(f"Enter the path to your metadata [{self.metadata_path}] enter for default: ").strip()
|
||||
self.rom_path = Path(rom_path) if rom_path else self.rom_path
|
||||
self.metadata_path = Path(metadata_path) if metadata_path else self.metadata_path
|
||||
|
||||
# Create directories if they don't exist
|
||||
if not self.rom_path.exists():
|
||||
self.rom_path.mkdir(parents=True, exist_ok=True)
|
||||
if not self.metadata_path.exists():
|
||||
self.metadata_path.mkdir(parents=True, exist_ok=True)
|
||||
if not self.images_path.exists():
|
||||
self.images_path.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
# Write configuration to file
|
||||
with open(self.path, 'w') as f:
|
||||
json.dump(self.to_dict(), f, indent=4)
|
||||
f.close()
|
||||
|
||||
def load(self) -> "Config":
|
||||
if self.path.exists():
|
||||
@@ -95,19 +97,26 @@ class Config:
|
||||
data = json.load(f)
|
||||
self.rom_path = Path(data.get("rom_path", str(self.rom_path)))
|
||||
self.metadata_path = Path(data.get("metadata_path", str(self.metadata_path)))
|
||||
self.database_path = Path(data.get("database_path", str(self.database_path)))
|
||||
self.images_path = Path(data.get("images_path", str(self.images_path)))
|
||||
self.host = data.get("host", self.host)
|
||||
self.port = data.get("port", self.port)
|
||||
self.websocket_port = data.get("websocket_port", self.websocket_port)
|
||||
self.igdb_api_key = data.get("igdb_api_key", self.igdb_api_key)
|
||||
self.igdb_client_id = data.get("igdb_client_id", self.igdb_client_id)
|
||||
|
||||
# Load environment secrets if API keys are still empty
|
||||
if self.igdb_api_key == "" or self.igdb_client_id == "":
|
||||
secrets = self.load_env_secrets()
|
||||
if secrets:
|
||||
self.igdb_api_key = secrets.get("IGDB_SECRET_KEY", "")
|
||||
self.igdb_client_id = secrets.get("IGDB_CLIENT_ID", "")
|
||||
f.close()
|
||||
self.save()
|
||||
return self
|
||||
f.close()
|
||||
self.igdb_api_key = secrets.get("IGDB_SECRET_KEY", self.igdb_api_key)
|
||||
self.igdb_client_id = secrets.get("IGDB_CLIENT_ID", self.igdb_client_id)
|
||||
else:
|
||||
# Config file doesn't exist, create it with defaults
|
||||
# Load environment secrets for initial setup
|
||||
secrets = self.load_env_secrets()
|
||||
if secrets:
|
||||
self.igdb_api_key = secrets.get("IGDB_SECRET_KEY", self.igdb_api_key)
|
||||
self.igdb_client_id = secrets.get("IGDB_CLIENT_ID", self.igdb_client_id)
|
||||
self.save()
|
||||
self.load()
|
||||
return self
|
||||
|
||||
Reference in New Issue
Block a user