Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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

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