A Rust crate for programmatic access to Last.fm's scrobble editing functionality via web scraping.
- Authentication: Login with username/password
- Library browsing: Paginated access to tracks, albums, and recent scrobbles
- Bulk editing: Edit track names, artist names, and album information
- Async iterators: Stream large datasets efficiently
- HTTP client abstraction: Works with any HTTP client implementation
use lastfm_edit::{LastFmEditClient, LastFmEditClientImpl, AsyncPaginatedIterator, Result};
#[tokio::main]
async fn main() -> Result<()> {
let http_client = http_client::native::NativeClient::new();
let client = LastFmEditClientImpl::login_with_credentials(
Box::new(http_client),
"username",
"password"
).await?;
let mut recent_tracks = client.recent_tracks();
while let Some(track) = recent_tracks.next().await? {
println!("{} - {}", track.artist, track.name);
}
Ok(())
}- [
LastFmEditClient] - Main client trait (see trait docs for all methods and examples) - [
LastFmEditClientImpl] - Concrete client implementation - [
Track], [Album] - Music metadata structures - [
AsyncPaginatedIterator] - Streaming paginated data - [
ScrobbleEdit] - Track edit operations - [
LastFmError] - Error types
[dependencies]
lastfm-edit = "4.0.1"
http-client = { version = "^6.6.3", package = "http-client-2", features = ["curl_client"] }
tokio = { version = "1.0", features = ["full"] }MIT