refactor(media): unify media identity and chain responsibilities

This commit is contained in:
jxxghp
2026-08-12 18:31:09 +08:00
parent cbb969e0ff
commit ca32922a7f
155 changed files with 8371 additions and 4526 deletions
+9 -7
View File
@@ -9,7 +9,6 @@ from pydantic import BaseModel, Field
from app.agent.tools.base import MoviePilotTool
from app.agent.tools.tags import ToolTag
from app.chain.media import MediaChain
from app.chain.music import MusicChain
from app.log import logger
from app.schemas.types import (
MUSIC_ENTITY_ALBUM,
@@ -125,9 +124,11 @@ class QueryMediaDetailTool(MoviePilotTool):
"message": "查询音乐详情必须同时提供 media_source 和 media_id",
}, ensure_ascii=False)
music_chain = MusicChain()
media_chain = MediaChain()
if normalized_music_type == MUSIC_ENTITY_ALBUM:
album_info = await music_chain.async_album(media_source, media_id)
album_info = await media_chain.async_get_music_album(
media_source, media_id
)
if not album_info:
return json.dumps({
"success": False,
@@ -140,7 +141,9 @@ class QueryMediaDetailTool(MoviePilotTool):
)
if normalized_music_type == MUSIC_ENTITY_ARTIST:
artist_info = await music_chain.async_artist(media_source, media_id)
artist_info = await media_chain.async_get_music_artist(
media_source, media_id
)
if not artist_info:
return json.dumps({
"success": False,
@@ -153,7 +156,7 @@ class QueryMediaDetailTool(MoviePilotTool):
if include_artist_albums:
pending.append((
"albums",
music_chain.async_artist_albums(
media_chain.async_get_music_artist_albums(
media_source=media_source,
media_id=media_id,
page=normalized_page,
@@ -164,7 +167,7 @@ class QueryMediaDetailTool(MoviePilotTool):
if include_related_artists:
pending.append((
"related_artists",
music_chain.async_artist_related(
media_chain.async_get_music_artist_related(
media_source=media_source,
media_id=media_id,
count=normalized_count,
@@ -181,7 +184,6 @@ class QueryMediaDetailTool(MoviePilotTool):
]
return json.dumps(result, ensure_ascii=False, indent=2)
media_chain = MediaChain()
mediainfo = await media_chain.async_recognize_media(
media_source=media_source,
media_id=media_id,