lonelyradio/README.md
Ivan Bushchik 29338f32e3
0.7.0: Playlists, Vorbis, ALAC and more
- 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>
2024-08-26 20:18:06 +03:00

89 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 clients 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).