Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
58 lines (45 sloc) 1.71 KB
from datetime import datetime
from typing import Any, Dict
class LyricsOrigin:
def __init__(self, url: str, source_name: str, source_url: str, *, query: str = None):
self.url = url
self.source_name = source_name
self.source_url = source_url
self.query = query
def __str__(self) -> str:
return self.source_name
@classmethod
def from_dict(cls, data: Dict[str, Any]) -> "LyricsOrigin":
return cls(**data)
def to_dict(self) -> Dict[str, Any]:
return {
"query": self.query,
"url": self.url,
"source_name": self.source_name,
"source_url": self.source_url
}
class Lyrics:
def __init__(self, title: str, lyrics: str, artist: str = None, release_date: datetime = None, *, origin: LyricsOrigin = None):
self.title = title
self.artist = artist
self.release_date = release_date
self.lyrics = lyrics
self.origin = origin
def __str__(self) -> str:
return "<Lyrics for \"{}\" from {}>".format(self.title, self.origin)
@classmethod
def from_dict(cls, data: Dict[str, Any]):
data["origin"] = LyricsOrigin.from_dict(data["origin"])
if data["release_date"]:
data["release_date"] = datetime.fromtimestamp(data["release_date"])
return cls(**data)
def set_origin(self, origin: LyricsOrigin):
self.origin = origin
def to_dict(self) -> Dict[str, Any]:
return {
"title": self.title,
"artist": self.artist,
"release_date": self.release_date.timestamp() if self.release_date else None,
"lyrics": self.lyrics,
"origin": self.origin.to_dict()
}
You can’t perform that action at this time.