CORE: Added Last.FM scrobbling
Build and Publish / Build and Publish Docker Image (push) Failing after 1m42s

This commit is contained in:
Ultradesu
2026-05-27 16:40:06 +03:00
parent 1c70349df8
commit 015d75c701
17 changed files with 1083 additions and 10 deletions
+14
View File
@@ -260,6 +260,8 @@ struct AdminSettingsDto {
values: AdminSettingsValues,
sources: AdminSettingsSources,
lastfm_api_key_configured: bool,
lastfm_shared_secret_configured: bool,
lastfm_scrobbling_configured: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
@@ -274,6 +276,7 @@ struct AdminSettingsValues {
oidc_user_groups: String,
swagger_enabled: bool,
lastfm_api_key: String,
lastfm_shared_secret: String,
agent_enabled: bool,
agent_inbox_dir: String,
agent_storage_dir: String,
@@ -297,6 +300,7 @@ struct AdminSettingsSources {
oidc_user_groups: &'static str,
swagger_enabled: &'static str,
lastfm_api_key: &'static str,
lastfm_shared_secret: &'static str,
agent_enabled: &'static str,
agent_inbox_dir: &'static str,
agent_storage_dir: &'static str,
@@ -320,6 +324,7 @@ pub(super) struct UpdateSettingsRequest {
oidc_user_groups: String,
swagger_enabled: bool,
lastfm_api_key: String,
lastfm_shared_secret: String,
agent_enabled: bool,
agent_inbox_dir: String,
agent_storage_dir: String,
@@ -709,6 +714,10 @@ pub async fn update_settings(
("oidc_user_groups", body.oidc_user_groups.trim().to_string()),
("swagger_enabled", body.swagger_enabled.to_string()),
("lastfm_api_key", body.lastfm_api_key.trim().to_string()),
(
"lastfm_shared_secret",
body.lastfm_shared_secret.trim().to_string(),
),
("agent_enabled", body.agent_enabled.to_string()),
("agent_inbox_dir", body.agent_inbox_dir.trim().to_string()),
(
@@ -785,6 +794,9 @@ pub async fn settings_probe(
fn settings_dto(config: AppConfig, sources: ConfigSources) -> AdminSettingsDto {
AdminSettingsDto {
lastfm_api_key_configured: !config.lastfm_api_key.trim().is_empty(),
lastfm_shared_secret_configured: !config.lastfm_shared_secret.trim().is_empty(),
lastfm_scrobbling_configured: !config.lastfm_api_key.trim().is_empty()
&& !config.lastfm_shared_secret.trim().is_empty(),
values: AdminSettingsValues {
auth_password_enabled: config.auth_password_enabled,
auth_sso_enabled: config.auth_sso_enabled,
@@ -796,6 +808,7 @@ fn settings_dto(config: AppConfig, sources: ConfigSources) -> AdminSettingsDto {
oidc_user_groups: config.oidc_user_groups,
swagger_enabled: config.swagger_enabled,
lastfm_api_key: config.lastfm_api_key,
lastfm_shared_secret: config.lastfm_shared_secret,
agent_enabled: config.agent_enabled,
agent_inbox_dir: config.agent_inbox_dir,
agent_storage_dir: config.agent_storage_dir,
@@ -817,6 +830,7 @@ fn settings_dto(config: AppConfig, sources: ConfigSources) -> AdminSettingsDto {
oidc_user_groups: sources.oidc_user_groups.code(),
swagger_enabled: sources.swagger_enabled.code(),
lastfm_api_key: sources.lastfm_api_key.code(),
lastfm_shared_secret: sources.lastfm_shared_secret.code(),
agent_enabled: sources.agent_enabled.code(),
agent_inbox_dir: sources.agent_inbox_dir.code(),
agent_storage_dir: sources.agent_storage_dir.code(),
+25 -1
View File
@@ -184,6 +184,16 @@ fn config_display_entries(config: &AppConfig, sources: &ConfigSources) -> Vec<Co
config.agent_concurrency.to_string(),
defaults.agent_concurrency.to_string()
),
entry!(
lastfm_api_key,
config.lastfm_api_key.clone(),
defaults.lastfm_api_key.clone()
),
entry!(
lastfm_shared_secret,
config.lastfm_shared_secret.clone(),
defaults.lastfm_shared_secret.clone()
),
]
}
@@ -258,6 +268,10 @@ struct SettingsTemplate {
agent_context_limit_source: &'static str,
agent_concurrency: String,
agent_concurrency_source: &'static str,
lastfm_api_key: String,
lastfm_api_key_source: &'static str,
lastfm_shared_secret: String,
lastfm_shared_secret_source: &'static str,
}
pub async fn settings_handler(
@@ -310,6 +324,10 @@ pub async fn settings_handler(
agent_context_limit_source: sources.agent_context_limit.code(),
agent_concurrency: config.agent_concurrency.to_string(),
agent_concurrency_source: sources.agent_concurrency.code(),
lastfm_api_key: config.lastfm_api_key.clone(),
lastfm_api_key_source: sources.lastfm_api_key.code(),
lastfm_shared_secret: config.lastfm_shared_secret.clone(),
lastfm_shared_secret_source: sources.lastfm_shared_secret.code(),
};
Ok(Html::new(template.render()?))
}
@@ -334,6 +352,8 @@ pub struct OidcSettingsForm {
agent_confidence_threshold: Option<String>,
agent_context_limit: Option<String>,
agent_concurrency: Option<String>,
lastfm_api_key: Option<String>,
lastfm_shared_secret: Option<String>,
}
pub async fn settings_submit(
@@ -380,7 +400,9 @@ pub async fn settings_submit(
let agent_confidence_threshold = data.agent_confidence_threshold.unwrap_or_default();
let agent_context_limit = data.agent_context_limit.unwrap_or_default();
let agent_concurrency = data.agent_concurrency.unwrap_or_default();
let fields: [(&str, &str); 18] = [
let lastfm_api_key = data.lastfm_api_key.unwrap_or_default();
let lastfm_shared_secret = data.lastfm_shared_secret.unwrap_or_default();
let fields: [(&str, &str); 20] = [
("auth_password_enabled", pw_enabled),
("auth_sso_enabled", sso_enabled),
("oidc_button_text", &oidc_button_text),
@@ -399,6 +421,8 @@ pub async fn settings_submit(
("agent_confidence_threshold", &agent_confidence_threshold),
("agent_context_limit", &agent_context_limit),
("agent_concurrency", &agent_concurrency),
("lastfm_api_key", &lastfm_api_key),
("lastfm_shared_secret", &lastfm_shared_secret),
];
for (key, value) in fields {
let mut entry = ConfigEntry::new(key.to_owned(), value.to_owned());