diff options
author | Mustafa Salih <37256744+MustafaSalih1993@users.noreply.github.com> | 2021-01-14 05:43:01 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-14 05:43:01 +0300 |
commit | e38859e0f0106b60f2dd6d2f8260ea16e5417a96 (patch) | |
tree | acdd23279a8fc837fa076739933b1269d74110fd /src/utils/spotify.rs | |
parent | e829871f2d757c7414763992839a584038c7b443 (diff) | |
parent | 6a349a0e0282e56b03adbe02b41bfaf0cc3213f1 (diff) |
Merge pull request #34 from MustafaSalih1993/dev
orginized the code to seprated mods and deleted the lib file
Diffstat (limited to 'src/utils/spotify.rs')
-rw-r--r-- | src/utils/spotify.rs | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/utils/spotify.rs b/src/utils/spotify.rs new file mode 100644 index 0000000..4954f3b --- /dev/null +++ b/src/utils/spotify.rs @@ -0,0 +1,45 @@ +use crate::types::Config; +use dbus::blocking::stdintf::org_freedesktop_dbus::Properties; +use dbus::{arg, blocking::Connection}; +use std::time::Duration; + +// getting spotify current artist and title. +// FIXME: I know im lazy asshole, this error handling looks ugly, i dont like it too, need to fix soon. +pub fn get_spotify(config: &Config) -> String { + let conn = match Connection::new_session() { + Ok(conn) => conn, + _ => return String::from(""), + }; + + let p = conn.with_proxy( + "org.mpris.MediaPlayer2.spotify", + "/org/mpris/MediaPlayer2", + Duration::from_millis(5000), + ); + + let metadata: arg::PropMap = match p.get("org.mpris.MediaPlayer2.Player", "Metadata") { + Ok(data) => data, + _ => return String::from(""), + }; + + let title: Option<&String> = arg::prop_cast(&metadata, "xesam:title"); + let artist: Option<&Vec<String>> = arg::prop_cast(&metadata, "xesam:artist"); + + let title = match title { + Some(title) => title, + _ => "", + }; + + let artist = match artist { + Some(artist_vec) => match artist_vec.first() { + Some(name) => name, + _ => "", + }, + None => "", + }; + + format!( + " {} {} - {} {}", + config.spotify.icon, artist, title, config.seperator + ) +} |