implemented abstract class
This commit is contained in:
parent
68031b9cdd
commit
6b496971c9
@ -53,7 +53,67 @@ class Page:
|
|||||||
if it is true it fetches only the most important information (only one level)
|
if it is true it fetches only the most important information (only one level)
|
||||||
if an Artist is passed in, it fetches only the discography of the artist, and not the
|
if an Artist is passed in, it fetches only the discography of the artist, and not the
|
||||||
tracklist of every album of the artist.
|
tracklist of every album of the artist.
|
||||||
:return detailed_music_object:
|
:return detailed_music_object: IT MODIFIES THE INPUT OBJ
|
||||||
"""
|
"""
|
||||||
|
|
||||||
raise NotImplementedError
|
if type(music_object) == Song:
|
||||||
|
return cls.fetch_song_details(music_object, simple=simple)
|
||||||
|
|
||||||
|
if type(music_object) == Album:
|
||||||
|
return cls.fetch_album_details(music_object, simple=simple)
|
||||||
|
|
||||||
|
if type(music_object) == Artist:
|
||||||
|
return cls.fetch_artist_details(music_object, simple=simple)
|
||||||
|
|
||||||
|
raise NotImplementedError(f"MusicObject {type(music_object)} has not been implemented yet")
|
||||||
|
|
||||||
|
def fetch_song_details(cls, song: Song, simple: bool = False) -> Song:
|
||||||
|
"""
|
||||||
|
for a general description check cls.fetch_details
|
||||||
|
|
||||||
|
:param song: song without much data
|
||||||
|
:param simple:
|
||||||
|
when True it only fetches the artist and the album, and the attributes of those,
|
||||||
|
who can be gotten with one api request
|
||||||
|
when False it fetches everything including, but not limited to:
|
||||||
|
- Lyrics
|
||||||
|
- Album + Tracklist (for tracksort)
|
||||||
|
|
||||||
|
:return detailed_song: it modifies the input song
|
||||||
|
"""
|
||||||
|
|
||||||
|
raise NotImplementedError()
|
||||||
|
|
||||||
|
def fetch_album_details(cls, album: Album, simple: bool = False) -> Album:
|
||||||
|
"""
|
||||||
|
for a general description check cls.fetch_details
|
||||||
|
|
||||||
|
:param album: album without much data
|
||||||
|
:param simple:
|
||||||
|
when True it only fetches the artist and the tracklist, and the attributes of those,
|
||||||
|
which can be gotten with one api request
|
||||||
|
when False it fetches everything including, but not limited to:
|
||||||
|
- Lyrics of every song
|
||||||
|
- Artist, Album, Tracklist
|
||||||
|
- every attribute of those
|
||||||
|
|
||||||
|
:return detailed_artist: it modifies the input artist
|
||||||
|
"""
|
||||||
|
|
||||||
|
raise NotImplementedError()
|
||||||
|
|
||||||
|
def fetch_artist_details(cls, artist: Artist, simple: bool = False) -> Artist:
|
||||||
|
"""
|
||||||
|
for a general description check cls.fetch_details
|
||||||
|
|
||||||
|
:param artist: artist without much data
|
||||||
|
:param simple:
|
||||||
|
when True it only fetches the discographie, meaning every album, but not every tracklist
|
||||||
|
when False it fetches everything including, but not limited to:
|
||||||
|
- the whole discography
|
||||||
|
- the tracklist of every album in the discography
|
||||||
|
|
||||||
|
:return detailed_artist: it modifies the input artist
|
||||||
|
"""
|
||||||
|
|
||||||
|
raise NotImplementedError()
|
||||||
|
Loading…
Reference in New Issue
Block a user