A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd

server: return playlist entries

+13 -10
+10 -10
crates/server/src/lib.rs
··· 94 94 rb::playback::hard_stop(); 95 95 } 96 96 "/current_playlist" => { 97 - let playlist = rb::playlist::get_current(); 98 - let info = rb::playlist::get_track_info(0); 99 - println!("info: {:?}", info); 100 - let info = rb::playlist::get_track_info(1); 101 - println!("info: {:?}", info); 102 - let info = rb::playlist::get_track_info(2); 103 - println!("info: {:?}", info); 97 + let mut playlist = rb::playlist::get_current(); 98 + let mut entries = vec![]; 104 99 let amount = rb::playlist::amount(); 105 - println!("amount: {}", amount); 106 - let entry = rb::metadata::get_metadata(-1, &info.filename); 107 - println!("entry: {:?}", entry); 100 + 101 + for i in 0..amount { 102 + let info = rb::playlist::get_track_info(i); 103 + let entry = rb::metadata::get_metadata(-1, &info.filename); 104 + entries.push(entry); 105 + } 106 + 107 + playlist.entries = entries; 108 108 109 109 let response = format!( 110 110 "HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n{}",
+3
crates/sys/src/types/playlist_info.rs
··· 1 + use crate::types::mp3_entry::Mp3Entry; 1 2 use serde::{Deserialize, Serialize}; 2 3 3 4 use crate::cast_ptr; ··· 22 23 pub filename: String, // char filename[MAX_PATH] 23 24 pub control_filename: String, // char control_filename[sizeof(PLAYLIST_CONTROL_FILE) + 8] 24 25 pub dcfrefs_handle: i32, // int dcfrefs_handle 26 + pub entries: Vec<Mp3Entry>, 25 27 } 26 28 27 29 impl From<crate::PlaylistInfo> for PlaylistInfo { ··· 53 55 .into_owned() 54 56 }, 55 57 dcfrefs_handle: info.dcfrefs_handle, 58 + entries: vec![], 56 59 } 57 60 } 58 61 }