This project is based on a Spotify dataset available on Kaggle.com
Data from these sources were used to construct tables in a SQLite database (v1.0) and DynamoDB tables(v2.0). Using the Python libraries SQLAlchemy, Boto3, and Flask, data can be called from the SQLite database or DynamoDB tables via the API at https://nxvasw6as4.execute-api.us-west-1.amazonaws.com/dev/ using the routes below.
Data by Year - /api/v1.0/data_by_year
Averaged attributes for tracks by year. 1920-2021 (102 rows of data)
Data by Top Genres - /api/v1.0/top_51_genres
Averaged attributes for genres. 51 genres of data (51 rows)
Data by Artist - /api/v1.0/data_by_artist_clean/<artist>
Artists data can be requested from the api by adding an artist name to the end of the API url.
Mind your spelling, capitalization, punctuation, and special characters!
28,680 Artists (28,680 rows of data, one artist returned per API request).
Here are some of our favorites as examples:
Tracks with ML Cluster Assignments, Artists, and Genre lists - /api/v2.0/Music_ML_tracks/<track>
Returns the specified track name with artists, genres, and ML classification group number for each combination of the track/artist.
Mind your spelling, capitalization, punctuation, and special characters!
408,953 Tracks (408,953 items in DynamoDB JSON table, one song returned per API request).
Many tracks have similar names. Here's an example that brings different results:
Sets of Ten Tracks by Assignments
Fixed: /api/v2.1/Fixed_Song_Assignments/<Assignments>
Random: /api/v2.1/Random_Song_Assignments/<Assignments>
Returns a set of ten tracks with artist, song id, and ML assignment cluster. "Fixed" returns a fixed set of tracks for each assignment number; "Random" returns a random set of 10 tracks and related data from the specified cluster number.
This project uses the statistics.js JavaScript library to calculate the correlation coefficients on the Year vs Attribute and Genre Scatter Plot pages.
This is a student project; we are not collecting any data. Spotify widgets do collect user data. See spotify terms.