As a part of the curriculum for the Programming Studio course I took in the Fall of 2020, we were required to develop an application over a 6-week period that demonstrated a solution to a novel problem using several different APIs. My team of 5 members decided to create an application that, given a phrase in the English language, would generate a playlist based on the content of that phrase.
(Pictured above is an example use of Apollo with a test playlist name and phrase.)
To develop Apollo we used Spotify's Web API to get songs, Twinword's Sentiment Analysis API to generate custom playlist images and Google's Text-to-Speech API for accessibility. The app itself was built on a Nodejs runtime environment.
How it works is as follows: the user types in a name for their playlist and then enters a phrase. Upon hitting the generate button, the phrase would be parsed, and each word in the phrase would be represented as one song in the playlist. The sentiment for the phrase as a whole would determine the image selected for the playlist. Whether it is positive, negative, or neutral all provides a different image. Once the playlist is generated, a user can save the playlist to their Spotify account and play the songs within the application. The user also can share the playlist via several different options.
Being on a 5-person team, my contributions were mostly focused on sentiment analysis, user actions, and hosting. Analyzing the sentiment of the phrase was as simple as passing the phrase to Twinword's API which sent back a sentiment score indicating if the phrase had a positive, negative, or neutral sentiment. Upon receiving the score, the playlist would be assigned an image that attempted to reflect the chosen sentiment. My contributions for user actions were focused on developing the process for which a user could share their generated playlist within Apollo. This was accomplished by generating an Apollo link that would fetch the generated playlist from Spotify and display it in Apollo. I was finally responsible for getting the application hosted, in which I used Heroku to host it for free.
Most likely the application is not currently live, but if it is it can be found here.