As mega music nerds, we not only like to listen to music but show other people what music we listen to. Someone made a collage generator for, but one was lacking for spotify. And here we are.

Builds a collage of most listened user albums. We allow the user to login to spotify(requires you to have used spotify sometime), and we automatically generate a collage from their top tracks.

At first, we just tried getting the python spotify api working(spotipy) and then built the collage using Pillow(made it really easy). Next up we ported it to a Django application so we could serve it up on the web. We then took the majority of the project creation time to serve it up on heroku(our fault, we didn't know there was a handy-dandy template for deploying to heroku with django).

Trying to work with the authentication on the spotify api was a bit of a pain. We didn't have any experience with API that required authentication, so that took a while. We had to go through several tutorials and stack overflow conversations to find what we needed. Another challenge we had was deploying our application to heroku. This honestly took like 2-3 hours and was the hardest part of our project given we didn't have any experience doing that yet. That was really just a matter of checking the debug logs and fixing what we thought needed to be fixed and retrying over and over again. I think we got it to work around v3.13 :}

The website itself is super easy to use and looks great and works relatively quickly. The image generated looks sharp and is immediately downloadable(not on mobile, yet).

Sometimes the app idea itself is the easiest part of the development process. Authentication API's are not exactly easy to use. Deploying to the web is pretty freaking difficult. Using Pillow for image processing is as easy as can be.

We are adding options for 3x3, 5x5, short-term, med-term, long-term collages. Maybe adding a chart feature which logs all album-artist labels and displays a top 25 list of all user-generated collages.

Built With

Share this project: