3 stable releases
2.0.0 | Jul 13, 2023 |
---|---|
1.1.3 | Nov 16, 2022 |
1.1.2 | Jul 19, 2022 |
#88 in Multimedia
462 downloads per month
Used in rescrobbled
61KB
973 lines
rustfm-scrobble-proxy
rustfm-scrobble-proxy is a fork of rustfm-scrobble. Its API is (mostly) identical, but it replaces the internal ureq HTTP client with attohttpc. This allows the library to be used behind a proxy seamlessly, as attohttpc picks up proxy settings automatically, unlike ureq. In addition, scrobbling tracks without an album is now allowed.
To see all changes, see the CHANGELOG.md
file. The fork happened in version 1.1.2.
rustfm-scrobble is licensed under the MIT license. See the LICENSE
file for more information. Below is the original README.
rustfm-scrobble is a Last.fm Scrobble API 2.0 crate for Rust. It allows easy acccess to the "scrobble" and "now playing" notification endpoints through a simple Rust API. It can be used to record song-plays from music players, build analog scrobbling tools similar to VinylScrobbler or work with IoT Devices. It was initially built to implement a Spotify scrobbling service using the Spotify Connect Protocol when the Alexa Spotify client did not support scrobbling plays to Last.fm.
Features
- Scrobble songs to Last.fm ('scrobble' API endpoint)
- Publish now-playing song to Last.fm ('now playing' API endpoint)
- Batch scrobble support in
Scrobbler::scrobble_batch
andScrobbleBatch
- Multiple authentication flows to gain permissions to publish to Last.fm user profile
- Store a pre-authenticated session key & throw away secret data after initial authentication
- Simple error handling; each API operation returns a
Result
with a simpleError
type on failure - Unit tested
Install
Add rustfm-scrobble to your Cargo.toml.
[dependencies]
rustfm-scrobble="1.1"
Usage
- API Documentation
- Code Examples
- Example now-playing & scrobbling client
- Example batch scrobbling client
cargo build --examples
./target/debug/examples/example
- Build:
cargo build
- Run Unit tests:
cargo test
extern crate rustfm_scrobble;
use rustfm_scrobble::{Scrobble, Scrobbler};
let username = "last-fm-username";
let password = "last-fm-password";
let api_key = "client-api-key";
let api_secret = "client-api-secret";
let mut scrobbler = Scrobbler::new(api_key, api_secret);
scrobbler.authenticate_with_password(username, password);
let song = Scrobble::new("Example Artist", "Example Song", "Example Album");
scrobbler.scrobble(song);
In Use
rustfm-scrobble is used in several projects including polaris, connectr, rescrobbled and rb-scrobbler.
Status
The API is stable & backwards compatibility will be guaranteed for all 1.0 releases.
License
MIT license, see ./LICENSE
.
Dependencies
~2.5–4MB
~99K SLoC