Have you ever been at a party/event and really wanted to hear a specific song? Well, with Decentralized DJ, anyone can now can hear their favorite music!
What it does
Decentralized DJ allows anyone with a cellphone to add their favorite music to the DJ's queue. The user may also adjust the volume of the speaker, toggle shuffle on/off, play/pause the music, and even ask what song is playing by sending a quick text message.
How we built it
We used the following: Python on Flask to write the scripts that call the following APIs. Bose SoundTouch control APIs to control the speaker. Twilio phone number and APIs to communicate via text with the speaker. Spotify APIs to integrate Spotify with the Bose speaker, allowing for partygoers to add songs to a playlist. Digital Ocean to create a CentOS 7 server to host the app.
Challenges we ran into
We initially struggled to use Google’s cloud platform to run a Linux instance so we switched to Digital Ocean and were able to solve this problem. Connecting the Bose speaker to the hackathon network proved to be challenging and we eventually opted for creating a mobile hotspot to connect it to.
Our team members working on the Spotify integration used a different version of Python than the team members working on the Bose and Twilio integration, we were able to refactor the code to run in Python 2.7.
Accomplishments that we're proud of
We we're proud that we were able to successfully interface with the speaker via SMS and fully integrate this functionality with Spotify.
What we learned
Through this project, we learned how to and how not to use the Bose SoundTouch control APIs to communicate with the speaker. We learned about the challenges of integrating several different modules that were built using slightly different tools.
What's next for Decentralized DJ
In the future, we would like to continue to add more control functionality (other playback features). We would also like to integrate a rating system for the songs, so that people can let the DJ know what kind of music they are enjoying. We would also like to explore the zone controls from the BOSE api, and see how we can utilize those to improve our app.