47 lines
1.2 KiB
Rust
47 lines
1.2 KiB
Rust
|
|
mod listenbrainz;
|
||
|
|
|
||
|
|
use core::time;
|
||
|
|
use std::{env, error::Error, thread};
|
||
|
|
|
||
|
|
use dotenv::dotenv;
|
||
|
|
use env_logger::Env;
|
||
|
|
use listenbrainz::Client;
|
||
|
|
|
||
|
|
fn main() -> Result<(), Box<dyn Error>> {
|
||
|
|
dotenv().ok();
|
||
|
|
if cfg!(debug_assertions) {
|
||
|
|
env_logger::init_from_env(Env::new().default_filter_or("debug"));
|
||
|
|
} else {
|
||
|
|
env_logger::init_from_env(Env::new().default_filter_or("info"));
|
||
|
|
}
|
||
|
|
|
||
|
|
let lb = Client::new();
|
||
|
|
let mut drpc = discord_rpc_client::Client::new(env::var("DISCORD_CLIENT_ID")?.parse()?);
|
||
|
|
drpc.start();
|
||
|
|
|
||
|
|
loop {
|
||
|
|
// TODO: Error handling lol
|
||
|
|
let np = lb.now_playing(&env::var("LB_USER")?)?;
|
||
|
|
let listen = np.listens.first();
|
||
|
|
|
||
|
|
if listen.is_none() {
|
||
|
|
drpc.clear_activity().unwrap();
|
||
|
|
thread::sleep(time::Duration::from_secs(15));
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
|
||
|
|
let metadata = &listen.unwrap().track_metadata;
|
||
|
|
|
||
|
|
let track = metadata.track_name.clone();
|
||
|
|
let artist = metadata.artist_name.clone();
|
||
|
|
|
||
|
|
// TODOOO: Fetch cover art and display it in the discord RPC
|
||
|
|
|
||
|
|
drpc.set_activity(|act|
|
||
|
|
act.state(artist).details(track)
|
||
|
|
).unwrap();
|
||
|
|
|
||
|
|
thread::sleep(time::Duration::from_secs(15));
|
||
|
|
}
|
||
|
|
}
|