Spaces:
Build error
Build error
| # THIS FILE IS RESPONSABLE FOR THE CONSTRUCTION OF MANY OBJECTS | |
| from . import classes | |
| def get_available_markets(data): | |
| try: | |
| return data['available_markets'] | |
| except KeyError: | |
| return None | |
| # BASE ARGUMENTS FOR ALL CLASSES | |
| def base_arguments(data): | |
| arguments = dict( | |
| data = data, | |
| type = data['type'], | |
| name = data['name'], | |
| url = data['external_urls']['spotify'], | |
| id = data['id'] | |
| ) | |
| return arguments | |
| # BASE ARGUMENTS FOR TRACK-LIKE CLASSES | |
| def track_base_arguments(data): | |
| arguments = dict( | |
| explicit = data['explicit'], | |
| duration_ms = data['duration_ms'] | |
| ) | |
| return arguments | |
| def artist(data): | |
| return classes.Artist(**base_arguments(data)) | |
| def track(data): | |
| base = base_arguments(data) | |
| track_base = track_base_arguments(data) | |
| arguments = dict( | |
| preview = data['preview_url'], | |
| artists = [artist(artist_data) for artist_data in data['artists']], | |
| album = album(data['album']), | |
| available_markets = get_available_markets(data), | |
| disc_number = data['disc_number'], | |
| popularity = data['popularity'] | |
| ) | |
| return classes.Track(**{**base, **track_base, **arguments}) | |
| def album(data): | |
| base = base_arguments(data) | |
| arguments = dict( | |
| images = [classes.AlbumCover(image['width'], image['height'], image['url']) for image in data['images']], | |
| artists = [artist(artist_data) for artist_data in data['artists']], | |
| available_markets = get_available_markets(data), | |
| release_date = data['release_date'], | |
| total_tracks = data['total_tracks'] | |
| ) | |
| return classes.Album(**{**base, **arguments}) | |
| def episode(data): | |
| base = base_arguments(data) | |
| track_base = track_base_arguments(data) | |
| arguments = dict( | |
| preview = data['audio_preview_url'], | |
| description = data['description'], | |
| html_description = data['html_description'], | |
| images = data['images'], | |
| language = data['language'], | |
| languages = data['languages'], | |
| release_date = data['release_date'] | |
| ) | |
| return classes.Episode(**{**base, **track_base, **arguments}) | |