lastui 0.3.0

Command line tool to access Last.fm api and commands
use crate::config::Config;
use anyhow::Result;
use serde_json::Value;

pub fn fetch(cfg: &Config, limit: u32) -> Result<Vec<String>> {
    let url = format!(
        "https://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user={}&api_key={}&format=json&limit={}",
        cfg.username, cfg.api_key, limit
    );

    let res: Value = reqwest::blocking::get(&url)?.json()?;
    let tracks = &res["recenttracks"]["track"];

   let mut items = Vec::new();

   if let Some(arr) = tracks.as_array() {
       for track in arr {
           let name = track["name"].as_str().unwrap_or("?");
           let artist = track["artist"]["#text"].as_str().unwrap_or("?");
           let now_playing = track["@attr"]["nowplaying"].as_str() == Some("true");

           let line = if now_playing {
               format!("> {} - {} (now playing)", name, artist)
           } else {
               format!("    {} - {}", name, artist)
           };

           items.push(line);
       }
   }

   Ok(items)
}