https://github.com/colonelpanic8/lastfm-edit
Edit last.fm scrobbles programmatically
https://github.com/colonelpanic8/lastfm-edit
generated lastfm music scraping-tool scrobble
Last synced: 7 months ago
JSON representation
Edit last.fm scrobbles programmatically
- Host: GitHub
- URL: https://github.com/colonelpanic8/lastfm-edit
- Owner: colonelpanic8
- Created: 2025-07-20T05:40:54.000Z (9 months ago)
- Default Branch: master
- Last Pushed: 2025-08-30T05:02:59.000Z (7 months ago)
- Last Synced: 2025-08-30T07:06:09.164Z (7 months ago)
- Topics: generated, lastfm, music, scraping-tool, scrobble
- Language: HTML
- Homepage:
- Size: 33.3 MB
- Stars: 3
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# lastfm-edit
[](https://crates.io/crates/lastfm-edit)
[](https://docs.rs/lastfm-edit)
[](https://github.com/colonelpanic8/lastfm-edit/actions/workflows/ci.yml)
[](https://opensource.org/licenses/MIT)
A Rust crate for programmatic access to Last.fm's scrobble editing functionality via web scraping.
📚 **[View API Documentation →](https://docs.rs/lastfm-edit/latest/lastfm_edit/trait/trait.LastFmEditClient.html)**
## Features
- **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
## Quick Start
```rust,no_run
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(())
}
```
## Core Types
- [`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
## Installation
```toml
[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"] }
```
## License
MIT