rustfm-scraper 0.2.23

Scrapes listening history from Last.fm and stores it in a file
Documentation
use anyhow::Result;

use crate::files;
use crate::models::recent_tracks::Track;
use crate::models::saved_scrobbles::SavedScrobbles;

pub fn save_to_json(scrobbles: &[Track], username: &str) -> Result<i32> {
    let file = files::build_file_path(username, "json")?;
    let scrobbles = SavedScrobbles::from_scrobbles(scrobbles);
    scrobbles.save_as_json(&file)?;
    Ok(scrobbles.total_saved_scrobbles())
}

pub fn append_to_json(
    scrobbles: &[Track],
    saved_scrobbles: &mut SavedScrobbles,
    username: &str,
) -> Result<i32> {
    let file = files::build_file_path(username, "json")?;
    saved_scrobbles.append_new_scrobbles(scrobbles);
    saved_scrobbles.save_as_json(&file)?;
    Ok(saved_scrobbles.total_saved_scrobbles())
}

pub fn load_from_json(username: &str) -> Result<SavedScrobbles> {
    let file = files::build_file_path(username, "json")?;
    Ok(SavedScrobbles::load_from_json(&file)?)
}