diff options
| author | Ruben Beltran del Rio <git@r.bdr.sh> | 2025-01-26 17:04:00 +0100 |
|---|---|---|
| committer | Ruben Beltran del Rio <git@r.bdr.sh> | 2025-01-26 17:04:00 +0100 |
| commit | 4064639d3c3e25760ef43781feca77332cfbe5eb (patch) | |
| tree | 77ce2883e5569bd4de5e1408b41c9d6d556a11c6 /src/lyrics_engine | |
| parent | fda55240fb06c55a7552ef7ded8c17ee56ce9f49 (diff) | |
Run lint / format
Diffstat (limited to 'src/lyrics_engine')
| -rw-r--r-- | src/lyrics_engine/genius.rs | 41 | ||||
| -rw-r--r-- | src/lyrics_engine/mod.rs | 7 |
2 files changed, 34 insertions, 14 deletions
diff --git a/src/lyrics_engine/genius.rs b/src/lyrics_engine/genius.rs index e14589d..a8b0468 100644 --- a/src/lyrics_engine/genius.rs +++ b/src/lyrics_engine/genius.rs @@ -1,7 +1,10 @@ -use std::io::{Result, Error, ErrorKind::Other}; -use serde::Deserialize; use reqwest::get; -use scraper::{ElementRef, Html, Selector, node::Node::{Text, Element}}; +use scraper::{ + node::Node::{Element, Text}, + ElementRef, Html, Selector, +}; +use serde::Deserialize; +use std::io::{Error, ErrorKind::Other, Result}; #[derive(Deserialize, Debug)] struct GeniusApiResponse { @@ -26,11 +29,21 @@ struct GeniusResult { } pub async fn search(url: &str) -> Result<String> { - let response = get(url).await + let response = get(url) + .await .map_err(|_| Error::new(Other, "Could not perform lyrics search in engine."))? - .json::<GeniusApiResponse>().await - .map_err(|_| Error::new(Other, "Lyrics engine returned invalid response from search."))?; - let url = response.response.hits.into_iter() + .json::<GeniusApiResponse>() + .await + .map_err(|_| { + Error::new( + Other, + "Lyrics engine returned invalid response from search.", + ) + })?; + let url = response + .response + .hits + .into_iter() .find(|hit| hit.hit_type == "song") .map(|hit| hit.result.url) .ok_or_else(|| Error::new(Other, "Could not find a matching track in lyrics engine."))?; @@ -39,14 +52,18 @@ pub async fn search(url: &str) -> Result<String> { } pub async fn get_lyrics(url: &str) -> Result<String> { - let song_html = get(url).await + let song_html = get(url) + .await .map_err(|_| Error::new(Other, "Could not fetch lyrics from engine."))? - .text().await + .text() + .await .map_err(|_| Error::new(Other, "Lyrics engine returned invalid response."))?; let document = Html::parse_document(&song_html); let selector = Selector::parse(r#"div[data-lyrics-container="true"]"#).unwrap(); - let lyrics_div = document.select(&selector).next() + let lyrics_div = document + .select(&selector) + .next() .ok_or_else(|| Error::new(Other, "Could not find lyrics in response."))?; let mut lyrics = String::new(); @@ -61,10 +78,10 @@ pub async fn get_lyrics(url: &str) -> Result<String> { lyrics.push_str(&text); } } - }, + } Text(text) => { lyrics.push_str(text); - }, + } _ => {} } } diff --git a/src/lyrics_engine/mod.rs b/src/lyrics_engine/mod.rs index f83d219..325c523 100644 --- a/src/lyrics_engine/mod.rs +++ b/src/lyrics_engine/mod.rs @@ -1,5 +1,5 @@ -use std::io::Result; use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC}; +use std::io::Result; mod genius; @@ -16,7 +16,10 @@ pub async fn print_lyrics(track: Track, show_title: bool) -> Result<()> { 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 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?; |