diff options
author | metamuffin <metamuffin@disroot.org> | 2025-02-05 14:44:02 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-02-05 14:44:02 +0100 |
commit | 7a2380bd5413253036c2ad5aa2a07be1e238d00c (patch) | |
tree | 8dcdfc2e7799204704c17d889a5cbc630fae6faa /server/src/routes/compat/jellyfin/mod.rs | |
parent | 4d5aae703751ae4715d4e0ea1c784826787ab0fd (diff) | |
download | jellything-7a2380bd5413253036c2ad5aa2a07be1e238d00c.tar jellything-7a2380bd5413253036c2ad5aa2a07be1e238d00c.tar.bz2 jellything-7a2380bd5413253036c2ad5aa2a07be1e238d00c.tar.zst |
jellyfin: sort toplevel
Diffstat (limited to 'server/src/routes/compat/jellyfin/mod.rs')
-rw-r--r-- | server/src/routes/compat/jellyfin/mod.rs | 22 |
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)), } } |