mirror of
https://github.com/ivabus/lonelyradio
synced 2024-11-10 02:25:17 +03:00
Ivan Bushchik
29338f32e3
- XSPF playlists support - Modernization of error handling and server-client communications - Vorbis and ALAC transcoding - All transcoders are now optional but enabled on default - lonelyradio_types crate is now exported through monolib Signed-off-by: Ivan Bushchik <ivabus@ivabus.dev>
89 lines
2.6 KiB
Markdown
89 lines
2.6 KiB
Markdown
# 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 <MUSIC_FOLDER>
|
||
```
|
||
|
||
All files (recursively) will be shuffled and played back. Log will be displayed to stdout.
|
||
|
||
Look into `--help` for detailed info
|
||
|
||
#### 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.
|
||
|
||
### 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 <SERVER>:<PORT>
|
||
```
|
||
|
||
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.
|
||
|
||
The full protocol specification will be available later. If you would like to learn more about it now, please refer to the monolib.
|
||
|
||
#### 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).
|