Spaces:
Build error
Build error
File size: 2,261 Bytes
f3f431f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# 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})
|