diff --git a/Cargo.toml b/Cargo.toml index 49ac4e7..e3f236f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -38,3 +38,4 @@ deunicode = "1.4.2" opener = { version = "0.7.0", features = ["reveal"] } tempfile = "3.10.1" listenbrainz = "0.7.0" +discord-rpc-client = "0.4.0" diff --git a/src/music_controller/connections.rs b/src/music_controller/connections.rs index dec723c..bf5e688 100644 --- a/src/music_controller/connections.rs +++ b/src/music_controller/connections.rs @@ -3,6 +3,7 @@ use std::{ error::Error, }; +use discord_rpc_client::Client; use listenbrainz::ListenBrainz; use uuid::Uuid; @@ -65,6 +66,13 @@ impl Controller { client.listen(artist, track, release)?; Ok(()) } + + pub fn discord_song_change(client: &mut Client,song: Song) { + client.set_activity(|a| { + a.state(format!("Listening to {}", song.get_tag(&Tag::Title).unwrap())) + .into() + }); + } } #[cfg(test)] diff --git a/src/music_controller/queue.rs b/src/music_controller/queue.rs index 483010f..0559696 100644 --- a/src/music_controller/queue.rs +++ b/src/music_controller/queue.rs @@ -66,7 +66,7 @@ impl QueueItemType<'_> { if !shuffled { Some(album.track(*disc as usize, *index as usize).unwrap().location.clone()) }else { - todo!() + todo!() //what to do for non shuffled album } }, ExternalSong(uri) => { Some(uri.clone()) }, diff --git a/src/music_storage/utils.rs b/src/music_storage/utils.rs index 1f68a8c..2f04d4d 100644 --- a/src/music_storage/utils.rs +++ b/src/music_storage/utils.rs @@ -25,12 +25,12 @@ pub(super) fn normalize(input_string: &str) -> String { /// Write any data structure which implements [serde::Serialize] /// out to a [bincode] encoded file compressed using [snap] -pub(super) fn write_file( +pub(super) fn write_file+std::convert::AsRef+Clone>( library: T, - path: PathBuf, + path: U, ) -> Result<(), Box> { // Create a temporary name for writing out - let mut writer_name = path.clone(); + let mut writer_name = PathBuf::from(&path); writer_name.set_extension("tmp"); // Create a new BufWriter on the file and a snap frame encoder