Because of the get_full_info parameter in genius.search_song, we're not able to add all attributes to the Song object (e.g. album). Although they will be available from Song.to_dict(), it'd be nice to be able to access them as attributes. There are two ways to deal with this properly:
Removing get_full_info altogether and update Song to have all fields.
advantages: Reduced complexity. No need to create and maintain two classes. Closer to the API if we discard the keys from genius.search_all and only stick to what genius.song gives us.
disadvantages: extra request to get the song info using genius.song.
Breaking Song into two types: SearchSong and FullSong.
advantages: no extra request needed to get full song info if get_full_info=False.
disadvantages: Creating and maintaining two classes. SearchSong will have attributes from the Public/Web API.
I haven't taken a close look at search_album and search_artist, but the above could probably be said about those too.
Because of the
get_full_info
parameter ingenius.search_song
, we're not able to add all attributes to theSong
object (e.g. album). Although they will be available fromSong.to_dict()
, it'd be nice to be able to access them as attributes. There are two ways to deal with this properly:get_full_info
altogether and updateSong
to have all fields.genius.search_all
and only stick to whatgenius.song
gives us.genius.song
.Song
into two types:SearchSong
andFullSong
.get_full_info=False
.SearchSong
will have attributes from the Public/Web API.I haven't taken a close look at
search_album
andsearch_artist
, but the above could probably be said about those too.