2024-08-26 20:08:19 +03:00
# lonelyradio Music Streamer
2024-01-28 20:18:18 +03:00
2024-08-26 20:08:19 +03:00
Shuffles through your [XSPF playlists ](https://www.xspf.org ) or your entire library.
2024-01-28 20:18:18 +03:00
2024-08-26 20:08:19 +03:00
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 ))
2024-01-28 20:18:18 +03:00
2024-08-26 20:08:19 +03:00
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.
2024-05-20 07:48:32 +03:00
2024-08-26 20:08:19 +03:00
### Install server
2024-05-20 07:48:32 +03:00
```shell
2024-08-26 20:08:19 +03:00
cargo install --git https://github.com/ivabus/lonelyradio --tag 0.7.0 lonelyradio
2024-05-20 07:48:32 +03:00
```
2024-08-26 20:08:19 +03:00
### Run
2024-03-15 18:49:17 +03:00
2024-07-12 23:25:36 +03:00
```
lonelyradio < MUSIC_FOLDER >
2024-03-15 18:49:17 +03:00
```
2024-08-26 20:08:19 +03:00
All files (recursively) will be shuffled and played back. Log will be displayed to stdout.
2024-01-28 20:18:18 +03:00
2024-07-12 23:25:36 +03:00
Look into `--help` for detailed info
2024-01-28 20:18:18 +03:00
2024-08-26 20:08:19 +03:00
#### Playlists
Specify a directory with playlists with `--playlist-dir` . lonelyradio will scan them on startup and play them on clients’ requests.
Only the `<location>` and (playlist's) element would be used and only `file://` is supported.
2024-07-12 23:25:36 +03:00
### Clients
2024-01-28 20:18:18 +03:00
2024-07-12 23:25:36 +03:00
#### monoclient-x
2024-01-28 20:18:18 +03:00
2024-07-12 23:25:36 +03:00
[monoclient-x ](./monoclient-x ) is a SwiftUI player for lonelyradio for iOS/iPadOS/macOS
2024-01-28 20:18:18 +03:00
2024-07-12 23:25:36 +03:00
##### Build
2024-05-16 08:28:18 +03:00
2024-07-12 23:25:36 +03:00
1. Build monolib with [xcframework ](https://github.com/Binlogo/cargo-xcframework )
2. Build monoclient-x using Xcode or `xcodebuild`
2024-05-20 07:48:32 +03:00
2024-07-12 23:25:36 +03:00
#### monoclient-s
[monoclient-s ](./monoclient-s ) is a GUI player for lonelyradio built with [Slint ](https://slint.dev )
2024-05-20 07:48:32 +03:00
2024-07-12 23:25:36 +03:00
##### Install
2024-02-25 15:40:23 +03:00
```shell
2024-08-26 20:08:19 +03:00
cargo install --git https://github.com/ivabus/lonelyradio --tag 0.7.0 monoclient-s
2024-01-28 20:18:18 +03:00
```
2024-07-12 23:25:36 +03:00
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 )
2024-05-20 07:48:32 +03:00
2024-08-26 20:08:19 +03:00
##### Install monoclient
2024-05-20 07:48:32 +03:00
```shell
2024-08-26 20:08:19 +03:00
cargo install --git https://github.com/ivabus/lonelyradio --tag 0.7.0 monoclient
2024-05-20 07:48:32 +03:00
```
2024-08-26 20:08:19 +03:00
#### Usage
2024-05-20 07:48:32 +03:00
2024-07-12 23:25:36 +03:00
```shell
2024-08-26 20:08:19 +03:00
monoclient < SERVER > :< PORT >
2024-07-12 23:25:36 +03:00
```
2024-03-04 16:15:15 +03:00
2024-08-26 20:08:19 +03:00
Look into `--help` for detailed info on usage.
2024-07-12 23:25:36 +03:00
# Other things
2024-03-04 16:15:15 +03:00
2024-08-26 20:08:19 +03:00
[monoloader ](./monoloader ) is a tool that allows you to download individual audio tracks from lonelyradio-compatible servers.
2024-05-20 07:48:32 +03:00
[monolib ](./monolib ) provides a C API compatible with lonelyradio for creating custom clients.
2024-07-12 23:25:36 +03:00
The full protocol specification will be available later. If you would like to learn more about it now, please refer to the monolib.
2024-05-20 07:48:32 +03:00
#### monolib API stability
As lonelyradio has not yet reached its first major release, the API may (and will) break at any point.
2024-01-28 20:18:18 +03:00
## License
2024-05-20 07:48:32 +03:00
lonelyradio, monolib and monoclient, as well as all other crates in this repository, are licensed under the terms of the [MIT license ](./LICENSE ).