Hotfix scanning via watcher

This commit is contained in:
Georges-Antoine Assi
2024-02-09 18:16:59 -05:00
parent 1e885693e5
commit f67b984cbb
5 changed files with 14 additions and 12 deletions

View File

@@ -63,7 +63,7 @@ async def scan_platforms(
log.info(f"Found {len(platform_list)} platforms in file system ")
for platform_slug in platform_list:
platform = db_platform_handler.get_platform_by_slug(platform_slug)
platform = db_platform_handler.get_platform_by_fs_slug(platform_slug)
scanned_platform = scan_platform(platform_slug, fs_platforms)
if platform:
@@ -135,7 +135,7 @@ async def scan_handler(_sid: str, options: dict):
log.info(emoji.emojize(":magnifying_glass_tilted_right: Scanning "))
platform_slugs = options.get("platforms", [])
platform_ids = options.get("platforms", [])
complete_rescan = options.get("completeRescan", False)
rescan_unidentified = options.get("rescanUnidentified", False)
selected_roms = options.get("roms", [])
@@ -143,7 +143,7 @@ async def scan_handler(_sid: str, options: dict):
# Run in worker if redis is available
return high_prio_queue.enqueue(
scan_platforms,
platform_slugs,
platform_ids,
complete_rescan,
rescan_unidentified,
selected_roms,

View File

@@ -24,7 +24,7 @@ class DBPlatformsHandler(DBHandler):
)
@begin_session
def get_platform_by_slug(self, fs_slug: str, session: Session = None):
def get_platform_by_fs_slug(self, fs_slug: str, session: Session = None):
return session.scalars(
select(Platform).filter_by(fs_slug=fs_slug).limit(1)
).first()

View File

@@ -21,7 +21,7 @@ SWAPPED_PLATFORM_BINDINGS = dict((v, k) for k, v in cm.config.PLATFORMS_BINDING.
def _get_main_platform_igdb_id(platform: Platform):
if platform.fs_slug in cm.config.PLATFORMS_VERSIONS.keys():
main_platform_slug = cm.config.PLATFORMS_VERSIONS[platform.fs_slug]
main_platform = db_platform_handler.get_platform_by_slug(main_platform_slug)
main_platform = db_platform_handler.get_platform_by_fs_slug(main_platform_slug)
if main_platform:
main_platform_igdb_id = main_platform.igdb_id
else:

View File

@@ -17,7 +17,7 @@ def test_platforms():
platforms = db_platform_handler.get_platforms()
assert len(platforms) == 1
platform = db_platform_handler.get_platform_by_slug(platform.slug)
platform = db_platform_handler.get_platform_by_fs_slug(platform.fs_slug)
assert platform.name == "test_platform"
db_platform_handler.purge_platforms([])

View File

@@ -7,6 +7,7 @@ from config import (
RESCAN_ON_FILESYSTEM_CHANGE_DELAY,
)
from endpoints.sockets.scan import scan_platforms
from handler import db_platform_handler
from logger.logger import log
from tasks.tasks import tasks_scheduler
from config.config_manager import config_manager as cm
@@ -41,7 +42,8 @@ class EventHandler(FileSystemEventHandler):
return
event_src = event.src_path.split(path)[-1]
platform_slug = event_src.split("/")[1]
fs_slug = event_src.split("/")[1]
db_platform = db_platform_handler.get_platform_by_fs_slug(fs_slug)
log.info(f"Filesystem event: {event.event_type} {event_src}")
@@ -52,8 +54,8 @@ class EventHandler(FileSystemEventHandler):
log.info("Full rescan already scheduled")
return
if platform_slug in job.args[0]:
log.info(f"Scan already scheduled for {platform_slug}")
if db_platform and db_platform.id in job.args[0]:
log.info(f"Scan already scheduled for {fs_slug}")
return
time_delta = timedelta(minutes=RESCAN_ON_FILESYSTEM_CHANGE_DELAY)
@@ -63,11 +65,11 @@ class EventHandler(FileSystemEventHandler):
if event.is_directory and event_src.count("/") == 1:
log.info(f"Platform directory changed, {rescan_in_msg}")
tasks_scheduler.enqueue_in(time_delta, scan_platforms, [])
else:
elif db_platform:
# Otherwise trigger a rescan for the specific platform
log.info(f"Change detected in {platform_slug} folder, {rescan_in_msg}")
log.info(f"Change detected in {fs_slug} folder, {rescan_in_msg}")
return tasks_scheduler.enqueue_in(
time_delta, scan_platforms, [platform_slug]
time_delta, scan_platforms, [db_platform.id]
)