from app.models import JobRun from app.services import pipeline_runner async def retag_from_url(file_path: str, url: str, changed_by: str, keep_genre: bool = False) -> JobRun: """Wraps the existing fix-track-metadata.py (Spotify/iTunes URL -> fetch canonical metadata, write tags, replace cover art, beet update + move, refill genre, trigger Navidrome scan) rather than reimplementing its metadata-fetch and multi-format tag-writing logic here.""" args = [] if keep_genre: args.append("--keep-genre") args.extend([file_path, url]) return await pipeline_runner.run_lib_script( "manual:retag_from_url", "fix-track-metadata.py", args, triggered_by=f"manual:{changed_by}" )