From 3ae77d34d85e2b3453566aa2b7b58d9c601b3b6d Mon Sep 17 00:00:00 2001 From: cwj3rcb Date: Sat, 14 Feb 2026 16:38:03 -0600 Subject: [PATCH] music sorting, search cycling, pause cycling --- new.zip | Bin 0 -> 13132 bytes revert.zip | Bin 13121 -> 0 bytes src/core/jellyfin.rs | 2 +- src/main.rs | 65 ++++++++++++++++++++++++++++++++++++++----- 4 files changed, 59 insertions(+), 8 deletions(-) create mode 100644 new.zip delete mode 100644 revert.zip diff --git a/new.zip b/new.zip new file mode 100644 index 0000000000000000000000000000000000000000..d0d0434f3ded060afe0a9fee27a8eb2538ed23da GIT binary patch literal 13132 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 literal 0 HcmV?d00001 diff --git a/revert.zip b/revert.zip deleted file mode 100644 index 018b401ce8f7ab1af8e89388e1e7786035306f06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13121 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 X2L9)@{%KW#1f&8304aa@7r_4kEdBUb diff --git a/src/core/jellyfin.rs b/src/core/jellyfin.rs index 34188ba..3dda7b6 100644 --- a/src/core/jellyfin.rs +++ b/src/core/jellyfin.rs @@ -124,7 +124,7 @@ impl JellyfinClient { if types.contains("Episode") { sort_by = "ParentIndexNumber,IndexNumber,SortName"; } else if types.contains("Audio") { - sort_by = "IndexNumber,SortName"; + sort_by = "SortName"; } } diff --git a/src/main.rs b/src/main.rs index 52bda3e..aec633e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -76,6 +76,20 @@ impl SearchMode { } } + fn prev(self) -> Self { + use SearchMode::*; + match self { + All => Artists, + ShowsMovies => All, + Shows => ShowsMovies, + Movies => Shows, + Episodes => Movies, + Music => Episodes, + Albums => Music, + Artists => Albums, + } + } + fn label(self) -> &'static str { use SearchMode::*; match self { @@ -385,6 +399,10 @@ fn handle_key(app: &mut App, code: KeyCode) { search.mode = search.mode.next(); return; } + KeyCode::Char('?') => { + search.mode = search.mode.prev(); + return; + } KeyCode::Char(c) => { search.input.push(c); return; } _ => return, } @@ -457,6 +475,16 @@ fn handle_key(app: &mut App, code: KeyCode) { } return; } + KeyCode::Char(' ') => { + if let Some(mpv) = &app.mpv { + if let Err(e) = mpv_cycle_pause(mpv) { + app.status = format!("mpv pause: {e}"); + } + } else { + app.status = "mpv not running (press 'p' to play)".into(); + } + return; + } KeyCode::Char('p') => { // p = play selected item (spawn or replace) let cfg = match &app.config { @@ -793,8 +821,26 @@ fn ui(frame: &mut Frame, app: &App) { View::Categories => { render_categories(frame, app, panes.left_main, panes.right_main); } - View::Library { title, items, selected, start_index, total, .. } => { - render_library(frame, title, *start_index, *total, items, *selected, panes.left_main, panes.right_main); + View::Library { title, query, items, selected, start_index, total, .. } => { + let is_audio = query + .include_item_types + .as_deref() + .map(|t| t.split(',').any(|x| x.trim() == "Audio")) + .unwrap_or(false); + + let show_audio_track_numbers = is_audio && query.parent_id.is_some(); + + render_library( + frame, + title, + *start_index, + *total, + items, + *selected, + panes.left_main, + panes.right_main, + show_audio_track_numbers, + ); } View::Login => { render_login(frame, app, panes.left_main, panes.right_main); @@ -922,6 +968,7 @@ fn render_library( selected: usize, left: Rect, right: Rect, + show_audio_track_numbers: bool, ) { let viewport = left.height.saturating_sub(2) as usize; @@ -934,10 +981,9 @@ fn render_library( matches!(item_type, Some("Movie" | "Series" | "MusicAlbum")) } - fn left_number_prefix(it: &core::jellyfin::JfItem) -> String { + fn left_number_prefix(it: &core::jellyfin::JfItem, show_audio_track_numbers: bool) -> String { match it.item_type.as_deref() { Some("Episode") => { - // season x episode (01x02) match (it.parent_index_number, it.index_number) { (Some(season), Some(ep)) => format!("{:02}x{:02} ", season, ep), (_, Some(ep)) => format!("{:02} ", ep), @@ -945,7 +991,9 @@ fn render_library( } } Some("Audio") => { - // track number + if !show_audio_track_numbers { + return String::new(); + } match it.index_number { Some(n) => format!("{:02}. ", n), None => String::new(), @@ -958,7 +1006,7 @@ fn render_library( let list_items: Vec = items[start..end] .iter() .map(|it| { - let prefix = left_number_prefix(it); + let prefix = left_number_prefix(it, show_audio_track_numbers); let year = if show_year_for(it.item_type.as_deref()) { it.production_year.map(|y| format!(" ({y})")).unwrap_or_default() @@ -1100,7 +1148,6 @@ fn spawn_mpv(cfg: &core::config::Config, first_item_id: &str) -> Result Result<(), String> { let base = cfg.base_url.trim_end_matches('/'); let url = format!("{}/Items/{}/Download", base, item_id); @@ -1137,6 +1184,10 @@ fn mpv_toggle_fullscreen(mpv: &MpvSession) -> Result<(), String> { // mpv_cmd(&mpv.socket_path, r#"{"command":["set_property","fullscreen","yes"]}"#) } +fn mpv_cycle_pause(mpv: &MpvSession) -> Result<(), String> { + mpv_cmd(&mpv.socket_path, r#"{"command":["cycle","pause"]}"#) +} + struct Panes { top: Rect, left_main: Rect,