We decided to create SpotiNet because we wanted a new, visual representation of our music tastes. We wanted the information to be easy to digest and use. We settled on a network graph as they beautifully illustrate the intricate connections through various things. Spotify was the API of choice as it offered us the most flexibility and allowed us to draw various connections based on user data.
What it does
SpotiNet generates a network graph based on the user's Spotify library to display a dynamic and interactive interface to discover new music and view current trends. The user sits at the center of the diagram, with nodes branching out connecting their top genres, artists, and artist recommendations based on their top artists.
How we built it
SpotiNet is built in Python, with a Flask application at its base, while incorporating HTML and CSS for front end purposes. Using NetworkX and Pandas, we created a network graph between the user, genres, and artists. A PlotLy Dash application was integrated with Flask to display SpotiNet’s interactive network graph.
Challenges we ran into
A couple of challenges we ran into while developing SpotiNet are: Integrating Dash with Flask Parsing the information from Spotify API calls into a useful format Hosting the web app on Heroku
Accomplishments that we're proud of
Over the past 36 hours, we’ve created a functional web app, which generates complex network graphs based on the user’s music history and tastes. Additionally, we created a working website with HTML, CSS, and Dash so that the user can easily find new artists using our graphs.
What we learned
We gained experience working with Spotify’s API and various libraries, including PlotLy and Flask for the first time.
What's next for SpotiNet
The next steps for SpotiNet are as follows: Optimize Graph generation (Increase Speed) Improve the front-end and create a cleaner, more professional-looking user interface Fix text overlapping within the graph Set node spacing dynamically based on viewport size Retrieve more artist info for popup (e.g. top albums, songs)