Web-based music player for the cloud Play music from YouTube, Dropbox, etc.
OTHER License
Open source, web-based music player for the cloud. Also on: Facebook • Twitter • Hacker News • Lifehacker
CloudTunes provides a unified interface for music stored in the cloud (YouTube, Dropbox, etc.) and integrates with Last.fm, Facebook, and Musicbrainz for metadata, discovery, and social experience. It is similar to services like Spotify, except instead of local tracks and the fixed Spotify catalog, CloudTunes uses your files stored in Dropbox and music videos on YouTube.
CloudTunes is a side project of @jkbrzt who is a bit of a music nerd and who likes to build stuff. In 2012 he decided to create an iTunes-like webapp to make music stored all over the cloud easily discoverable and accessible: hence CloudTunes.
Another one of the goals was to experiment with a bunch of new technologies. Later, this side-project was largely abandoned due to other more pressing projects. In the autumn of 2014, CloudTunes was open-sourced "as is" (i.e. alpha quality, lack of polish, tests and docs).
The architecture consists of a server and client component. Those two are decoupled and communicate via a JSON REST API and a WebSocket connection:
cloudtunes-server
Web and WebSocket server, worker processes. Written in Python, uses Tornado, Celery, Mongo DB, MongoEngine, Redis.
cloudtunes-webapp
Single-page app. Written in CoffeeScript and Sass, uses Brunch, Backbone.js, SocketIO, Handlebars, Compass, SoundManager.
Find and stream entire albums from YouTube.
Any album or track you like can be added to your collection or any of your playlists.
Access and stream music that you already have in Dropbox from any computer. Fast indexing and realtime updates.
Organise your collection with playlists. Drag and drop tracks and albums on a playlist to add them. You can create playlists containing both tracks from your Dropbox and music videos from YouTube.
Scrobble and play your personalised recommendations.
$ git clone https://github.com/jkbrzt/cloudtunes.git
$ cd cloudtunes
cloudtunes-server/cloudtunes/settings/local.example.py
as a template and fill in the None
's:$ cp cloudtunes-server/cloudtunes/settings/local.example.py cloudtunes-server/cloudtunes/settings/local.py
$ vim cloudtunes-server/cloudtunes/settings/local.py
Continue by following the instructions in:
The easiest way to run CloudTunes is in an isolated
Docker container. Like this,
the only thing you need to install directly on your system is Docker
(or boot2docker
) itself.
Please follow the
installation instructions
on how to install Docker (or boot2docker
) on your system. Then follow the
steps bellow:
Dockerfile
cloudtunes-img
. This takes a long time the first time$ docker build --tag=cloudtunes-img .
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
cloudtunes-img latest e1bcb48ab148 About an hour ago 995.1 MB
cloudtunes
from the cloudtunes-img
$ docker run --name=cloudtunes --publish=8000:8000 --detach --tty cloudtunes-img
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
564cc245e6dd cloudtunes-img:latest "supervisord --nodae 52 minutes ago Up 2 minutes 0.0.0.0:8000->8000/tcp cloudtunes
8000
.http://localhost:8000/
boot2docker
, then run $ boot2docker ip
http://<boot2docker IP>:8000/
To stop the app (Docker container), run:
$ docker stop cloudtunes
To start it again, run:
$ docker start cloudtunes
All user data (stored by MongoDB and Redis under /data
) will persist until the container has been deleted.
After you have made any changes to the codebase or configuration and want them to be applied to the container, or if you simply wish to start from scratch again, run the following commands to delete the existing container (this will also delete all user data in it):
$ docker stop cloudtunes
$ docker rm cloudtunes
And then start again from step 1. above (it should go much faster this time).
BSD. See LICENSE for more details.
Jakub Roztočil