1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
//! # rustfm-scrobble
//!
//! Client for the Last.fm Scrobble API v2.0. Allows easy access to the most-commonly used Scrobble/Now Playing
//! endpoints in the Last.fm API, as well as robust support for multiple authentication flows. More advanced API
//! features such as metadata correction are also exposed to help build more sophisticated Scrobble clients.
//!
//! The primary types to use are `Scrobbler` - the actual client, which you will authenticate and then use to send
//! scrobble requests - and `Scrobble` - which represents a single track played at a point in time. An example using
//! these types to scrobble a track to Last.fm is given below.
//!
//! # Example usage
//! ```ignore
//! use rustfm_scrobble::{Scrobble, Scrobbler};
//! use std::error::Error;
//!
//! fn main() -> Result<(), Box<dyn Error>> {
//! let api_key = "{{api_key}}";
//! let api_secret = "{{api_secret}}";
//! let username = "{{username}}";
//! let password = "{{password}}";
//!
//! let mut scrobbler = Scrobbler::new(api_key, api_secret);
//!
//! let response = scrobbler.authenticate_with_password(username, password)?;
//! println!("Authenticated! {:#?}", response);
//!
//! let track = Scrobble::new("Los Campesinos!", "To Tundra", "No Blues");
//! let response = scrobbler.now_playing(&track)?;
//! println!("Sent now playing! {:#?}", response);
//!
//! let response = scrobbler.scrobble(&track)?;
//! println!("Sent scrobble! {:#?}", response);
//!
//! Ok(())
//! }
//! ```
//!
//! *Note:* This crate does not implement any of the logic to comply with Last.fm's scrobbling rules. Typical
//! ("real-time") implementations will likely want to adhere to these rules, outlined in Last.fm's
//! [API Documentation](https://www.last.fm/api/scrobbling#scrobble-requests). Other implementations may choose to
//! ignore these guidelines. This crate provides the flexibility to develop any type of Scrobbling application.
//!
extern crate wrapped_vec;
pub use crate;
pub use crateScrobbler;
pub use crateScrobblerError;
/// Last.fm API Response Types
///
/// Types used to represent responses from the Last.fm API