Lightweight music-only media server
Project description
welcome to qwave!!
"
what is this?
qWave is a locally hosted media server designed for music! that is to say, it's like spotify or any other streaming service, ran on your own network under your control with your media files. That way you can stream your personal media files from anywhere instead of just on one device!
[!IMPORTANT] this is just a demo!! it's not my first priority, but know that this software will have lots of potentially breaking changes over the future. You can directly contact me via @qwikster_ on discord if you've decided to use this to manage your library and would like help migrating as this project continues to improve! and make sure to revisit this (or add an issue!) if the project doesn't meet your expectations yet :D
you can always make your own frontend if this isn't to your liking!
installation
qWave is designed to run on Linux only. I recommend you run it on a dedicated server machine (as simple as a rpi), but it will work just fine running in the background on your desktop machine, as long as you're okay with it being the dependency for all your devices.
- dependencies: python, a pypi manager, and ffmpeg! others will be handled by python. for development, you'll also need
npm. - Use either
pipxor your desired tool to download qwave from pypi:pipx install qWave
[!NOTE] You can also use qWave by directly installing it as shown below, but you'll have to manually set up a script to start it because of its unmanaged dependencies.
- set up your server:
qwave_init, and follow the directions!
[!WARNING] if you are installing with an account other than root, pick the user install! sudo can mess with permissions. i recommend leaving the defaults otherwise.
- run the server with
qwaveand visit0.0.0.0:4269/appto start uploading files!
some useful information:
- once you've uploaded your file, it will be transcoded to .opus and the original deleted - keep the old file around if it's special and you don't care about storage space!
setup for development
- first:
git clone https://github.com/qwikster/qwave.git && cd qwave. - you'll need to create a venv:
python3 -m venv .venvthensource .venv/bin/activate - install qwave as a package locally:
pip install -e ./qwave-server - if you don't already have a local install, follow the installation instructions from after installation.
- start the backend:
qwave - start the frontend as a development server:
npm run devand follow that ip - frontend changes will update in real time! run
npm run buildto move to the install for local use
[!TIP] you can download openapi.json directly from the server to use an API software like Yaak or Postman!
- backend changes will immediately take effect after you restart the software
- PRs are welcome!! more detailed documentation will come soon!
things i want to add before a full release:
- android client
- linux client (CLI...?)
- more intuitive web frontend
- finish the visualizer thingy
- proper playlist support
- move queues to server side
- move import flow to server side
- favourites system
- content recommendations
- handle albums and singles better
- more file organization
- way better import flow
- content id, auto imports
- better security
- per-account songs and features
- editing for frontend
- more useful endpoints
- branding options
- more documentation
- last.fm and discord integration
- anything you guys suggest
- promote to the public!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file qwave-0.0.2.tar.gz.
File metadata
- Download URL: qwave-0.0.2.tar.gz
- Upload date:
- Size: 2.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
782a391efb9aa2391ef63bc96eb4ddab09a7ea715e9b2509b989dd34c4259586
|
|
| MD5 |
3df124253f517731188f79d15d8f6e24
|
|
| BLAKE2b-256 |
e1424ebe9f772a9aff3ab48016687c11b7f31ed7a9d2e7959315f2a39f9dad39
|
File details
Details for the file qwave-0.0.2-py3-none-any.whl.
File metadata
- Download URL: qwave-0.0.2-py3-none-any.whl
- Upload date:
- Size: 2.8 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14a7f2255816c6c1f04ae624ae1c2ea8a75a2ff795fb2f9fd9bcdde51edf1b9c
|
|
| MD5 |
252e18ef3b27e0521b3cc9d5661e3e33
|
|
| BLAKE2b-256 |
1c3e67730ff1542c7f6e75f699ee50cc72b514c0160c8c0f66f1762671cfddb4
|