use std::io::Result; use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC}; mod genius; use crate::Track; use genius::{get_lyrics, search}; const GENIUS_CLIENT_TOKEN: &str = env!("LYRICLI_GENIUS_TOKEN"); const GENIUS_API_URL: &str = "https://api.genius.com/search"; pub async fn print_lyrics(track: Track, show_title: bool) -> Result<()> { if show_title { println!("{} - {}", track.artist, track.name); } let artist = utf8_percent_encode(&track.artist, NON_ALPHANUMERIC).to_string(); let name = utf8_percent_encode(&track.name, NON_ALPHANUMERIC).to_string(); let url = format!("{}?access_token={}&q={}%20{}", GENIUS_API_URL, GENIUS_CLIENT_TOKEN, artist, name); let song_url = search(&url).await?; let lyrics = get_lyrics(&song_url).await?; println!("{}", lyrics); Ok(()) }