remove mame from scheduled tasks and embed fixture

This commit is contained in:
Georges-Antoine Assi
2024-03-26 16:49:02 -04:00
parent 1f09eb4518
commit 4174b9753e
15 changed files with 172882 additions and 74 deletions

1
.gitignore vendored
View File

@@ -58,4 +58,3 @@ frontend/dev-dist
# outside data
switch_titledb.json
switch_product_ids.json
mame.xml

View File

@@ -31,7 +31,7 @@ RomM (ROM Manager) allows you to scan, enrich, and browse your game collection w
- Supports a large number of **[platforms][platform-support]**
- Play games directly from the browser using [EmulatorJS][wiki-emulatorjs-url]
- Share your library with friend while [limiting access and permissions][authentication]
- Supports [MAME][mame-xml-update], [Nintendo Switch][switch-titledb-update] and PS2 naming schemes
- Supports MAME, Nintendo Switch, and Sony Playstation naming schemes
- Detects and groups **multifile games** (e.g. PS1 games with multiple CDs)
- Can [parse tags][tag-support] in filenames (e.g. (E), (USA), (rev v1), etc.)
- View, upload, update, and delete games from any modern web browser
@@ -179,8 +179,6 @@ Here are a few projects that we think you might like:
[platform-support]: #-platform-support
[authentication]: #-authentication
[tag-support]: #-tag-support
[switch-titledb-update]: #-switch-titledb-update
[mame-xml-update]: #-mame-xml-update
[configuration-file]: #-configuration-file
<!-- Files -->

View File

@@ -79,10 +79,3 @@ SCHEDULED_UPDATE_SWITCH_TITLEDB_CRON: Final = os.environ.get(
"SCHEDULED_UPDATE_SWITCH_TITLEDB_CRON",
"0 4 * * *", # At 4:00 AM every day
)
ENABLE_SCHEDULED_UPDATE_MAME_XML: Final = (
os.environ.get("ENABLE_SCHEDULED_UPDATE_MAME_XML", "false") == "true"
)
SCHEDULED_UPDATE_MAME_XML_CRON: Final = os.environ.get(
"SCHEDULED_UPDATE_MAME_XML_CRON",
"0 5 * * *", # At 5:00 AM every day
)

View File

@@ -1,11 +1,9 @@
from config import (
ENABLE_RESCAN_ON_FILESYSTEM_CHANGE,
ENABLE_SCHEDULED_RESCAN,
ENABLE_SCHEDULED_UPDATE_MAME_XML,
ENABLE_SCHEDULED_UPDATE_SWITCH_TITLEDB,
RESCAN_ON_FILESYSTEM_CHANGE_DELAY,
SCHEDULED_RESCAN_CRON,
SCHEDULED_UPDATE_MAME_XML_CRON,
SCHEDULED_UPDATE_SWITCH_TITLEDB_CRON,
)
from endpoints.responses.heartbeat import HeartbeatResponse
@@ -51,11 +49,5 @@ def heartbeat() -> HeartbeatResponse:
"TITLE": "Scheduled Switch TitleDB update",
"MESSAGE": "Updates the Nintedo Switch TitleDB file",
},
"MAME_XML": {
"ENABLED": ENABLE_SCHEDULED_UPDATE_MAME_XML,
"CRON": SCHEDULED_UPDATE_MAME_XML_CRON,
"TITLE": "Scheduled MAME XML update",
"MESSAGE": "Updates the MAME XML file",
},
}
}

View File

@@ -14,7 +14,6 @@ class TaskDict(WatcherDict):
class SchedulerDict(TypedDict):
RESCAN: TaskDict
SWITCH_TITLEDB: TaskDict
MAME_XML: TaskDict
class MetadataSourcesDict(TypedDict):

View File

@@ -1,7 +1,6 @@
from decorators.auth import protected_route
from endpoints.responses import MessageResponse
from fastapi import APIRouter, Request
from tasks.update_mame_xml import update_mame_xml_task
from tasks.update_switch_titledb import update_switch_titledb_task
router = APIRouter()
@@ -33,7 +32,6 @@ async def run_task(request: Request, task: str) -> MessageResponse:
"""
tasks = {
"mame": update_mame_xml_task,
"switch_titledb": update_switch_titledb_task
}

View File

@@ -20,6 +20,3 @@ def test_heartbeat():
assert heartbeat.get('SCHEDULER').get('SWITCH_TITLEDB').get('ENABLED')
assert heartbeat.get('SCHEDULER').get('SWITCH_TITLEDB').get('CRON') == "0 4 * * *"
assert heartbeat.get('SCHEDULER').get('SWITCH_TITLEDB').get('TITLE') == "Scheduled Switch TitleDB update"
assert heartbeat.get('SCHEDULER').get('MAME_XML').get('ENABLED')
assert heartbeat.get('SCHEDULER').get('MAME_XML').get('CRON') == "0 5 * * *"
assert heartbeat.get('SCHEDULER').get('MAME_XML').get('TITLE') == "Scheduled MAME XML update"

View File

@@ -5,7 +5,6 @@ import re
import unicodedata
from typing import Final
from logger.logger import log
from tasks.update_mame_xml import update_mame_xml_task
from tasks.update_switch_titledb import update_switch_titledb_task
@@ -183,20 +182,8 @@ class MetadataHandler:
async def _mame_format(self, search_term: str) -> str:
from handler import fs_rom_handler
mame_index = {"menu": {"game": []}}
try:
with open(MAME_XML_FILE, "r") as index_xml:
mame_index = xmltodict.parse(index_xml.read())
except FileNotFoundError:
log.warning("Fetching the MAME XML file from Github...")
await update_mame_xml_task.run(force=True)
try:
with open(MAME_XML_FILE, "r") as index_xml:
mame_index = xmltodict.parse(index_xml.read())
except FileNotFoundError:
log.error("Could not fetch the MAME XML file from Github")
finally:
with open(MAME_XML_FILE, "r") as index_xml:
mame_index = xmltodict.parse(index_xml.read())
index_entry = [
game
for game in mame_index["menu"]["game"]

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,5 @@
from logger.logger import log
from tasks.scan_library import scan_library_task
from tasks.update_mame_xml import update_mame_xml_task
from tasks.update_switch_titledb import update_switch_titledb_task
from tasks.tasks import tasks_scheduler
@@ -8,7 +7,6 @@ if __name__ == "__main__":
# Initialize the tasks
scan_library_task.init()
update_switch_titledb_task.init()
update_mame_xml_task.init()
log.info("Starting scheduler")

View File

@@ -1,25 +0,0 @@
import os
from pathlib import Path
from typing import Final
from config import ENABLE_SCHEDULED_UPDATE_MAME_XML, SCHEDULED_UPDATE_MAME_XML_CRON
from tasks.tasks import RemoteFilePullTask
FIXTURE_FILE_PATH: Final = (
Path(os.path.dirname(__file__)).parent / "handler" / "metadata_handler" / "fixtures" / "mame.xml"
)
class UpdateMAMEXMLTask(RemoteFilePullTask):
def __init__(self):
super().__init__(
func="tasks.update_mame_xml.update_mame_xml_task.run",
description="mame xml update",
enabled=ENABLE_SCHEDULED_UPDATE_MAME_XML,
cron_string=SCHEDULED_UPDATE_MAME_XML_CRON,
url="https://gist.githubusercontent.com/gantoine/0e2b9e25962bfd661ad2fe0ba0e72766/raw/gistfile1.txt",
file_path=FIXTURE_FILE_PATH,
)
update_mame_xml_task = UpdateMAMEXMLTask()

View File

@@ -35,5 +35,3 @@ ENABLE_SCHEDULED_RESCAN=true
SCHEDULED_RESCAN_CRON=0 3 * * *
ENABLE_SCHEDULED_UPDATE_SWITCH_TITLEDB=true
SCHEDULED_UPDATE_SWITCH_TITLEDB_CRON=0 4 * * *
ENABLE_SCHEDULED_UPDATE_MAME_XML=true
SCHEDULED_UPDATE_MAME_XML_CRON=0 5 * * *

View File

@@ -8,6 +8,5 @@ import type { TaskDict } from './TaskDict';
export type SchedulerDict = {
RESCAN: TaskDict;
SWITCH_TITLEDB: TaskDict;
MAME_XML: TaskDict;
};

View File

@@ -13,8 +13,6 @@ env =
ENABLE_RESCAN_ON_FILESYSTEM_CHANGE=true
ENABLE_SCHEDULED_RESCAN=true
ENABLE_SCHEDULED_UPDATE_SWITCH_TITLEDB=true
ENABLE_SCHEDULED_UPDATE_MAME_XML=true
RESCAN_ON_FILESYSTEM_CHANGE_DELAY=5
SCHEDULED_RESCAN_CRON=0 3 * * *
SCHEDULED_UPDATE_SWITCH_TITLEDB_CRON=0 4 * * *
SCHEDULED_UPDATE_MAME_XML_CRON=0 5 * * *

View File

@@ -49,6 +49,4 @@
<Config Name="SCHEDULED_RESCAN_CRON" Target="SCHEDULED_RESCAN_CRON" Default="0 3 * * *" Mode="" Description="Cron expression for scheduled scan" Type="Variable" Display="advanced" Required="false" Mask="false"/>
<Config Name="ENABLE_SCHEDULED_UPDATE_SWITCH_TITLEDB" Target="ENABLE_SCHEDULED_UPDATE_SWITCH_TITLEDB" Default="false" Mode="" Description="Update Switch TitleDB on a schedule" Type="Variable" Display="advanced" Required="false" Mask="false"/>
<Config Name="SCHEDULED_UPDATE_SWITCH_TITLEDB_CRON" Target="SCHEDULED_UPDATE_SWITCH_TITLEDB_CRON" Default="0 4 * * *" Mode="" Description="Cron expression for scheduled Switch TitleDB update" Type="Variable" Display="advanced" Required="false" Mask="false"/>
<Config Name="ENABLE_SCHEDULED_UPDATE_MAME_XML" Target="ENABLE_SCHEDULED_UPDATE_MAME_XML" Default="false" Mode="" Description="Update MAME XML on a schedule" Type="Variable" Display="advanced" Required="false" Mask="false"/>
<Config Name="SCHEDULED_UPDATE_MAME_XML_CRON" Target="SCHEDULED_UPDATE_MAME_XML_CRON" Default="0 4 * * *" Mode="" Description="Cron expression for scheduled MAME XML update" Type="Variable" Display="advanced" Required="false" Mask="false"/>
</Container>