from dataclasses import dataclass from typing import Union, Optional @dataclass class LyricsResult: """ Class for returned Lyrics Results Attributes: artist (str): returned artist song (str): returned song src (str): source result was fetched from lyrics (Union[str, list]): str if plain lyrics, list for lrc time (float): time taken to retrieve lyrics from source """ artist: str song: str src: str lyrics: Union[str, list] confidence: int time: float = 0.00 @dataclass class LRCLibResult: """ Class for returned Lyrics Results Attributes: id (int): returned id artist (str): returned artist song (str): returned song plainLyrics (str): returned (plain) lyrics syncedLyrics (str): returned synchronizedLyrics """ id: int artist: str song: str plainLyrics: Optional[str] = None syncedLyrics: Optional[str] = None """ Generic """ class InvalidLyricSearchResponseException(Exception): pass """ Genius """ class InvalidGeniusResponseException(InvalidLyricSearchResponseException): pass """ LRCLib """ class InvalidLRCLibResponseException(InvalidLyricSearchResponseException): pass