Spotify Stats

Utilizing several AWS services, I developed an application that showcases my top tracks and artists. This application seamlessly logs my streaming data at 30-minute intervals through the Spotify API. This data is logged to a CSV file stored in an S3 bucket.

Every day at 12:01 AM, two Lambda functions are triggered via EventBridge that execute two distinct algorithms for calculating and updating the top tracks and artists.

I employed two DynamoDB tables for tracks and artists: one for storing the top tracks/artists based on the previous day's data and another for holding the top tracks/artists derived from the current day's data. The first table is a snapshot of the top tracks/artists from the prior day, while the second table houses the newly calculated top tracks/artists using today's data. By employing two tables, I can effectively track changes in rank or stream counts from one day to the next since the algorithms execute on a daily basis.

I added green arrows to highlight when one track or artist surpasses another in rank, which is calculated by streams. The data for both top tracks and artists is retrieved from the DynamoDB tables that I discussed above. In addition to this, I added the change in streams from the prior day to each track/artist if applicable.

My top tracks and artists are on my website and are updated daily.

Spotify Wrapped

I recreated Spotify Wrapped using my lifetime Spotify streaming history. I wanted to see how many times I had streamed several songs and then had the idea to recreate Spotify Wrapped.

Spotify Recommendation Engine

Using over 1000 of my top streamed songs from the Spotify Wrapped project, I used a decision tree classification model to predict new songs based on my top song's musical attributes. I used the Spotify API to create and publish a new playlist entirely created from my model.

Spotify Grid

Using data from the Spotify Wrapped project, I knew my top songs, albums, and songs. With this data, I created an image grid of my top album covers and artist images with web scraping and the Spotify API.

NBA Efficiency

Using the NBA's offensive and defensive team ratings, I plotted each team by their offensive and defensive rating. I normalized each team's offensive rating and defensive rating and used their logo to place them on a net rating chart.