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
+29
View File
@@ -0,0 +1,29 @@
from typing import Optional, Union
from app.chain import ChainBase
from app.core.context import MusicInfo, MusicLyrics
from app.core.meta import MetaMusic
class LrclibChain(ChainBase):
"""LRCLIB 音乐歌词来源链。"""
def get_music_lyrics(
self,
music: Union[MetaMusic, MusicInfo],
) -> Optional[MusicLyrics]:
"""按单曲元数据获取标准化歌词。"""
result = self.run_module("music_lyrics", music=music)
if isinstance(result, MusicLyrics):
return result
return MusicLyrics.from_dict(result) if isinstance(result, dict) else None
async def async_get_music_lyrics(
self,
music: Union[MetaMusic, MusicInfo],
) -> Optional[MusicLyrics]:
"""异步按单曲元数据获取标准化歌词。"""
result = await self.async_run_module("music_lyrics", music=music)
if isinstance(result, MusicLyrics):
return result
return MusicLyrics.from_dict(result) if isinstance(result, dict) else None