rename to lrx
resolve conflicts
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
"""
|
||||
Author: Uyanide pywang0608@foxmail.com
|
||||
Date: 2026-03-31 06:09:11
|
||||
Description: Metadata enrichment pipeline
|
||||
"""
|
||||
|
||||
from loguru import logger
|
||||
|
||||
from .base import BaseEnricher
|
||||
from .audio_tag import AudioTagEnricher
|
||||
from .file_name import FileNameEnricher
|
||||
from ..models import TrackMeta
|
||||
|
||||
# Enrichers run in order; earlier ones have higher priority.
|
||||
_ENRICHERS: list[BaseEnricher] = [
|
||||
AudioTagEnricher(),
|
||||
FileNameEnricher(),
|
||||
]
|
||||
|
||||
|
||||
def enrich_track(track: TrackMeta) -> TrackMeta:
|
||||
"""Run all enrichers and return a track with missing fields filled in.
|
||||
|
||||
Each enricher sees the cumulative state (earlier enrichers' results
|
||||
are already applied). A field is only set if it is currently None.
|
||||
"""
|
||||
for enricher in _ENRICHERS:
|
||||
try:
|
||||
result = enricher.enrich(track)
|
||||
except Exception as e:
|
||||
logger.warning(f"Enricher {enricher.name} failed: {e}")
|
||||
continue
|
||||
if not result:
|
||||
continue
|
||||
# Only apply fields that are still None
|
||||
updates = {k: v for k, v in result.items() if getattr(track, k, None) is None}
|
||||
if updates:
|
||||
for k, v in updates.items():
|
||||
setattr(track, k, v)
|
||||
return track
|
||||
Reference in New Issue
Block a user