big overhaul

This commit is contained in:
djaidjai committed 2023-05-09 13:41:54 +02:00
1 parent 3be9b6ccea
commit ecfbe8f147
7 files changed
+87 -72

No files matched your search

+15 -44
View File
@@ -1,22 +1,7 @@
use log::{debug, trace};
use mpris::{PlayerFinder, MetadataValue};
use mpris::{MetadataValue};
use crate::structs::{config::{Rating, Config}, data::Data};
fn update_prefix(cfg: &Config, data: &mut Data) {
if data.current_player.is_some() {
let c = cfg.player_prefixes.get(&data.current_player.as_ref().unwrap().to_ascii_lowercase());
if let Some(char) = c {
data.display_prefix = char.clone();
trace!("updated prefix to {}", data.display_prefix);
} else {
data.display_prefix = cfg.player_prefixes.get("default").unwrap_or(&'>').clone();
trace!("set prefix to default ({})", data.display_prefix);
}
}
}
fn value_to_string(v: &MetadataValue, sep: char) -> String {
match v {
MetadataValue::String(v) => v.to_string(),
@@ -72,36 +57,22 @@ fn rating_to_string(r: Option<&MetadataValue>, map: &Rating) -> Option<String> {
}
}
pub fn update_message(pf: &PlayerFinder, cfg: &Config, data: &mut Data) {
if data.current_player.is_some() {
update_prefix(cfg, data);
let name = &data.current_player.as_ref().unwrap();
if let Ok(player) = pf.find_by_name(name) {
debug!("found player!");
if let Ok(m) = player.get_metadata() {
debug!("got metadata!");
for field in &cfg.metadata_fields {
if field.field.eq("xesam:userRating") || field.field.eq("xesam:autoRating") {
let key = field.field.clone();
let string = rating_to_string(m.get(&key), &cfg.rating_icons);
if let Some(str) = string {
data.display_text.insert(key, str);
} else {
data.display_text.remove(&key);
}
pub fn update_message(cfg: &Config, data: &mut Data) {
if let Some(player) = &data.current_player {
if let Ok(meta) = player.get_metadata() {
for field in &cfg.metadata_fields {
let key = field.field.clone();
if field.field.eq("xesam:userRating") {
if let Some(rating_string) = rating_to_string(meta.get(&key), &cfg.rating_icons) {
data.display_text.insert(key, rating_string);
} else {
let key = field.field.clone();
match m.get(&key) {
Some(value) => {
debug!("inserting {}: '{}'", key, value_to_string(value, cfg.array_separator));
data.display_text.insert(key, value_to_string(value, cfg.array_separator));
},
None => {
debug!("field {} is empty!", key);
data.display_text.insert(key, format!("No {}", field.field.clone().trim_start_matches("xesam:")));
},
}
data.display_text.remove(&key);
}
} else {
match meta.get(&key) {
Some(value) => data.display_text.insert(key, value_to_string(value, cfg.array_separator)),
None => data.display_text.insert(key, format!("No {}", field.field.clone().trim_start_matches("xesam:"))),
};
}
}
}
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.