use percent_encoding::{NON_ALPHANUMERIC, utf8_percent_encode}; use std::io::Result; 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!("{GENIUS_API_URL}?access_token={GENIUS_CLIENT_TOKEN}&q={artist}%20{name}"); let song_url = search(&url).await?; let lyrics = get_lyrics(&song_url).await?; println!("{lyrics}"); Ok(()) }