aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-02-05 14:44:02 +0100
committermetamuffin <metamuffin@disroot.org>2025-02-05 14:44:02 +0100
commit7a2380bd5413253036c2ad5aa2a07be1e238d00c (patch)
tree8dcdfc2e7799204704c17d889a5cbc630fae6faa
parent4d5aae703751ae4715d4e0ea1c784826787ab0fd (diff)
downloadjellything-7a2380bd5413253036c2ad5aa2a07be1e238d00c.tar
jellything-7a2380bd5413253036c2ad5aa2a07be1e238d00c.tar.bz2
jellything-7a2380bd5413253036c2ad5aa2a07be1e238d00c.tar.zst
jellyfin: sort toplevel
-rw-r--r--server/src/routes/compat/jellyfin/mod.rs22
1 files changed, 13 insertions, 9 deletions
diff --git a/server/src/routes/compat/jellyfin/mod.rs b/server/src/routes/compat/jellyfin/mod.rs
index 1ea83f9..ddbd410 100644
--- a/server/src/routes/compat/jellyfin/mod.rs
+++ b/server/src/routes/compat/jellyfin/mod.rs
@@ -358,13 +358,17 @@ pub fn r_jellyfin_users_views(
) -> MyResult<Json<Value>> {
let _ = userId;
- let toplevel = database
+ let mut toplevel = database
.get_node_children(NodeID::from_slug("library"))
- .context("root node missing")?;
+ .context("root node missing")?
+ .into_iter()
+ .map(|nid| database.get_node_with_userdata(nid, &session))
+ .collect::<Result<Vec<_>, anyhow::Error>>()?;
+
+ toplevel.sort_by_key(|(n, _)| n.index.unwrap_or(usize::MAX));
let mut items = Vec::new();
- for nid in toplevel {
- let (n, ud) = database.get_node_with_userdata(nid, &session)?;
+ for (n, ud) in toplevel {
if n.visibility >= Visibility::Reduced {
items.push(item_object(&n, &ud))
}
@@ -432,7 +436,7 @@ pub fn r_jellyfin_items_playbackinfo(
})))
}
-#[get("/Videos/<id>/stream.mkv")]
+#[get("/Videos/<id>/stream.webm")]
pub fn r_jellyfin_video_stream(_session: Session, id: &str) -> Redirect {
Redirect::temporary(rocket::uri!(r_stream(
id,
@@ -656,9 +660,9 @@ fn media_source_object(node: &Node, m: &MediaInfo) -> JellyfinMediaSource {
JellyfinMediaSource {
protocol: JellyfinMediaSourceProtocol::File,
id: node.slug.clone(),
- path: format!("/path/to/{}.mkv", node.slug),
+ path: format!("/path/to/{}.webm", node.slug),
r#type: JellyfinMediaSourceType::Default,
- container: "mkv".to_string(),
+ container: "webm".to_string(),
size: 1_000_000_000,
name: node.slug.clone(),
is_remote: false,
@@ -772,7 +776,7 @@ fn item_object(node: &Node, userdata: &NodeUserData) -> JellyfinItem {
video_type: node.media.as_ref().map(|_| "VideoFile".to_owned()),
location_type: node.media.as_ref().map(|_| "FileSystem".to_owned()),
play_access: node.media.as_ref().map(|_| "Full".to_owned()),
- container: node.media.as_ref().map(|_| "mkv".to_owned()),
+ container: node.media.as_ref().map(|_| "webm".to_owned()),
run_time_ticks: if let Some(m) = &node.media {
Some((m.duration * 10_000_000.) as i64)
} else {
@@ -783,7 +787,7 @@ fn item_object(node: &Node, userdata: &NodeUserData) -> JellyfinItem {
path: node
.media
.as_ref()
- .map(|_| format!("/path/to/{}.mkv", node.slug)),
+ .map(|_| format!("/path/to/{}.webm", node.slug)),
}
}