warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified --> pmoserver/src/config_ext.rs:35:5 | 35 | async fn init_config_api(&mut self) -> Result<()>; | ^^^^^ | = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` = note: `#[warn(async_fn_in_trait)]` on by default help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change | 35 - async fn init_config_api(&mut self) -> Result<()>; 35 + fn init_config_api(&mut self) -> impl std::future::Future> + Send; | warning: `pmoserver` (lib) generated 1 warning warning: variable does not need to be mutable --> pmocache/src/cache.rs:604:9 | 604 | mut reader: R, | ----^^^^^^ | | | help: remove this `mut` | = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified --> pmocache/src/cache_trait.rs:97:5 | 97 | async fn add_from_url(&self, url: &str, collection: Option<&str>) -> Result; | ^^^^^ | = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` = note: `#[warn(async_fn_in_trait)]` on by default help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change | 97 - async fn add_from_url(&self, url: &str, collection: Option<&str>) -> Result; 97 + fn add_from_url(&self, url: &str, collection: Option<&str>) -> impl std::future::Future> + Send; | warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified --> pmocache/src/cache_trait.rs:111:5 | 111 | async fn add_from_file(&self, path: &str, collection: Option<&str>) -> Result; | ^^^^^ | = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change | 111 - async fn add_from_file(&self, path: &str, collection: Option<&str>) -> Result; 111 + fn add_from_file(&self, path: &str, collection: Option<&str>) -> impl std::future::Future> + Send; | warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified --> pmocache/src/cache_trait.rs:118:5 | 118 | async fn get(&self, pk: &str) -> Result; | ^^^^^ | = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change | 118 - async fn get(&self, pk: &str) -> Result; 118 + fn get(&self, pk: &str) -> impl std::future::Future> + Send; | warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified --> pmocache/src/cache_trait.rs:125:5 | 125 | async fn get_collection(&self, collection: &str) -> Result>; | ^^^^^ | = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change | 125 - async fn get_collection(&self, collection: &str) -> Result>; 125 + fn get_collection(&self, collection: &str) -> impl std::future::Future>> + Send; | warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified --> pmocache/src/cache_trait.rs:128:5 | 128 | async fn purge(&self) -> Result<()>; | ^^^^^ | = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change | 128 - async fn purge(&self) -> Result<()>; 128 + fn purge(&self) -> impl std::future::Future> + Send; | warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified --> pmocache/src/cache_trait.rs:131:5 | 131 | async fn consolidate(&self) -> Result<()>; | ^^^^^ | = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change | 131 - async fn consolidate(&self) -> Result<()>; 131 + fn consolidate(&self) -> impl std::future::Future> + Send; | warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified --> pmocache/src/cache_trait.rs:147:5 | 147 | async fn is_valid_pk(&self, pk: &str) -> bool { | ^^^^^ | = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change | 147 ~ fn is_valid_pk(&self, pk: &str) -> impl std::future::Future + Send {async { 148 | if self.get_database().get(pk, false).is_err() { ... 218 | false 219 ~ } } | warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified --> pmocache/src/pmoserver_ext.rs:391:5 | 391 | async fn init_generic_cache( | ^^^^^ | = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change | 391 ~ fn init_generic_cache( 392 | &mut self, ... 395 | content_type: &'static str, 396 ~ ) -> impl std::future::Future>>> + Send; | warning: `pmocache` (lib) generated 9 warnings (run `cargo fix --lib -p pmocache` to apply 1 suggestion) warning: unused import: `serde_json::Value` --> pmoaudiocache/src/cache.rs:11:5 | 11 | use serde_json::Value; | ^^^^^^^^^^^^^^^^^ | = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default warning: unused import: `pmometadata::TrackMetadata` --> pmoaudiocache/src/api.rs:11:5 | 11 | use pmometadata::TrackMetadata; | ^^^^^^^^^^^^^^^^^^^^^^^^^^ warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified --> pmoaudiocache/src/lib.rs:188:5 | 188 | async fn init_audio_cache( | ^^^^^ | = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` = note: `#[warn(async_fn_in_trait)]` on by default help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change | 188 ~ fn init_audio_cache( 189 | &mut self, 190 | cache_dir: &str, 191 | limit: usize, 192 ~ ) -> impl std::future::Future>> + Send; | warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified --> pmoaudiocache/src/lib.rs:197:5 | 197 | async fn init_audio_cache_configured(&mut self) -> anyhow::Result>; | ^^^^^ | = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change | 197 - async fn init_audio_cache_configured(&mut self) -> anyhow::Result>; 197 + fn init_audio_cache_configured(&mut self) -> impl std::future::Future>> + Send; | warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified --> pmoaudiocache/src/metadata_ext.rs:36:5 | 36 | async fn get_title(&self, pk: &str) -> anyhow::Result>; | ^^^^^ | = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change | 36 - async fn get_title(&self, pk: &str) -> anyhow::Result>; 36 + fn get_title(&self, pk: &str) -> impl std::future::Future>> + Send; | warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified --> pmoaudiocache/src/metadata_ext.rs:37:5 | 37 | async fn get_artist(&self, pk: &str) -> anyhow::Result>; | ^^^^^ | = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change | 37 - async fn get_artist(&self, pk: &str) -> anyhow::Result>; 37 + fn get_artist(&self, pk: &str) -> impl std::future::Future>> + Send; | warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified --> pmoaudiocache/src/metadata_ext.rs:38:5 | 38 | async fn get_album(&self, pk: &str) -> anyhow::Result>; | ^^^^^ | = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change | 38 - async fn get_album(&self, pk: &str) -> anyhow::Result>; 38 + fn get_album(&self, pk: &str) -> impl std::future::Future>> + Send; | warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified --> pmoaudiocache/src/metadata_ext.rs:39:5 | 39 | async fn get_duration_secs(&self, pk: &str) -> anyhow::Result>; | ^^^^^ | = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change | 39 - async fn get_duration_secs(&self, pk: &str) -> anyhow::Result>; 39 + fn get_duration_secs(&self, pk: &str) -> impl std::future::Future>> + Send; | warning: `pmoaudiocache` (lib) generated 8 warnings (run `cargo fix --lib -p pmoaudiocache` to apply 1 suggestion) warning: unused import: `tokio_stream::StreamExt` --> pmoplaylist/src/sse.rs:16:5 | 16 | use tokio_stream::StreamExt; | ^^^^^^^^^^^^^^^^^^^^^^^ | = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default warning: methods `list_playlist_ids` and `remove_by_cache_pk` are never used --> pmoplaylist/src/persistence/mod.rs:219:18 | 17 | impl PersistenceManager { | ----------------------- methods in this implementation ... 219 | pub async fn list_playlist_ids(&self) -> Result> { | ^^^^^^^^^^^^^^^^^ ... 240 | pub async fn remove_by_cache_pk(&self, cache_pk: &str) -> Result<()> { | ^^^^^^^^^^^^^^^^^^ | = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default warning: function `PlaylistManager` should have a snake case name --> pmoplaylist/src/manager.rs:620:8 | 620 | pub fn PlaylistManager() -> &'static PlaylistManager { | ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `playlist_manager` | = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default warning: `pmoplaylist` (lib) generated 3 warnings warning: unused variable: `base_url` --> pmoupnp/src/upnp_server.rs:306:13 | 306 | let base_url = self.info().base_url.clone(); | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_base_url` | = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified --> pmoupnp/src/upnp_api.rs:229:5 | 229 | async fn register_upnp_api(&mut self); | ^^^^^ | = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` = note: `#[warn(async_fn_in_trait)]` on by default help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change | 229 - async fn register_upnp_api(&mut self); 229 + fn register_upnp_api(&mut self) -> impl std::future::Future + Send; | warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified --> pmoupnp/src/upnp_server.rs:96:5 | 96 | async fn register_device( | ^^^^^ | = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change | 96 ~ fn register_device( 97 | &mut self, 98 | device: Arc, 99 ~ ) -> impl std::future::Future, DeviceError>> + Send; | warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified --> pmoupnp/src/upnp_server.rs:125:5 | 125 | async fn init_cover_cache( | ^^^^^ | = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change | 125 ~ fn init_cover_cache( 126 | &mut self, 127 | cache_dir: &str, 128 | limit: usize, 129 ~ ) -> impl std::future::Future, anyhow::Error>> + Send; | warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified --> pmoupnp/src/upnp_server.rs:144:5 | 144 | async fn init_audio_cache( | ^^^^^ | = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change | 144 ~ fn init_audio_cache( 145 | &mut self, 146 | cache_dir: &str, 147 | limit: usize, 148 ~ ) -> impl std::future::Future, anyhow::Error>> + Send; | warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified --> pmoupnp/src/upnp_server.rs:158:5 | 158 | async fn init_caches(&mut self) -> Result<(Arc, Arc), anyhow::Error>; | ^^^^^ | = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change | 158 - async fn init_caches(&mut self) -> Result<(Arc, Arc), anyhow::Error>; 158 + fn init_caches(&mut self) -> impl std::future::Future, Arc), anyhow::Error>> + Send; | warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified --> pmoupnp/src/upnp_server.rs:225:5 | 225 | async fn create_upnp_server() -> Result>, anyhow::Error>; | ^^^^^ | = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future` help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change | 225 - async fn create_upnp_server() -> Result>, anyhow::Error>; 225 + fn create_upnp_server() -> impl std::future::Future>, anyhow::Error>> + Send; | warning: `pmoupnp` (lib) generated 7 warnings Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.16s Running `target/debug/examples/media_server_events_demo` ControlPoint started; waiting 5s for discovery... Discovered media servers: - BubbleUPnP Media Server (SM-A536B) | model=BubbleUPnP Media Server | udn=uuid:d38a2dc7-13c1-4a39-ab36-513490cf6766 | location=http://192.168.0.98:58645/dev/d38a2dc7-13c1-4a39-ab36-513490cf6766/desc.xml - fenice | model=Jellyfin Server | udn=uuid:526dedec-fde2-4224-bac6-06f7b11711cf | location=http://192.168.0.34:8096/dlna/526dedec-fde2-4224-bac6-06f7b11711cf/description.xml - PMOMusic Media Server | model=PMOMusic Media Server | udn=uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4 | location=http://192.168.0.138:8080/device/17fe2ea6-8908-4e30-bc52-b28ea4cab3e4/desc.xml - Freebox Server | model=Freebox Media Server | udn=uuid:e929a46e-d218-377d-2dde-32bd8080dfbf | location=http://192.168.0.254:52424/device.xml Listening for ContentDirectory events for 90 seconds... [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=27) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:main:history [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=28) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:main:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=30) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:main:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=31) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:main:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=32) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:main:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=33) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:main:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=37) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:main:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=40) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:main:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=41) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:main:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=42) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:main:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=44) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:main:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=45) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:main:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=46) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:main:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=49) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:rock:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=50) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:rock:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=51) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:rock:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=52) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:rock:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=53) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:rock:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=54) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:rock:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=55) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:rock:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=56) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:rock:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=57) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:rock:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=59) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:rock:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=63) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:rock:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=64) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:rock:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=65) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:rock:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=66) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:rock:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=67) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:rock:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=68) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:rock:liveplaylist [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Global content update (SystemUpdateID=69) [PMOMusic Media Server (uuid:17fe2ea6-8908-4e30-bc52-b28ea4cab3e4)] Containers updated: radio-paradise:channel:rock:liveplaylist Monitoring finished.