feat(music): 支持多源识别与元数据刮削

This commit is contained in:
jxxghp
2026-08-11 23:33:14 +08:00
parent 1197ece12b
commit 3f1b0cdb05
38 changed files with 3764 additions and 284 deletions

View File

@@ -134,10 +134,7 @@ class RecognizeMediaTool(MoviePilotTool):
metainfo.artists = [artist]
if album:
metainfo.album = album
mediainfo = await music_chain.async_recognize_media(
meta=metainfo,
source="musicbrainz",
)
mediainfo = await MediaChain().async_recognize_by_meta(metainfo)
if mediainfo:
context = Context(meta_info=metainfo, media_info=mediainfo)
return self._format_context_result(context, "音乐标题")

View File

@@ -43,7 +43,11 @@ class ScrapeMetadataInput(BaseModel):
)
media_source: Optional[str] = Field(
None,
description="Music metadata source, normally musicbrainz. Must be paired with media_id",
description=(
"Music metadata source: musicbrainz, theaudiodb, or doubanmusic. "
"When omitted, automatic music recognition compares all sources. "
"Must be paired with media_id when an ID is supplied"
),
)
media_id: Optional[str] = Field(
None,
@@ -209,6 +213,7 @@ class ScrapeMetadataTool(MoviePilotTool):
fileitem=fileitem,
mediainfo=mediainfo,
overwrite=bool(overwrite),
source=media_source,
)
result = {
"success": success,