This repository aimed to create an easy-to-use web interface for the spotify-ripper. Archiving this goal I had the following point in the back of my head:
- Parallel downloads of multiple users
So I decided on the following project structure:
spotify-ripper-docker:
- This is just a dockerized version of the spotify-ripper, including some adjustments to better handle the standard data streams and bring them to the web interface.
spotify-ripper-web-backend:
- This is a node.js application which communicates with the frontend via websockets.
- It creates and starts new containers and forwards the standard data streams to the UI via Websocket.
spotify-ripper-web-frontend:
- This is a vue.js spa, communicating with the node.js backend; Here you can also finally download the music.
- The project actually consists of three projects, which would probably have been much more intelligent to separate.
- No TDD; not even the vue.js project
- Implemented the spotify-ripper as a zip file; this would also be a separate project...
- Not as much use of environment vars as I should have; there are some things hardcoded, like the websocket port
- Not the worst and ugliest code; but alsonot the cleanest one..
The installation should be quite simple by dockerization.
- Installing docker and docker-compose
- rename
.env.example
to.env
and change the path according tr environment. - add your
spotify_appkey.key
to thespotify-ripper-docker
folder - (adjust
docker-compose.yml
to mount your docker.sock)
To do this you can simply run docker-compose up --build
(Depending on how you configured Docker, sudo may be required)
FYI: This whole repo is optimized and tested on Ubuntu 18.04.
If all went well, it should look something like this: (remember that port 3000 is in the container and mapped outside by your adjustments in the docker-compose.yml
)
Then you should be able to access it by http://localhost:<your_port>/web/