I love listening to music, but sometimes I don't have access to a streaming service. And there's also a ton of people around the world without the infrastructure to enjoy the pleasure of listening to music online. So I decided to remedy the problem by building an application that serves up the music you want to listen to whenever you have a connection worthy of a brick phone (so, always).
What it does
Music recommendation and listening over any cellular network, without data. Sure, it's a bit primitive and the sound quality is sub-Bose, but when you've got no data left and no WiFi in sight, you can't complain when you can still listen to your favorite tunes. And for all those people who don't have access to these networks, it provides them with an unlimited amount of
How I built it
Twilio powers the phone call while Django provides the directions (in TwiML). SoundCloud and Spotify provide track and artist recommendations.
Challenges I ran into
Oh, Twilio... You're great; you're the reason I could build my project. But wouldn't it be nice if you could make asynchronous, background calls with Gather while Saying or Playing? I originally planned to have a like feature to improve the music recommendation portion, but Twilio, once given an input, would redirect and stop playing the current song. Also, SoundCloud, I feel like your resources.py file has a few bugs in it.
What I learned
ngrok is the best thing ever. No more pushing to Heroku just to test something "locally".
What's next for Phonograph
Improve the recommendation algorithm and integrate with more APIs to increase the available songs and artists. Also, adding a web portal to see a list of songs played in case you missed the name of that one song you really enjoyed.