Files
MoviePilot/app/chain/lrclib.py

30 lines
1.0 KiB
Python

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