11 releases (7 breaking)

0.8.0 Jul 28, 2024
0.7.0 Feb 12, 2023
0.6.0 Jan 26, 2023
0.5.0 Dec 4, 2022
0.2.0 Jan 20, 2021

#167 in HTTP client

Download history 109/week @ 2024-06-26 97/week @ 2024-07-03 95/week @ 2024-07-10 98/week @ 2024-07-17 211/week @ 2024-07-24 167/week @ 2024-07-31 135/week @ 2024-08-07 160/week @ 2024-08-14 107/week @ 2024-08-21 133/week @ 2024-08-28 149/week @ 2024-09-04 103/week @ 2024-09-11 115/week @ 2024-09-18 145/week @ 2024-09-25 105/week @ 2024-10-02 94/week @ 2024-10-09

475 downloads per month
Used in rescrobbled

MIT license

65KB
1.5K SLoC

listenbrainz

Crate Documentation CI builder License

ListenBrainz API bindings for Rust.

There is also listenbrainz-rust. However, that crate only supports single listens, imports and now playing requests, and is also not maintained anymore. This crate, on the other hand, aims to be a complete API wrapper for the ListenBrainz API, version 1.


lib.rs:

API bindings for ListenBrainz.

This crate aims to be an idiomatic wrapper of the ListenBrainz HTTP API (version 1). It contains functionality for direct access to the API in the [raw] module, as well as a more convenient ListenBrainz client which is easier to use.

Generally, using the raw functionality is more cumbersome, as its types and functions map one-to-one to the HTTP API's JSON input- and response data. Using the ListenBrainz type is therefore recommended.

Example

Submit a currently playing song to ListenBrainz.org:

#
let mut client = ListenBrainz::new();

client.authenticate("LISTENBRAINZ TOKEN")
    .expect("Could not authenticate with ListenBrainz");

client.playing_now("The Beatles", "Here Comes the Sun", Some("Abbey Road"))
    .expect("Could not submit 'playing now' request");

Use a custom API URL, for example to submit songs to Maloja:

#
let mut client = ListenBrainz::new_with_url("http://maloja.example.com/apis/listenbrainz");

client.authenticate("MALOJA API KEY")
    .expect("Could not authenticate with Maloja");

client.listen("Lymbyc Systym", "Split Stones", None)
    .expect("Could not submit listen");

Dependencies

~2.5–4MB
~87K SLoC