Are you ever at a party and you want the DJ to know what song to play next? Does the song currently playing suck? Text in music recommendations and some cool commands. Now, everyone's a DJ!
What it does
Anyone can queue up their favorite songs with a simple text message. The more a song is requested, the sooner it plays! Users can also skip songs and change the volume of the speaker. What commands work? Volume Up (insert number) Volume Down (insert number) Max Volume Mute Skip Song name (for queueing) Up next (shows you up to the next five songs in the queue) Current song (tells you the current song that is playing)
How we built it
We used the Twilio API to parse a text message sent to our Twilio phone number. We then read the song name or command sent by the user and, using the Spotify API and the Bose soundtouch API, we control the speaker. Songs are queued up based on how many times they were requested, as well as the order they were requested, and commands are processed immediately. In other words, the more a song is requested to be queued, the higher it gets pushed up the queue.
Challenges we ran into
The Twilio API had documentation for sending a song to the Spotify API and a Twilio number calls you and plays that song. The problem was, the Spotify API was recently updated and there was not much information available online to implement a get request to Spotify, especially in Python. It took hours of research to finally get this to work. Also, the default library Priority Queue did not sort the song priorties as we wanted it to.
Accomplishments that we're proud of
Overall, we are proud that we were able to create a fun and interactive way of requesting songs at a party or in a car ride with friends. Moreover, this is a multiplatform solution available now that people can use without having to worry about taking up storage on their phone! No more passing the Aux, just send a text!
The next steps would be to create a web interface that users can connect to and do the same commands and more. The next steps would be when someone texts or wants to skip or change the volume, it will poll all the users to see if 30-50% of the people want to do this. Also, rather than having one Bose speaker and one session to connect to, multiple parties all over the world can create their own sessions with their own Bose speakers. m