media_server_client/
media_server_client.rs1use futures_util::StreamExt;
2use upnp_client::{
3 device_client::DeviceClient, discovery::discover_pnp_locations,
4 media_server::MediaServerClient, types::Device,
5};
6
7const KODI_MEDIA_SERVER: &str = "Kodi - Media Server";
8
9#[tokio::main]
10async fn main() -> Result<(), Box<dyn std::error::Error>> {
11 let devices = discover_pnp_locations().await?;
12 tokio::pin!(devices);
13
14 let mut kodi_device: Option<Device> = None;
15 while let Some(device) = devices.next().await {
16 if device.model_description == Some(KODI_MEDIA_SERVER.to_string()) {
18 kodi_device = Some(device);
19 break;
20 }
21 }
22
23 let kodi_device = kodi_device.unwrap();
24 let device_client = DeviceClient::new(&kodi_device.location)?.connect().await?;
25 let media_server_client = MediaServerClient::new(device_client);
26 let results = media_server_client
27 .browse("0", "BrowseDirectChildren")
28 .await?;
29 println!("{:#?}", results);
30 Ok(())
31}