Client library for radio-browser.info and other radio-browser-rust servers
Find a file
2025-01-26 15:51:34 +01:00
examples add serialize to structs returned by api 2024-12-04 21:06:17 +00:00
src add station search by URL and UUIDs 2025-01-26 15:51:34 +01:00
.gitignore add serialize to structs returned by api 2024-12-04 21:06:17 +00:00
Cargo.toml add serialize to structs returned by api 2024-12-04 21:06:17 +00:00
CHANGELOG.md replaced box dyn error with rberror 2023-10-20 21:07:41 +02:00
LICENSE Add LICENSE 2022-04-21 21:10:04 +00:00
README.md replaced box dyn error with rberror 2023-10-20 21:07:41 +02:00

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<(), RbError> {
    let mut api = RadioBrowserAPI::new()?;
    let servers = RadioBrowserAPI::get_default_servers()?;
    println!("Servers: {:?}", servers);
    let status = api.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<(), RbError> {
    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.