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, query: &str) -> Result<Vec<String>> {
    let url = format!(
        "https://ws.audioscrobbler.com/2.0/?method=track.search&track={}&api_key={}&format=json&limit=10",
        urlencoding::encode(query), cfg.api_key
    );

    let res: Value = reqwest::blocking::get(&url)?.json()?;
    let tracks = &res["results"]["trackmatches"]["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"].as_str().unwrap_or("?");
            let listeners = track["listeners"].as_str().unwrap_or("?");

            items.push(format!("{} - {} ({} listeners)", name, artist, listeners));
        }
    }

    Ok(items)
}