# (XMPD) Xor64 Music Player/Downloader An open source music downloader AND player (soon (TM)) ## Design Written in rust, it *tries* to be fast, reliable, and actually useful, as it doesnt stream the music from a server where it could be deleted and lost forever. It uses [egui](https://www.egui.rs/) for a crossplatform frontend that makes it possible to run almost anywhere. The music is downloaded via [ytdlp](#Dependencies) and [spotdl](#Dependencies), and converted to your favorite format via [ffmpeg](#Dependencies) ## Offline usage Your whole music library is downloaded to your music folder (unless its being ran in standalone mode). Saved in your selected format. All of the info required to download your songs is stored in 1 file (!). So all you need to backup all of your music is just 1 relatively small file AND you get the added benefit of easily moving your music between devices with just 1 manifest file, 1 executable (and 3 [dependencies](#dependencies)). Just press `download all` and see as all of your playlists appear in your hard drive, powered by Open Source software. ## Dependencies [ffmpeg](https://ffmpeg.org/): To convert your music files to your desired format. [spotdl](https://github.com/spotDL/spotify-downloader): To download music from spotify, because ofcourse spotify had to be the special child [ytdlp](https://github.com/yt-dlp/yt-dlp): To download music from every single other source The rust dependencies can be found in the [Cargo.toml](/Cargo.toml) file. ## Installation Just run `xmpd-setup-{version}.sh` for GNU/Linux or `xmpd-setup-{version}.ps1` for Windows! ## Compilation Building the amazing xmpd executable is really simple: - make sure rust is installed by running `cargo --help` - clone the git repo by running `git clone https://git.mcorangehq.xyz/XOR64/xmpd.git` in your desired directory - run `cargo build --release` - The executable should be in `./target/release/xmpd` NOTE: If you run the executable from the terminal it will start downloading all of your songs, to open the gui run `xmpd gui`, for more info run `xmpd --help` ## Contributing Fork and clone your repo, you will probably want to use ssh for cloning. After adding your features or bugfixes push the changes to your fork. After making sure xmpd works fine, and you havent found any bugs, make a pull request on `https://git.mcorangehq.xyz/XOR64/xmpd/pulls` If we approve your changes it will be pushed to the main branch, and added to the contributors! Current todos are stored in [DEV.md](/DEV.md) ## Licensing See [LICENSE.md](/LICENSE.md) for the licensing terms