Downloading and sharing peer-to-peer music has many pain points, whether it's in finding a torrent or choosing the tracks you want in an album. The process of going from song title in your head to high-quality audio file can be automated. Popcorn Time makes the irritating parts of P2P movie downloading transparent to the user, and FunkyTime provides the same experience for music.

What it does

FunkyTime is a desktop app that allows you and your friends to send song titles to a server and have the audio files automatically downloaded to a playlist on your computer.

How I built it

The Python app queries our Node.js server, which uses the Spotify API to look up the metadata for your track. Once you confirm that it identified your track, it searches KickassTorrents for the highest seeded torrent containing your track. The server downloads the music using the libtorrent Python binding and then the music is automatically transferred to your computer.

Challenges I ran into

There were many challenges involved in communication between our Node.js/Express.js API logic and Python downloader scripts. Communication between the client and server was also a challenge in terms of controlling errors and failure cases. On the front-end side, building a usable, clean interface and learning to use a GUI and audio playback library was a challenge. In order to bypass the BitTorrent block on UC Berkeley’s network, this project required a custom-made bittorrent client to run on the server and allow choosing single tracks to download out of an album.

What's next for FunkyTime

  • Song requests through SMS via Twilio (for parties)
  • More modern and responsive interface
  • Improved torrent searching algorithms by cross-searching multiple torrent websites
Share this project: