From ac31201ba788dbaae1606fc0ee8a1021681d2776 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Wed, 23 Apr 2025 12:34:06 +0200 Subject: show external ids in node page --- server/src/routes/ui/node.rs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'server/src') diff --git a/server/src/routes/ui/node.rs b/server/src/routes/ui/node.rs index 6a8d8be..8d06f36 100644 --- a/server/src/routes/ui/node.rs +++ b/server/src/routes/ui/node.rs @@ -299,6 +299,23 @@ markup::define! { }} } } + @if !node.external_ids.is_empty() { + details { + summary { @trs(lang, "node.external_ids") } + table { + @for (key, value) in &node.external_ids { tr { + tr { + td { @trs(lang, &format!("eid.{}", key)) } + @if let Some(url) = external_id_url(key, value) { + td { a[href=url] { pre { @value } } } + } else { + td { pre { @value } } + } + } + }} + } + } + } @if !node.tags.is_empty() { details { summary { @trs(lang, "node.tags") } @@ -525,3 +542,17 @@ fn chapter_key_time(c: &Chapter, dur: f64) -> f64 { let end = c.time_end.unwrap_or(dur); start * 0.8 + end * 0.2 } + +fn external_id_url(key: &str, value: &str) -> Option { + Some(match key { + "youtube.video" => format!("https://youtube.com/watch?v={value}"), + "youtube.channel" => format!("https://youtube.com/channel/{value}"), + "youtube.channelname" => format!("https://youtube.com/channel/@{value}"), + "musicbrainz.album" => format!("https://musicbrainz.org/release/{value}"), + "musicbrainz.albumartist" => format!("https://musicbrainz.org/artist/{value}"), + "musicbrainz.artist" => format!("https://musicbrainz.org/artist/{value}"), + "musicbrainz.releasegroup" => format!("https://musicbrainz.org/releasegroup/{value}"), + "musicbrainz.track" => format!("https://musicbrainz.org/recording/{value}"), + _ => return None, + }) +} -- cgit v1.2.3-70-g09d2