A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd
at master 35 lines 1.1 kB view raw
1use std::{env, thread}; 2 3use anyhow::Error; 4use rockbox::{ 5 api::rockbox::v1alpha1::{library_service_client::LibraryServiceClient, ScanLibraryRequest}, 6 install_rockboxd, wait_for_rockboxd, 7}; 8 9use super::start::*; 10 11pub async fn scan(path: Option<String>, rebuild_index: Option<bool>) -> Result<(), Error> { 12 install_rockboxd()?; 13 let handle = thread::spawn(|| match start(false) { 14 Ok(_) => {} 15 Err(e) => { 16 eprintln!("Failed to start Rockbox server: {}", e); 17 } 18 }); 19 20 let host = env::var("ROCKBOX_HOST").unwrap_or_else(|_| "localhost".to_string()); 21 let port = env::var("ROCKBOX_PORT").unwrap_or_else(|_| "6061".to_string()); 22 23 wait_for_rockboxd(port.parse()?, None)?; 24 25 let url = format!("tcp://{}:{}", host, port); 26 let mut client = LibraryServiceClient::connect(url).await?; 27 let request = tonic::Request::new(ScanLibraryRequest { 28 path, 29 rebuild_index, 30 }); 31 client.scan_library(request).await?; 32 println!("Scan request sent to Rockbox server"); 33 handle.join().unwrap(); 34 Ok(()) 35}