Your musical pokedex, Plex for music.
Add songs from youtube videos or youtube playlist to your library,
or import them from your local files.
Tags are automatically imported and searchable,
sync it on your phone to enjoy free offline music, managed from your home server.
Don't want to bother making playlists?
Let Musidex handle it for you, a neural network analyses your musics and checks for similarity
to provide semantic autoplaying.
Choose a starting point and let it choose the next song for you!
Try the demo at:
Please don't mess it up. :)
- Music streaming
- Youtube import
- Web front
- Neural embedding based auto play
- Text search
- CI
- Multiple accounts
- Android App
- Docker build
- iOS App
- Local download for apps
- Browser extension to add YT videos to library directly from youtube
- Tag filtering
- Playlists through tags/Tag editor
- Basic authentication
- CD
- MP3 import
- Ogg import
- FLAC import
# Build the image, can take up to 20 minutes depending on your CPU and your network bandwidth
docker build -t musidex .
# Run the container (replace /path/to/musidex with absolute path to Musidex, like $HOME/musidex)
docker run -d -p 80:3200 -v /path/to/musidex/storage:/storage -t musidex
All musidex data (musics, thumbnails, db) ends up in the storage
directory.
Only GNU/Linux distros are supported at the moment.
You can run the prepare.sh
script after cloning to run all of the following commands,
or run them yourself with an explanation.
Youtube-dl to add music from youtube URLs.
python3 -m pip install -U yt-dlp
Ffmpeg so that the downloaded audio files are converted to more friendly formats. (as advised by youtube-dl).
Npm for the frontend.
Sqlite for the db.
sudo apt install ffmpeg npm libsqlite3-dev python3 python-is-python3
The rust compiler for the backend.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source "$HOME"/.cargo/env
The repo itself.
git clone https://github.com/Uriopass/Musidex
cd Musidex
# Prepare the web dependencies
(cd musidex-web && npm install)
# Just run the start script
./start.sh
First install the dependencies as listed above, then
# Start the daemon, will listen on localhost:3200
cargo run --manifest-path=musidex-daemon/Cargo.toml
# And in another terminal... start the web client
cd musidex-web
npm start # will start on localhost:3000
# and proxy api requests to the daemon
Then if you want to work on the daemon,
simply run cargo run
again after doing your modifications.
If you want to work on the web client, the modifications will be hot reloaded.
All musidex data ends up in the storage
directory.