Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ivabus/lonelyradio
Lightweight Music Streamer
https://github.com/ivabus/lonelyradio
music music-player
Last synced: about 10 hours ago
JSON representation
Lightweight Music Streamer
- Host: GitHub
- URL: https://github.com/ivabus/lonelyradio
- Owner: ivabus
- License: mit
- Created: 2024-01-28T17:02:37.000Z (12 months ago)
- Default Branch: master
- Last Pushed: 2024-09-01T11:43:13.000Z (5 months ago)
- Last Synced: 2025-01-01T03:46:17.292Z (20 days ago)
- Topics: music, music-player
- Language: Rust
- Homepage:
- Size: 1.17 MB
- Stars: 48
- Watchers: 2
- Forks: 4
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# lonelyradio Music Streamer
Shuffles through your [XSPF playlists](https://www.xspf.org) or your entire library.
Decodes audio streams using [symphonia](https://github.com/pdeljanov/Symphonia) (supported [decoders](https://github.com/pdeljanov/Symphonia?tab=readme-ov-file#codecs-decoders) and [demuxers](https://github.com/pdeljanov/Symphonia?tab=readme-ov-file#formats-demuxers))
Streams music using [FLAC](https://crates.io/crates/flacenc), [ALAC](https://crates.io/crates/alac-encoder), [Vorbis](https://crates.io/crates/vorbis_rs) or raw PCM on client’s requests.
### Install server
```shell
cargo install --git https://github.com/ivabus/lonelyradio --tag 0.7.0 lonelyradio
```### Run
```
lonelyradio
```All files (recursively) will be shuffled and played back. Log will be displayed to stdout.
Look into `--help` for detailed info
#### Run in Docker
```
docker run -d \
--name lonelyradio \
--restart=unless-stopped \
-v /path/to/music:/music \
-p 5894:5894 \
ivabuz/lonelyradio:latest
```#### Playlists
Specify a directory with playlists with `--playlist-dir`. lonelyradio will scan them on startup and play them on clients’ requests.
Only the `` and (playlist's) element would be used and only `file://` is supported.
### Clients
#### monoclient-x
[monoclient-x](./monoclient-x) is a SwiftUI player for lonelyradio for iOS/iPadOS/macOS
##### Build
1. Build monolib with [xcframework](https://github.com/Binlogo/cargo-xcframework)
2. Build monoclient-x using Xcode or `xcodebuild`#### monoclient-s
[monoclient-s](./monoclient-s) is a GUI player for lonelyradio built with [Slint](https://slint.dev)
##### Install
```shell
cargo install --git https://github.com/ivabus/lonelyradio --tag 0.7.0 monoclient-s
```You may need to install some dependencies for Slint.
Desktop integration will be added later.
#### monoclient
[monoclient](./monoclient) is a CLI player for lonelyradio that uses [monolib](./monolib)
##### Install monoclient
```shell
cargo install --git https://github.com/ivabus/lonelyradio --tag 0.7.0 monoclient
```#### Usage
```shell
monoclient :
```Look into `--help` for detailed info on usage.
# Other things
[monoloader](./monoloader) is a tool that allows you to download individual audio tracks from lonelyradio-compatible servers.
[monolib](./monolib) provides a C API compatible with lonelyradio for creating custom clients.
[Protocol documentation] shortly describes the protocol used in lonelyradio. Please refer to monolib and verify custom clients with the reference lonelyradio server.
#### monolib API stability
As lonelyradio has not yet reached its first major release, the API may (and will) break at any point.
## License
lonelyradio, monolib and monoclient, as well as all other crates in this repository, are licensed under the terms of the [MIT license](./LICENSE).