#audio #api #radiobrowser

bin+lib radiobrowser

Client library for radiobrowser compatible servers with auto fallback to other available servers

4 releases (breaking)

Uses new Rust 2021

new 0.4.0 May 12, 2022
0.3.0 May 6, 2022
0.2.0 Apr 26, 2022
0.1.0 Apr 21, 2022

#95 in Audio

Download history 40/week @ 2022-04-21 21/week @ 2022-04-28 41/week @ 2022-05-05 88/week @ 2022-05-12

190 downloads per month

MIT license

44KB
1K SLoC

Radiobrowser Lib Rust

Client library for radio-browser.info and other radio-browser-rust servers

Features

  • Async / Blocking API
  • Clean query api with builder pattern
  • Countries, languages, tags, stations, serverconfig
  • Server statistics
  • Station actions: click, vote
  • Add streams

Crate features

  • "blocking" - support for non-async (blocking) mode
  • "chrono" - return DateTime objects instead of strings

Getting started (Blocking)

Example:

It needs to have the feature "blocking" enabled. Cargo.toml entry:

radiobrowser = { version = "*", features = ["blocking"] }
use radiobrowser::blocking::RadioBrowserAPI;
use std::error::Error;

fn main() -> Result<(), Box<dyn Error>> {
    let api = RadioBrowserAPI::new()?;
    let servers = RadioBrowserAPI::get_servers()?;
    println!("Servers: {:?}", servers);
    let status = RadioBrowserAPI::get_server_status()?;
    println!("Status: {:?}", status);
    let countries = api.get_countries().send()?;
    println!("Countries: {:?}", countries);
    let stations = api.get_stations().name("jazz").send()?;
    println!("Stations: {:?}", stations);
    Ok(())
}

Getting started (Async)

Cargo.toml entry

radiobrowser = "*"

Example:

use radiobrowser::RadioBrowserAPI;
use radiobrowser::StationOrder;
use std::error::Error;

#[async_std::main]
async fn main() -> Result<(), Box<dyn Error>> {
    let mut api = RadioBrowserAPI::new().await?;
    let stations = api
        .get_stations()
        .name("jazz")
        .reverse(true)
        .order(StationOrder::Clickcount)
        .send()
        .await?;

    println!("Stations found: {}", stations?.len());
    Ok(())
}

Usage

Documentation is at https://docs.rs/radiobrowser

License

This project is MIT licensed.

Dependencies

~8–17MB
~336K SLoC