feat(setup): add done button and integrate NFO scan into initialization
- Add /api/setup/unresolved/done endpoint to mark phase complete - NFO scan now runs after series sync during initialization - Middleware redirects to /login after setup complete (was /loading) - Done button allows skipping folder resolution with redirect to NFO scan phase
This commit is contained in:
@@ -386,6 +386,9 @@ async def perform_initial_setup(progress_service=None):
|
||||
# Load series into memory from database
|
||||
await _load_series_into_memory(progress_service)
|
||||
|
||||
# Run NFO scan as part of initialization
|
||||
await perform_nfo_scan_if_needed(progress_service)
|
||||
|
||||
return True
|
||||
|
||||
except (OSError, RuntimeError, ValueError) as e:
|
||||
@@ -427,13 +430,46 @@ async def _is_nfo_scan_configured() -> bool:
|
||||
async def _execute_nfo_scan(progress_service=None) -> None:
|
||||
"""Execute the actual NFO scan with TMDB data.
|
||||
|
||||
Note: NFO service removed. This function is now a no-op stub.
|
||||
|
||||
Args:
|
||||
progress_service: Unused. Kept to avoid breaking call-sites.
|
||||
progress_service: Optional ProgressService for emitting updates
|
||||
"""
|
||||
logger.info("NFO scan skipped — NFO service removed")
|
||||
return
|
||||
from src.server.services.anime_service import get_anime_service
|
||||
from src.server.services.nfo_scan_service import NfoScanService
|
||||
|
||||
logger.info("Starting NFO scan...")
|
||||
|
||||
anime_service = get_anime_service()
|
||||
nfo_service = NfoScanService()
|
||||
|
||||
# Subscribe to NFO events and forward to progress service
|
||||
async def nfo_event_handler(event_data):
|
||||
if event_data.get('type') == 'nfo_scan_progress':
|
||||
data = event_data.get('data', {})
|
||||
if progress_service:
|
||||
await progress_service.update_progress(
|
||||
progress_id="nfo_scan",
|
||||
current=data.get('current', 0),
|
||||
total=data.get('total', 100),
|
||||
message=data.get('message', 'Scanning...'),
|
||||
key=data.get('key'),
|
||||
folder=data.get('folder'),
|
||||
)
|
||||
elif event_data.get('type') == 'nfo_scan_completed':
|
||||
stats = event_data.get('statistics', {})
|
||||
if progress_service:
|
||||
await progress_service.complete_progress(
|
||||
progress_id="nfo_scan",
|
||||
message=f"NFO scan complete: {stats.get('created', 0)} created, {stats.get('updated', 0)} updated",
|
||||
)
|
||||
|
||||
nfo_service.subscribe_to_scan_events(nfo_event_handler)
|
||||
|
||||
try:
|
||||
# Run the scan
|
||||
nfo_result = await nfo_service.scan_all(anime_service)
|
||||
logger.info("NFO scan completed: %s", nfo_result)
|
||||
finally:
|
||||
nfo_service.unsubscribe_from_scan_events(nfo_event_handler)
|
||||
|
||||
|
||||
async def perform_nfo_scan_if_needed(progress_service=None):
|
||||
@@ -446,8 +482,8 @@ async def perform_nfo_scan_if_needed(progress_service=None):
|
||||
from src.server.services.progress_service import ProgressType
|
||||
await progress_service.start_progress(
|
||||
progress_id="nfo_scan",
|
||||
progress_type=ProgressType.SYSTEM,
|
||||
title="Processing NFO Metadata",
|
||||
progress_type=ProgressType.SCAN,
|
||||
title="Scanning NFO Files",
|
||||
total=100,
|
||||
message="Checking NFO scan status...",
|
||||
metadata={"step_id": "nfo_scan"}
|
||||
|
||||
Reference in New Issue
Block a user