1
0

Add cover art

This commit is contained in:
ixhbinphoenix
2024-02-12 23:58:20 +01:00
parent f369ffb220
commit 5b4972f03d
4 changed files with 176 additions and 8 deletions
+42 -7
View File
@@ -1,11 +1,13 @@
mod listenbrainz;
mod lb;
use core::time;
use std::{env, error::Error, thread};
use std::{collections::HashMap, env, error::Error, thread};
use discord_rpc_client::models::ActivityAssets;
use dotenv::dotenv;
use env_logger::Env;
use listenbrainz::Client;
use lb::listenbrainz::Client;
use log::debug;
fn main() -> Result<(), Box<dyn Error>> {
dotenv().ok();
@@ -19,6 +21,8 @@ fn main() -> Result<(), Box<dyn Error>> {
let mut drpc = discord_rpc_client::Client::new(env::var("DISCORD_CLIENT_ID")?.parse()?);
drpc.start();
let mut cover_cache: HashMap<String, String> = HashMap::new();
loop {
// TODO: Error handling lol
let np = lb.now_playing(&env::var("LB_USER")?)?;
@@ -35,11 +39,42 @@ fn main() -> Result<(), Box<dyn Error>> {
let track = metadata.track_name.clone();
let artist = metadata.artist_name.clone();
// TODOOO: Fetch cover art and display it in the discord RPC
let hash_key = format!("{} - {}", &track, &artist);
let cover_art = if cover_cache.contains_key(&hash_key) {
debug!("Got cover art from cache");
Ok(cover_cache.get(&hash_key).unwrap().clone())
} else {
let url = lb.cover_art(&track, &artist);
drpc.set_activity(|act|
act.state(artist).details(track)
).unwrap();
match url {
Ok(a) => {
cover_cache.insert(hash_key, a.clone());
Ok(a)
},
Err(e) => {
Err(e)
},
}
};
drpc.set_activity(|act| {
let mut t = act.state(artist.clone()).details(track.clone());
match cover_art {
Ok(url) => {
t = t.assets(|_| {
ActivityAssets::new()
.large_image(url)
.large_text(format!("{} - {}", &track, &artist))
})
},
Err(e) => {
debug!("Error fetching cover_art: {}", e);
},
}
t
}).unwrap();
thread::sleep(time::Duration::from_secs(15));
}