diff --git a/com.bubblesoft.android.bubbleupnp_log.txt b/com.bubblesoft.android.bubbleupnp_log.txt
deleted file mode 100644
index 2e011821..00000000
--- a/com.bubblesoft.android.bubbleupnp_log.txt
+++ /dev/null
@@ -1,2806 +0,0 @@
-[main (2) ] INFO - 0:00:00.84 - enableLogToFile: opened /storage/emulated/0/Download/com.bubblesoft.android.bubbleupnp_log.txt
-[main (2) ] INFO - 0:00:00.84 - enableLogToFile: logging to file is enabled in 80 ms
-[main (2) ] INFO - 0:00:00.87 - system locale: fr_FR
-[main (2) ] INFO - 0:00:00.88 - app locale: fr_FR
-[main (2) ] INFO - 0:00:00.88 - os.arch: aarch64
-[main (2) ] INFO - 0:00:00.88 - API level: 36
-[main (2) ] INFO - 0:00:00.88 - manufacturer: samsung
-[main (2) ] INFO - 0:00:00.88 - model: SM-A536B
-[main (2) ] INFO - 0:00:00.88 - product: a53xnaeea
-[main (2) ] INFO - 0:00:00.89 - fingerprint: samsung/a53xnaeea/a53x:16/BP2A.250605.031.A3/A536BXXSHGYJ3:user/release-keys
-[main (2) ] INFO - 0:00:00.89 - debuggable: false
-[main (2) ] INFO - 0:00:00.89 - installed on external storage: false
-[main (2) ] INFO - 0:00:00.91 - touch supported: true
-[main (2) ] INFO - 0:00:00.92 - gestural navigation: true
-[main (2) ] INFO - 0:00:00.93 - large memory class: 512
-[main (2) ] INFO - 0:00:00.94 - isSustainedPerformanceModeSupported: false
-[main (2) ] INFO - 0:00:00.94 - SUPPORTED_ABIS: arm64-v8a,armeabi-v7a,armeabi
-[main (2) ] INFO - 0:00:00.94 - app: version: 4.6.1, code: 3000911
-[main (2) ] INFO - 0:00:00.95 - app standby bucket: EXEMPTED
-[main (2) ] INFO - 0:00:00.96 - isBackgroundRestricted: false
-[main (2) ] INFO - 0:00:00.96 - xposed running: false
-[main (2) ] INFO - 0:00:00.98 - isDevMode: true
-[main (2) ] INFO - 0:00:00.110 - app info: true false false true true true 0
-[main (2) ] INFO - 0:00:00.120 - watchdog: set inactivity delay to 15 mins
-[main (2) ] INFO - 0:00:00.121 - useScopedStorage: true
-[main (2) ] INFO - 0:00:00.121 - created file: file:///storage/emulated/0/Android/data/com.bubblesoft.android.bubbleupnp/cache/bubbleupnpserver/.nomedia
-[main (2) ] INFO - 0:00:00.122 - getLocalRendererRemoteControlVideoApp: no package name
-[main (2) ] INFO - 0:00:00.143 - isReadExternalStorageGranted: true
-[main (2) ] INFO - 0:00:00.143 - isWriteExternalStorageGranted: true
-[main (2) ] INFO - 0:00:00.144 - dynamic theming: called AppCompatDelegate.setDefaultNightMode(-1)
-[main (2) ] INFO - 0:00:00.144 - App.onCreate() took: 145 ms
-[main (2) ] INFO - 0:00:00.146 - StrictMode (JB): LAX
-[main (2) ] INFO - 0:00:00.156 - attachBaseContext(base)@9e5576d:-1
-[main (2) ] INFO - 0:00:00.167 - onCreate(): Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 xflg=0x4 cmp=com.bubblesoft.android.bubbleupnp/.MainActivity bnds=[841,188][1041,472] }@9e5576d:5237
-[main (2) ] INFO - 0:00:00.167 - Referrer: android-app://com.sec.android.app.launcher
-[main (2) ] INFO - 0:00:00.207 - attachBaseContext(base)@2e41698:-1
-[main (2) ] INFO - 0:00:00.209 - dynamic theming: isDynamicColorAvailable: true, isRuntimeColorThemeGenAvailable: true
-[main (2) ] INFO - 0:00:00.209 - dynamic theming: theme mode: 0
-[main (2) ] INFO - 0:00:00.210 - dynamic theming: theme overlay applied
-[main (2) ] INFO - 0:00:00.210 - dynamic theming: dark theme: false
-[main (2) ] INFO - 0:00:00.210 - dynamic theming: dialogs elevation overlay enabled: true
-[main (2) ] INFO - 0:00:00.213 - dynamic theming: applied color harmonization
-[main (2) ] INFO - 0:00:00.215 - dynamic theming: initDynamicTheming took: 6 ms
-[main (2) ] INFO - 0:00:00.222 - onCreate(): Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 xflg=0x4 cmp=com.bubblesoft.android.bubbleupnp/.MainTabActivity bnds=[841,188][1041,472] }@2e41698:5237
-[main (2) ] INFO - 0:00:00.227 - dynamic theming: colorPrimary: #ff475d92
-[main (2) ] INFO - 0:00:00.227 - dynamic theming: android:windowBackground: #fffaf8ff
-[main (2) ] INFO - 0:00:00.228 - dynamic theming: android:colorbackground: #fffaf8ff
-[main (2) ] INFO - 0:00:00.229 - startAndBindServiceWithRetry: retryOnFailure true
-[Main #1 (179) ] INFO - 0:00:00.293 - task: start: getSearchableInfo
-[Main #1 (179) ] INFO - 0:00:00.294 - task: end, 1ms: getSearchableInfo
-[main (2) ] INFO - 0:00:00.299 - remote config: FirebaseApp: true
-[main (2) ] INFO - 0:00:00.303 - MainTabActivity.onCreate() took: 94 ms
-[main (2) ] INFO - 0:00:00.304 - onStart()@2e41698:5237
-[main (2) ] INFO - 0:00:00.307 - onPostCreate()@2e41698:5237
-[main (2) ] INFO - 0:00:00.307 - startup page index: 0
-[main (2) ] INFO - 0:00:00.308 - onResume()@2e41698:5237
-[main (2) ] INFO - 0:00:00.330 - Insets: Insets{left=0, top=88, right=0, bottom=45}
-[main (2) ] INFO - 0:00:00.359 - onAttach()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:00:00.360 - onCreate()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:00:00.361 - onCreateView()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:00:00.378 - setSeekBarDetailsText:
-[main (2) ] INFO - 0:00:00.378 - tidal: cache folder: /data/user/0/com.bubblesoft.android.bubbleupnp/cache
-[main (2) ] INFO - 0:00:00.379 - qobuz: username: set
-[main (2) ] INFO - 0:00:00.379 - qobuz: cache folder: /data/user/0/com.bubblesoft.android.bubbleupnp/cache
-[main (2) ] INFO - 0:00:00.379 - NowPlayingFragment.onCreateView() took: 19 ms
-[main (2) ] INFO - 0:00:00.380 - onActivityCreated()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:00:00.381 - onStart()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:00:00.382 - onResume()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:00:00.384 - onAttach()@5f65d35/2e41698:5237
-[main (2) ] INFO - 0:00:00.385 - onCreate()@5f65d35/2e41698:5237
-[main (2) ] INFO - 0:00:00.385 - onCreateView()@5f65d35/2e41698:5237
-[main (2) ] INFO - 0:00:00.394 - PlaylistFragment.onCreateView() took: 9 ms
-[main (2) ] INFO - 0:00:00.395 - onActivityCreated()@5f65d35/2e41698:5237
-[main (2) ] INFO - 0:00:00.395 - onStart()@5f65d35/2e41698:5237
-[main (2) ] INFO - 0:00:00.404 - onAttach()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:00.404 - onCreate()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:00.405 - onCreateView()@ec98be8/2e41698:5237
-[Main #1 (179) ] INFO - 0:00:00.426 - task: start: getSearchableInfo
-[main (2) ] INFO - 0:00:00.426 - LibraryFragment.onCreateView() took: 21 ms
-[Main #1 (179) ] INFO - 0:00:00.427 - task: end, 1ms: getSearchableInfo
-[main (2) ] INFO - 0:00:00.427 - onActivityCreated()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:00.427 - onStart()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:00.430 - setSeekBarDetailsText:
-[main (2) ] INFO - 0:00:00.464 - display: screen generalized size: normal
-[main (2) ] INFO - 0:00:00.464 - display: screen generalized density: 480 dpi
-[main (2) ] INFO - 0:00:00.465 - display: logical density factor: 3.000000
-[main (2) ] INFO - 0:00:00.465 - display: screen size (pixels, Display.getSize()): 1080x2400
-[main (2) ] INFO - 0:00:00.465 - display: screen size (pixels, displayMetrics): 1080x2400
-[main (2) ] INFO - 0:00:00.465 - display: screen size (dp): 360x800
-[main (2) ] INFO - 0:00:00.465 - display: screen size (conf: screenWidthDp x screenHeightDp) (dp): 360x800
-[main (2) ] INFO - 0:00:00.465 - display: smallest width (dp): 360
-[main (2) ] INFO - 0:00:00.465 - display: screen size (inches): 2.637801x5.905512, diagonal: 6.467848
-[main (2) ] INFO - 0:00:00.465 - display: screen size aspect ratio (h/w): 2.222222
-[main (2) ] INFO - 0:00:00.465 - display: isTallActivity: true
-[main (2) ] INFO - 0:00:00.466 - display: isInMultiWindowMode: false
-[main (2) ] INFO - 0:00:00.466 - display: xdpi: 409.432007
-[main (2) ] INFO - 0:00:00.466 - display: ydpi: 406.399994
-[main (2) ] INFO - 0:00:00.466 - display: landscape: false
-[main (2) ] INFO - 0:00:00.466 - display: isPhoneSize: true
-[main (2) ] INFO - 0:00:00.466 - display: E2E35.isEnforced: true
-[main (2) ] INFO - 0:00:00.466 - onCreate
-[main (2) ] INFO - 0:00:00.473 - doStartForeground: calling startForeground(), fromOnStartCommand: false, serviceType: 2
-[main (2) ] INFO - 0:00:00.484 - isCustomNotificationExitButtonSupported: true
-[main (2) ] WARNING - 0:00:00.492 - failed to set FFmpeg executable
-[main (2) ] INFO - 0:00:00.496 - ffmpeg process started, timeout: 0s: -version
-[main (2) ] INFO - 0:00:00.682 - runFFMPEG: finished ffmpeg process took: 190 ms
-[main (2) ] INFO - 0:00:00.682 - runFFMPEG: written 2136 bytes
-[main (2) ] INFO - 0:00:00.683 - ffmpeg version N-118170-g7e778586e7-bubblesoftapps.com Copyright (c) 2000-2024 the FFmpeg developers
-built with Android (6875598, based on r399163b) clang version 11.0.5 (https://android.googlesource.com/toolchain/llvm-project 87f1315dfbea7c137aa2e6d362dbb457e388158d)
-configuration: --target-os=android --cross-prefix=/home/bobbie/ffmpeg-android/toolchain-android/bin/aarch64-linux-android- --arch=aarch64 --cpu=armv8-a --sysroot=/home/bobbie/ffmpeg-android/toolchain-android/sysroot --pkg-config=/home/bobbie/ffmpeg-android/ffmpeg-pkg-config --prefix=/home/bobbie/ffmpeg-android/build/arm64-v8a --extra-cflags='-I/home/bobbie/ffmpeg-android/toolchain-android/include -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all -fPIE -fPIC' --extra-ldflags='-Wl,-z,max-page-size=16384 -fuse-ld=gold -L/home/bobbie/ffmpeg-android/toolchain-android/lib64 -L/home/bobbie/ffmpeg-android/toolchain-android/lib -Wl,-z,relro -Wl,-z,now -pie -Wl,--fix-cortex-a8 -Wl,-z,max-page-size=16384' --extra-libs='-lhogweed -lnettle -lgmp -lvorbis -logg -lm -lz' --extra-cxxflags= --extra-version=bubblesoftapps.com --disable-shared --disable-debug --disable-programs --disable-doc --disable-avdevice --disable-postproc --disable-protocols --disable-protocol='rtp,udp' --disable-encoders --disable-filters --disable-libv4l2 --enable-gpl --enable-version3 --enable-pic --enable-static --enable-ffmpeg --enable-libxml2 --enable-gnutls --enable-protocol='fd,http,https,pipe,crypto,file' --enable-encoder='aac,libmp3lame,libopus,ac3,eac3,pcm_s16le,pcm_s16be,pcm_s24le,pcm_s24be,flac,libvorbis,mjpeg,libx264,srt,wrapped_avframe,h264_mediacodec,png,pcm_s32le,pcm_s32be' --enable-filter='aresample,volume,afir,replaygain,scale,setsar,setdar' --enable-demuxer=dash --enable-libmp3lame --enable-libopus --enable-libsoxr --enable-libvorbis --enable-libx264 --enable-jni --enable-mediacodec --enable-hwaccels
-libavutil 59. 53.100 / 59. 53.100
-libavcodec 61. 28.100 / 61. 28.100
-libavformat 61. 9.101 / 61. 9.101
-libavfilter 10. 6.101 / 10. 6.101
-libswscale 8. 13.100 / 8. 13.100
-libswresample 5. 4.100 / 5. 4.100
-
-[main (2) ] INFO - 0:00:00.683 - FFmpeg executable: /data/app/~~rP3Ghg18CfximalIH4RRoQ==/com.bubblesoft.android.bubbleupnp-vax1mni2sS4Ql7kqL8ugMA==/lib/arm64/libffmpeg.so
-[main (2) ] INFO - 0:00:00.684 - renderer chooser target: loaded 1 targets
-[Main #1 (179) ] INFO - 0:00:00.684 - task: start: publishRendererChooserTargets
-[main (2) ] INFO - 0:00:00.687 - created Apache HttpClient
-[Main #1 (179) ] INFO - 0:00:00.697 - task: end, 13ms: publishRendererChooserTargets
-[Main #1 (179) ] INFO - 0:00:00.700 - task: start: DownloadManager
-[Main #1: DownloadManager (179) ] INFO - 0:00:00.700 - waiting for download requests...
-[main (2) ] INFO - 0:00:00.701 - .d : default UPnP action timeout: 30s
-[main (2) ] INFO - 0:00:00.701 - StreamRequestMessage short connect timeout: 1000
-[main (2) ] INFO - 0:00:00.702 - .d : >>> Starting UPnP service...
-[main (2) ] INFO - 0:00:00.703 - .d : Using configuration: com.bubblesoft.android.bubbleupnp.AndroidUpnpService$u0
-[main (2) ] INFO - 0:00:00.706 - .d : <<< UPnP service started successfully
-[main (2) ] INFO - 0:00:00.707 - local renderer gapless support: false
-[main (2) ] INFO - 0:00:00.726 - MediaPlayerRenderer.setVolume(): 14
-[main (2) ] INFO - 0:00:00.731 - local renderer audio session id: 2065, send intent delay: 500
-[main (2) ] INFO - 0:00:00.743 - local renderer: RenderingControl service max volume: 15
-[main (2) ] INFO - 0:00:00.743 - MediaRenderer LastChange thread: initial last change running: false
-[Main #2 (199) ] INFO - 0:00:00.744 - task: start: MediaRenderer-LastChange
-[Main #2: MediaRenderer-LastChange (199) ] INFO - 0:00:00.744 - MediaRenderer LastChange thread: stopped
-[main (2) ] INFO - 0:00:00.745 - created local renderer
-[main (2) ] INFO - 0:00:00.746 - OpenHome local renderer is disabled
-[main (2) ] INFO - 0:00:00.751 - starting Jetty...
-[main (2) ] INFO - 0:00:00.752 - createConnector: type: 3
-[main (2) ] INFO - 0:00:00.755 - external storage available: true, root directory: /storage/emulated/0, state: mounted, path: null
-[Main #3 (201) ] INFO - 0:00:00.757 - task: start: checkAlbumArtistColumnSupport
-[main (2) ] INFO - 0:00:00.757 - audio cast fifo exists: /data/data/com.bubblesoft.android.bubbleupnp/audiocast
-[Main #3: checkAlbumArtistColumnSupport (] INFO - 0:00:00.757 - Album Artist column supported (from pref): false
-[Main #3 (201) ] INFO - 0:00:00.757 - task: end, 0ms: checkAlbumArtistColumnSupport
-[main (2) ] INFO - 0:00:00.760 - audio cast fifo exists: /data/data/com.bubblesoft.android.bubbleupnp/audiocast
-[main (2) ] INFO - 0:00:00.760 - excluded remote directories: []
-[main (2) ] INFO - 0:00:00.763 - jetty-7.x.y-SNAPSHOT
-[main (2) ] INFO - 0:00:00.766 - started {}
-[main (2) ] INFO - 0:00:00.767 - started {}
-[main (2) ] INFO - 0:00:00.767 - started {}
-[main (2) ] INFO - 0:00:00.767 - started {}
-[main (2) ] INFO - 0:00:00.768 - started {}
-[main (2) ] INFO - 0:00:00.768 - started {}
-[main (2) ] INFO - 0:00:00.769 - started {}
-[main (2) ] INFO - 0:00:00.769 - started {}
-[main (2) ] INFO - 0:00:00.769 - started {}
-[main (2) ] INFO - 0:00:00.771 - Started {}
-[main (2) ] INFO - 0:00:00.772 - started Jetty
-[main (2) ] WARNING - 0:00:00.774 - smb: failed to load: /data/user/0/com.bubblesoft.android.bubbleupnp/files/smbshares: java.io.FileNotFoundException: /data/user/0/com.bubblesoft.android.bubbleupnp/files/smbshares: open failed: ENOENT (No such file or directory)
-[main (2) ] INFO - 0:00:00.774 - smb: setLocalIpAddress: null
-[main (2) ] INFO - 0:00:00.774 - added local media server to registry
-[main (2) ] INFO - 0:00:00.774 - created local media server
-[main (2) ] INFO - 0:00:00.775 - initBatterySavingMode: false
-[main (2) ] WARNING - 0:00:00.775 - discovery maintenance: executor already stopped
-[main (2) ] INFO - 0:00:00.775 - .b : WiFi lock acquired
-[main (2) ] INFO - 0:00:00.793 - wake lock acquired
-[main (2) ] INFO - 0:00:00.795 - initBatterySavingMode: added MediaRouter callback
-[main (2) ] INFO - 0:00:00.796 - .b : network type changed => WIFI
-[main (2) ] WARNING - 0:00:00.796 - .b : WiFi multicast lock already released
-[main (2) ] INFO - 0:00:00.796 - .b : WiFi lock released
-[main (2) ] INFO - 0:00:00.803 - .a : Creating Router: xr.b$a
-[main (2) ] WARNING - 0:00:00.805 - .f : Network interface reports it is not multicast capable: dummy0
-[main (2) ] WARNING - 0:00:00.805 - .f : Network interface reports it is not multicast capable: lo
-[main (2) ] INFO - 0:00:00.806 - .f : Skipping unsupported non-IPv4 address: /fe80::6aba:a4eb:8bbb:193e%epdg1
-[main (2) ] INFO - 0:00:00.806 - .f : Skipping unsupported non-IPv4 address: /fe80::24a5:caff:fecb:20a%dummy0
-[main (2) ] INFO - 0:00:00.806 - .f : Skipping unsupported non-IPv4 address: /fe80::1c35:9cff:fe48:4f02%wlan0
-[main (2) ] INFO - 0:00:00.806 - .f : Skipping unsupported non-IPv4 address: /2a01:e0a:db2:76f0:1c35:9cff:fe48:4f02
-[main (2) ] INFO - 0:00:00.806 - .f : Skipping unsupported non-IPv4 address: /2a01:e0a:db2:76f0:2459:6fe5:13c0:a045
-[main (2) ] INFO - 0:00:00.807 - .f : Skipping unsupported non-IPv4 address: /fdde:0:31df:4f52::1288:da64
-[main (2) ] INFO - 0:00:00.807 - .f : Skipping unsupported non-IPv4 address: /::1
-[main (2) ] INFO - 0:00:00.807 - .f : Display name: wlan0
-[main (2) ] INFO - 0:00:00.807 - .f : Name: wlan0
-[main (2) ] INFO - 0:00:00.807 - .f : InetAddress: /fe80::1c35:9cff:fe48:4f02%wlan0
-[main (2) ] INFO - 0:00:00.807 - .f : InetAddress: /2a01:e0a:db2:76f0:1c35:9cff:fe48:4f02
-[main (2) ] INFO - 0:00:00.807 - .f : InetAddress: /2a01:e0a:db2:76f0:2459:6fe5:13c0:a045
-[main (2) ] INFO - 0:00:00.807 - .f : InetAddress: /192.168.0.98
-[main (2) ] INFO - 0:00:00.807 - .f : Interface Address
-[main (2) ] INFO - 0:00:00.808 - .f : Address: /fe80::1c35:9cff:fe48:4f02%wlan0
-[main (2) ] INFO - 0:00:00.808 - .f : Broadcast: null
-[main (2) ] INFO - 0:00:00.808 - .f : Prefix length: 64
-[main (2) ] INFO - 0:00:00.808 - .f : Interface Address
-[main (2) ] INFO - 0:00:00.808 - .f : Address: /2a01:e0a:db2:76f0:1c35:9cff:fe48:4f02
-[main (2) ] INFO - 0:00:00.808 - .f : Broadcast: null
-[main (2) ] INFO - 0:00:00.808 - .f : Prefix length: 64
-[main (2) ] INFO - 0:00:00.808 - .f : Interface Address
-[main (2) ] INFO - 0:00:00.809 - .f : Address: /2a01:e0a:db2:76f0:2459:6fe5:13c0:a045
-[main (2) ] INFO - 0:00:00.809 - .f : Broadcast: null
-[main (2) ] INFO - 0:00:00.809 - .f : Prefix length: 64
-[main (2) ] INFO - 0:00:00.809 - .f : Interface Address
-[main (2) ] INFO - 0:00:00.809 - .f : Address: /192.168.0.98
-[main (2) ] INFO - 0:00:00.809 - .f : Broadcast: /192.168.0.255
-[main (2) ] INFO - 0:00:00.809 - .f : Prefix length: 24
-[main (2) ] INFO - 0:00:00.809 - .f : Up? true
-[main (2) ] INFO - 0:00:00.809 - .f : Loopback? false
-[main (2) ] INFO - 0:00:00.810 - .f : PointToPoint? false
-[main (2) ] INFO - 0:00:00.810 - .f : Supports multicast? true
-[main (2) ] INFO - 0:00:00.810 - .f : Virtual? false
-[main (2) ] INFO - 0:00:00.810 - .f : Hardware address: null
-[main (2) ] INFO - 0:00:00.811 - .f : MTU: 1500
-[main (2) ] INFO - 0:00:00.811 - .f : Display name: lo
-[main (2) ] INFO - 0:00:00.811 - .f : Name: lo
-[main (2) ] INFO - 0:00:00.811 - .f : InetAddress: /::1
-[main (2) ] INFO - 0:00:00.811 - .f : InetAddress: /127.0.0.1
-[main (2) ] INFO - 0:00:00.811 - .f : Interface Address
-[main (2) ] INFO - 0:00:00.811 - .f : Address: /::1
-[main (2) ] INFO - 0:00:00.811 - .f : Broadcast: null
-[main (2) ] INFO - 0:00:00.812 - .f : Prefix length: 128
-[main (2) ] INFO - 0:00:00.812 - .f : Interface Address
-[main (2) ] INFO - 0:00:00.812 - .f : Address: /127.0.0.1
-[main (2) ] INFO - 0:00:00.812 - .f : Broadcast: null
-[main (2) ] INFO - 0:00:00.812 - .f : Prefix length: 8
-[main (2) ] INFO - 0:00:00.812 - .f : Up? true
-[main (2) ] INFO - 0:00:00.812 - .f : Loopback? true
-[main (2) ] INFO - 0:00:00.812 - .f : PointToPoint? false
-[main (2) ] INFO - 0:00:00.813 - .f : Supports multicast? false
-[main (2) ] INFO - 0:00:00.813 - .f : Virtual? false
-[main (2) ] INFO - 0:00:00.813 - .f : Hardware address: null
-[main (2) ] INFO - 0:00:00.813 - .f : MTU: 65536
-[main (2) ] INFO - 0:00:00.814 - .i : /127.0.0.1:58645: created socket (for receiving TCP streams)
-[main (2) ] INFO - 0:00:00.814 - .i : /192.168.0.98:58645: created socket (for receiving TCP streams)
-[main (2) ] INFO - 0:00:00.815 - .e : wlan0: Creating wildcard socket (for receiving multicast datagrams) on port: 1900
-[main (2) ] INFO - 0:00:00.815 - .e : wlan0: Joining multicast group: /239.255.255.250:1900
-[main (2) ] INFO - 0:00:00.816 - .e : lo: Creating wildcard socket (for receiving multicast datagrams) on port: 1900
-[main (2) ] INFO - 0:00:00.816 - .e : lo: Joining multicast group: /239.255.255.250:1900
-[main (2) ] INFO - 0:00:00.816 - .a : Creating bound socket (for datagram input/output) on: /127.0.0.1
-[main (2) ] INFO - 0:00:00.817 - .a : Creating bound socket (for datagram input/output) on: /192.168.0.98
-[main (2) ] INFO - 0:00:00.817 - .b : WiFi multicast lock acquired
-[main (2) ] INFO - 0:00:00.819 - .b : WiFi lock acquired
-[main (2) ] INFO - 0:00:00.826 - .b : enabled router on network type change (new network: WIFI)
-[main (2) ] INFO - 0:00:00.826 - inspecting new device: La glouglou mobile
-[main (2) ] INFO - 0:00:00.827 - La glouglou mobile : No product service found
-[main (2) ] INFO - 0:00:00.827 - La glouglou mobile : volume range: 0..15
-[main (2) ] INFO - 0:00:00.827 - La glouglou mobile : supports SetNextAVTransportURI: false
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.861 - codec name: c2.sec.amrnb.decoder, supported types: audio/3gpp
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.862 - codec name: c2.sec.amrwb.decoder, supported types: audio/amr-wb
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.862 - codec name: c2.sec.flac.decoder, supported types: audio/flac
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.862 - codec name: c2.sec.ima.decoder, supported types: audio/x-ima
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.862 - codec name: c2.sec.mp3.decoder.mpeg, supported types: audio/mpeg
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.862 - codec name: c2.sec.mp3.decoder, supported types: audio/mpeg
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.862 - codec name: c2.sec.mp3.decoder.mpeg-L1, supported types: audio/mpeg-L1
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.862 - codec name: c2.sec.mp3.decoder.mpeg-L2, supported types: audio/mpeg-L2
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.863 - codec name: c2.sec.vc1.decoder.wvc1, supported types: video/wvc1
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.863 - codec name: c2.sec.vc1.decoder, supported types: video/wvc1
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.863 - codec name: c2.sec.vc1.decoder.x-ms-wmv, supported types: video/x-ms-wmv
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.863 - codec name: c2.dolby.ac4.decoder, supported types: audio/ac4
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.863 - codec name: OMX.dolby.ac4.decoder, supported types: audio/ac4
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.863 - codec name: c2.dolby.eac3.decoder.ac3, supported types: audio/ac3
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.863 - codec name: c2.dolby.eac3.decoder, supported types: audio/ac3
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.863 - codec name: c2.dolby.eac3.decoder.eac3, supported types: audio/eac3
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.863 - codec name: c2.dolby.eac3.decoder.eac3-joc, supported types: audio/eac3-joc
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.863 - codec name: c2.android.aac.decoder, supported types: audio/mp4a-latm
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.863 - codec name: OMX.google.aac.decoder, supported types: audio/mp4a-latm
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.863 - codec name: c2.android.amrnb.decoder, supported types: audio/3gpp
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.864 - codec name: OMX.google.amrnb.decoder, supported types: audio/3gpp
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.864 - codec name: c2.android.amrwb.decoder, supported types: audio/amr-wb
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.864 - codec name: OMX.google.amrwb.decoder, supported types: audio/amr-wb
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.864 - codec name: c2.android.flac.decoder, supported types: audio/flac
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.864 - codec name: OMX.google.flac.decoder, supported types: audio/flac
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.864 - codec name: c2.android.g711.alaw.decoder, supported types: audio/g711-alaw
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.864 - codec name: OMX.google.g711.alaw.decoder, supported types: audio/g711-alaw
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.864 - codec name: c2.android.g711.mlaw.decoder, supported types: audio/g711-mlaw
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.864 - codec name: OMX.google.g711.mlaw.decoder, supported types: audio/g711-mlaw
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.865 - codec name: c2.android.gsm.decoder, supported types: audio/gsm
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.865 - codec name: OMX.google.gsm.decoder, supported types: audio/gsm
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.865 - codec name: c2.android.mp3.decoder, supported types: audio/mpeg
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.865 - codec name: OMX.google.mp3.decoder, supported types: audio/mpeg
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.865 - codec name: c2.android.opus.decoder, supported types: audio/opus
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.865 - codec name: OMX.google.opus.decoder, supported types: audio/opus
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.865 - codec name: c2.android.raw.decoder, supported types: audio/raw
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.865 - codec name: OMX.google.raw.decoder, supported types: audio/raw
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.865 - codec name: c2.android.vorbis.decoder, supported types: audio/vorbis
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.865 - codec name: OMX.google.vorbis.decoder, supported types: audio/vorbis
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.865 - codec name: c2.exynos.h264.decoder, supported types: video/avc
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.866 - codec name: OMX.Exynos.avc.dec, supported types: video/avc
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.866 - codec name: c2.exynos.h264.decoder.secure, supported types: video/avc
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.866 - codec name: c2.exynos.hevc.decoder, supported types: video/hevc
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.866 - codec name: OMX.Exynos.hevc.dec, supported types: video/hevc
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.866 - codec name: c2.exynos.hevc.decoder.secure, supported types: video/hevc
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.866 - codec name: c2.exynos.vp8.decoder, supported types: video/x-vnd.on2.vp8
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.866 - codec name: OMX.Exynos.vp8.dec, supported types: video/x-vnd.on2.vp8
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.866 - codec name: c2.sec.mpeg4.decoder, supported types: video/mp4v-es
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.866 - codec name: c2.android.apv.decoder, supported types: video/apv
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.866 - codec name: c2.android.av1-dav1d.decoder, supported types: video/av01
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.866 - codec name: c2.android.avc.decoder, supported types: video/avc
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.866 - codec name: OMX.google.h264.decoder, supported types: video/avc
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.867 - codec name: c2.android.h263.decoder, supported types: video/3gpp
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.867 - codec name: OMX.google.h263.decoder, supported types: video/3gpp
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.867 - codec name: c2.android.hevc.decoder, supported types: video/hevc
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.867 - codec name: OMX.google.hevc.decoder, supported types: video/hevc
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.867 - codec name: c2.android.mpeg4.decoder, supported types: video/mp4v-es
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.867 - codec name: OMX.google.mpeg4.decoder, supported types: video/mp4v-es
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.867 - codec name: c2.android.vp8.decoder, supported types: video/x-vnd.on2.vp8
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.867 - codec name: OMX.google.vp8.decoder, supported types: video/x-vnd.on2.vp8
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.867 - codec name: c2.android.vp9.decoder, supported types: video/x-vnd.on2.vp9
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.867 - codec name: OMX.google.vp9.decoder, supported types: video/x-vnd.on2.vp9
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.867 - codec name: c2.android.av1.decoder, supported types: video/av01
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.868 - stock audio codecs: OPUS, FLAC, WAV, MP3, MP2, MP1, AAC, M4A, OGG, DFF, DSF, DSD
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.868 - non-stock audio codecs: AIFF, L16, L24, Musepack, WavPack, TAK, AMR, AC3, MKA, MPEG-DASH, DTS, Monkey's Audio, WMA
-[cling-8 (GetProtocolInfo) (210) ] INFO - 0:00:00.869 - StockAudioSupport initialization took: 41 ms
-[main (2) ] INFO - 0:00:00.870 - La glouglou mobile : protocolInfo: http-get:*:audio/opus:*,http-get:*:audio/x-flac:*,http-get:*:application/flac:*,http-get:*:audio/flac:*,http-get:*:application/x-flac:*,http-get:*:audio/wav:*,http-get:*:application/x-wave:*,http-get:*:audio/wave:*,http-get:*:application/wave:*,http-get:*:application/wav:*,http-get:*:application/x-wav:*,http-get:*:audio/x-wave:*,http-get:*:audio/x-wav:*,http-get:*:audio/mp3:*,http-get:*:application/mp3:*,http-get:*:application/x-mp3:*,http-get:*:audio/mpg:*,http-get:*:audio/mpeg3:*,http-get:*:application/mpeg:*,http-get:*:audio/x-mp3:*,http-get:*:audio/x-mpegaudio:*,http-get:*:audio/mpeg:*,http-get:*:audio/x-mpeg3:*,http-get:*:audio/x-mpg:*,http-get:*:audio/x-mpeg:*,http-get:*:application/mpeg3:*,http-get:*:audio/mp2:*,http-get:*:application/mp2:*,http-get:*:audio/mp1:*,http-get:*:application/mp1:*,http-get:*:audio/aacp:*,http-get:*:audio/aac:*,http-get:*:audio/3gpp:*,http-get:*:audio/3gpp2:*,http-get:*:audio/x-aac:*,http-get:*:audio/m4a:*,http-get:*:audio/mp4:*,http-get:*:application/x-m4b:*,http-get:*:application/x-m4a:*,http-get:*:application/x-m4p:*,http-get:*:application/x-mp4:*,http-get:*:audio/mpeg4:*,http-get:*:audio/x-m4b:*,http-get:*:audio/x-m4a:*,http-get:*:audio/x-m4p:*,http-get:*:audio/x-mp4:*,http-get:*:application/mpeg4:*,http-get:*:audio/x-ogg:*,http-get:*:application/x-ogg:*,http-get:*:audio/vorbis:*,http-get:*:application/ogg:*,http-get:*:audio/ogg:*,http-get:*:audio/dff:*,http-get:*:audio/x-dff:*,http-get:*:audio/x-dsf:*,http-get:*:audio/dsf:*,http-get:*:audio/x-dsd:*,http-get:*:audio/dsd:*,http-get:*:audio/x-scpls:*,http-get:*:application/aiff:*,http-get:*:audio/aiff:*,http-get:*:application/x-aif:*,http-get:*:application/aif:*,http-get:*:application/x-aiff:*,http-get:*:audio/x-aifc:*,http-get:*:audio/x-aiff:*,http-get:*:audio/aif:*,http-get:*:audio/aifc:*,http-get:*:audio/x-aif:*,http-get:*:audio/L16:*,http-get:*:audio/l24:*,http-get:*:audio/L24:*,http-get:*:audio/mpc:*,http-get:*:application/musepack:*,http-get:*:application/x-mpc:*,http-get:*:application/mpc:*,http-get:*:audio/musepack:*,http-get:*:application/x-musepack:*,http-get:*:audio/x-mpc:*,http-get:*:audio/x-musepack:*,http-get:*:audio/wavpack:*,http-get:*:application/x-wavpack:*,http-get:*:audio/x-wv:*,http-get:*:application/wavpack:*,http-get:*:audio/wv:*,http-get:*:audio/x-wavpack:*,http-get:*:application/wv:*,http-get:*:application/x-wv:*,http-get:*:audio/x-tak:*,http-get:*:audio/tak:*,http-get:*:audio/amr:*,http-get:*:audio/ac3:*,http-get:*:audio/x-matroska:*,http-get:*:application/dash+xml:*,http-get:*:audio/x-dts:*,http-get:*:audio/vnd-dts:*,http-get:*:application/ape:*,http-get:*:application/x-ape:*,http-get:*:audio/monkeys-audio:*,http-get:*:audio/x-monkeys-audio:*,http-get:*:audio/ape:*,http-get:*:application/monkeysaudio:*,http-get:*:audio/x-monkeysaudio:*,http-get:*:application/monkeys-audio:*,http-get:*:audio/x-ape:*,http-get:*:application/x-monkeys-audio:*,http-get:*:application/x-monkeysaudio:*,http-get:*:audio/monkeysaudio:*,http-get:*:audio/x-ms-wma:*,http-get:*:application/x-ms-wma:*,http-get:*:application/wma:*,http-get:*:audio/wma:*,http-get:*:audio/L16:*,http-get:*:audio/L16;channels=1;rate=11025:*,http-get:*:audio/L16;channels=1;rate=22050:*,http-get:*:audio/L16;channels=1;rate=44100:*,http-get:*:audio/L16;channels=1;rate=48000:*,http-get:*:audio/L16;channels=1;rate=88200:*,http-get:*:audio/L16;channels=1;rate=96000:*,http-get:*:audio/L16;channels=1;rate=176400:*,http-get:*:audio/L16;channels=1;rate=192000:*,http-get:*:audio/L16;channels=2;rate=11025:*,http-get:*:audio/L16;channels=2;rate=22050:*,http-get:*:audio/L16;channels=2;rate=44100:*,http-get:*:audio/L16;channels=2;rate=48000:*,http-get:*:audio/L16;channels=2;rate=88200:*,http-get:*:audio/L16;channels=2;rate=96000:*,http-get:*:audio/L16;channels=2;rate=176400:*,http-get:*:audio/L16;channels=2;rate=192000:*,http-get:*:audio/L16;channels=6;rate=11025:*,http-get:*:audio/L16;channels=6;rate=22050:*,http-get:*:audio/L16;channels=6;rate=44100:*,http-get:*:audio/L16;channels=6;rate=48000:*,http-get:*:audio/L16;channels=6;rate=88200:*,http-get:*:audio/L16;channels=6;rate=96000:*,http-get:*:audio/L16;channels=6;rate=176400:*,http-get:*:audio/L16;channels=6;rate=192000:*,http-get:*:audio/L16;channels=8;rate=11025:*,http-get:*:audio/L16;channels=8;rate=22050:*,http-get:*:audio/L16;channels=8;rate=44100:*,http-get:*:audio/L16;channels=8;rate=48000:*,http-get:*:audio/L16;channels=8;rate=88200:*,http-get:*:audio/L16;channels=8;rate=96000:*,http-get:*:audio/L16;channels=8;rate=176400:*,http-get:*:audio/L16;channels=8;rate=192000:*,http-get:*:video/vnd.dlna.mpeg-tts:*,http-get:*:video/mpeg2:*,http-get:*:video/mpeg:*,http-get:*:application/vnd.apple.mpegurl:*,http-get:*:application/x-mpegurl:*,http-get:*:video/x-m4v:*,http-get:*:video/mp4v-es:*,http-get:*:video/mp4:*,http-get:*:video/mp2ts:*,http-get:*:video/mp2t:*,http-get:*:video/quicktime:*,http-get:*:video/x-ms-wmv:*,http-get:*:video/x-ms-asf:*,http-get:*:video/x-ms-video:*,http-get:*:video/divx:*,http-get:*:video/vnd.divx:*,http-get:*:video/x-divx:*,http-get:*:video/x-ms-avi:*,http-get:*:video/avi:*,http-get:*:video/x-msvideo:*,http-get:*:video/x-mkv:*,http-get:*:video/mkv:*,http-get:*:video/x-matroska:*,http-get:*:video/ogg:*,http-get:*:video/3gpp:*,http-get:*:video/webm:*,http-get:*:application/flv:*,http-get:*:video/x-flv:*,http-get:*:video/flv:*,http-get:*:video/wtv:*,http-get:*:application/vnd.rn-realmedia-vbr:*,http-get:*:video/vnd.rn-realvideo:*,http-get:*:application/vnd.rn-realmedia:*,http-get:*:image/png:*,http-get:*:image/jpeg:*,http-get:*:image/bmp:*,http-get:*:image/gif:*,http-get:*:image/jpg:*,http-get:*:image/heic:*,http-get:*:image/webp:*,http-get:*:image/mpo:*
-[main (2) ] INFO - 0:00:00.871 - La glouglou mobile : discarding problematic mime-type: audio/l24
-[main (2) ] INFO - 0:00:00.871 - La glouglou mobile : discarding problematic mime-type: audio/l24
-[main (2) ] INFO - 0:00:00.871 - La glouglou mobile : adding all DSD mime-types
-[main (2) ] INFO - 0:00:00.871 - La glouglou mobile : max samplerate: -1, supports 24-bit: true, supports multichannel: true
-[main (2) ] INFO - 0:00:00.872 - La glouglou mobile : supported mime-types: [audio/opus, audio/x-flac, application/flac, audio/flac, application/x-flac, audio/wav, application/x-wave, audio/wave, application/wave, application/wav, application/x-wav, audio/x-wave, audio/x-wav, audio/mp3, application/mp3, application/x-mp3, audio/mpg, audio/mpeg3, application/mpeg, audio/x-mp3, audio/x-mpegaudio, audio/mpeg, audio/x-mpeg3, audio/x-mpg, audio/x-mpeg, application/mpeg3, audio/mp2, application/mp2, audio/mp1, application/mp1, audio/aacp, audio/aac, audio/3gpp, audio/3gpp2, audio/x-aac, audio/m4a, audio/mp4, application/x-m4b, application/x-m4a, application/x-m4p, application/x-mp4, audio/mpeg4, audio/x-m4b, audio/x-m4a, audio/x-m4p, audio/x-mp4, application/mpeg4, audio/x-ogg, application/x-ogg, audio/vorbis, application/ogg, audio/ogg, audio/dff, audio/x-dff, audio/x-dsf, audio/dsf, audio/x-dsd, audio/dsd, audio/x-scpls, application/aiff, audio/aiff, application/x-aif, application/aif, application/x-aiff, audio/x-aifc, audio/x-aiff, audio/aif, audio/aifc, audio/x-aif, audio/lpcm, audio/L16, audio/l16, audio/mpc, application/musepack, application/x-mpc, application/mpc, audio/musepack, application/x-musepack, audio/x-mpc, audio/x-musepack, audio/wavpack, application/x-wavpack, audio/x-wv, application/wavpack, audio/wv, audio/x-wavpack, application/wv, application/x-wv, audio/x-tak, audio/tak, audio/amr, audio/ac3, audio/x-matroska, application/dash+xml, audio/x-dts, audio/vnd-dts, application/ape, application/x-ape, audio/monkeys-audio, audio/x-monkeys-audio, audio/ape, application/monkeysaudio, audio/x-monkeysaudio, application/monkeys-audio, audio/x-ape, application/x-monkeys-audio, application/x-monkeysaudio, audio/monkeysaudio, audio/x-ms-wma, application/x-ms-wma, application/wma, audio/wma, video/vnd.dlna.mpeg-tts, video/mpeg2, video/mpeg, application/vnd.apple.mpegurl, application/x-mpegurl, video/x-m4v, video/mp4v-es, video/mp4, video/3gpp, video/mp2ts, video/mp2t, video/quicktime, video/x-ms-wmv, video/x-ms-asf, video/x-ms-video, video/x-ms-avi, video/avi, video/x-msvideo, video/divx, video/vnd.divx, video/x-divx, video/x-mkv, video/mkv, video/x-matroska, video/ogg, video/webm, application/flv, video/x-flv, video/flv, video/wtv, application/vnd.rn-realmedia-vbr, video/vnd.rn-realvideo, application/vnd.rn-realmedia, image/png, image/jpeg, image/jpg, image/bmp, image/gif, image/heic, image/webp, image/mpo]
-[main (2) ] INFO - 0:00:00.872 - La glouglou mobile : hasSetNextPlayItem: false, supportsSetNextPlayItem: false
-[main (2) ] INFO - 0:00:00.872 - added renderer: La glouglou mobile (ip: null)
-[AsyncTask #1 (187) ] INFO - 0:00:00.873 - loadPlaylist: loaded /storage/emulated/0/Android/data/com.bubblesoft.android.bubbleupnp/files/playlists/playlist.dpl
-[main (2) ] INFO - 0:00:00.875 - found renderer: La glouglou mobile
-[main (2) ] INFO - 0:00:00.877 - .c :
-
- Manufacturer: Bubblesoft
- Manufacturer URL: http://forum.xda-developers.com/showthread.php?t=1118891
- Model name: BubbleUPnP Media Renderer
- Model description: BubbleUPnP Media Renderer
- Model number: 4.6.1
- UDN: 402e3e8f-f894-485e-b5e7-61a960912a16
-
-[main (2) ] INFO - 0:00:00.878 - La glouglou mobile : not a Media Server: java.lang.Exception: La glouglou mobile : cannot find service ContentDirectory
-[main (2) ] INFO - 0:00:00.878 - inspecting new device: BubbleUPnP Media Server (SM-A536B)
-[main (2) ] INFO - 0:00:00.878 - BubbleUPnP Media Server (SM-A536B): No product service found
-[main (2) ] WARNING - 0:00:00.879 - BubbleUPnP Media Server (SM-A536B): no RenderingControl service found
-[main (2) ] INFO - 0:00:00.879 - BubbleUPnP Media Server (SM-A536B): constructed successfully
-[Main #3 (201) ] INFO - 0:00:00.879 - task: start: MediaServer-FetchSupportedMimeType
-[main (2) ] INFO - 0:00:00.879 - active media server: Local et Cloud
-[main (2) ] INFO - 0:00:00.881 - found Media Server: BubbleUPnP Media Server (SM-A536B)
-[Main #3: MediaServer-FetchSupportedMimeT] INFO - 0:00:00.881 - BubbleUPnP Media Server (SM-A536B) supported mime-types: [audio/mpeg, audio/mp4, audio/mp4, audio/wav, audio/wave, audio/x-wav, audio/mpeg, audio/x-mpeg, audio/mp1, audio/aac, audio/flac, audio/x-flac, audio/m4a, audio/mp4, audio/x-m4a, audio/x-scpls, audio/vorbis, audio/ogg, audio/x-ogg, audio/x-ms-wma, application/x-ms-wma, audio/wma, application/wma, image/png, image/png, image/jpeg, image/jpeg, image/jpeg, image/jpeg, image/png, image/jpeg, image/bmp, image/gif, image/jpg, image/heic, image/webp, image/mpo, video/vnd.dlna.mpeg-tts, video/mpeg2, video/mpeg, application/vnd.apple.mpegurl, application/x-mpegurl, video/x-m4v, video/mp4v-es, video/mp4, video/mp2ts, video/mp2t, video/quicktime, video/x-ms-wmv, video/x-ms-asf, video/x-ms-video, video/divx, video/vnd.divx, video/x-divx, video/x-ms-avi, video/avi, video/x-msvideo, video/x-mkv, video/mkv, video/x-matroska, video/ogg, video/3gpp, video/webm, application/flv, video/x-flv, video/flv, video/wtv, application/vnd.rn-realmedia-vbr, video/vnd.rn-realvideo, application/vnd.rn-realmedia]
-[main (2) ] INFO - 0:00:00.882 - .c :
-
- Manufacturer: Bubblesoft
- Manufacturer URL: http://forum.xda-developers.com/showthread.php?t=1118891
- Model name: BubbleUPnP Media Server
- Model description: BubbleUPnP Media Server
- Model number: 4.6.1
- UDN: d38a2dc7-13c1-4a39-ab36-513490cf6766
-
-[Main #3 (201) ] INFO - 0:00:00.882 - task: end, 3ms: MediaServer-FetchSupportedMimeType
-[main (2) ] INFO - 0:00:00.882 - createConnector: type: 3
-[main (2) ] INFO - 0:00:00.883 - Started {}
-[main (2) ] INFO - 0:00:00.883 - started Jetty connector on 192.168.0.98:57645
-[main (2) ] INFO - 0:00:00.883 - smb: setLocalIpAddress: /192.168.0.98
-[main (2) ] SEVERE - 0:00:00.884 - watchdog: device search++: 1
-[main (2) ] INFO - 0:00:00.884 - performDeviceSearch: searching...
-[main (2) ] INFO - 0:00:00.886 - play mode: -1
-[main (2) ] INFO - 0:00:00.888 - play mode: -3.5
-[main (2) ] INFO - 0:00:00.890 - set scrobbler: 0
-[main (2) ] INFO - 0:00:00.891 - Trakt resume: cleared progressed entities
-[main (2) ] INFO - 0:00:00.892 - registered receiver for 'mute on phone call'
-[main (2) ] INFO - 0:00:00.894 - setUsingBattery: true => true
-[Main #3 (201) ] INFO - 0:00:00.896 - task: start: AndroidUpnpService-LoadResumePositions
-[main (2) ] INFO - 0:00:00.896 - isGMSAvailable: true, hasTunInterface: false, isGoogleCastDiscoveryAlwaysStarted: false
-[Main #3: AndroidUpnpService-LoadResumePo] INFO - 0:00:00.897 - loaded 10 resume positions
-[Main #3 (201) ] INFO - 0:00:00.897 - task: end, 1ms: AndroidUpnpService-LoadResumePositions
-[Main #4 (225) ] INFO - 0:00:00.897 - task: start: clearTempVLCSubFiles
-[Main #3 (201) ] INFO - 0:00:00.897 - task: start: processAppExitReasons
-[main (2) ] INFO - 0:00:00.898 - AndroidUpnpService.onCreate() took: 431 ms
-[Main #6 (227) ] INFO - 0:00:00.898 - task: start: clear older HLS remux files
-[main (2) ] INFO - 0:00:00.899 - doStartForeground: calling startForeground(), fromOnStartCommand: true, serviceType: 2
-[Main #5 (226) ] INFO - 0:00:00.898 - task: start: clear transcode tmp files
-[Main #6 (227) ] INFO - 0:00:00.901 - task: end, 4ms: clear older HLS remux files
-[Main #3 (201) ] INFO - 0:00:00.902 - task: end, 4ms: processAppExitReasons
-[Main #5 (226) ] INFO - 0:00:00.902 - task: end, 5ms: clear transcode tmp files
-[cling-21 (229) ] INFO - 0:00:00.904 - .f : Sending device descriptor retrieval message: (c) GET http://192.168.0.233:49152/description.xml
-[main (2) ] INFO - 0:00:00.911 - toast: AVERTISSEMENT:
-
-Le logging est activé
-
-[main (2) ] INFO - 0:00:00.920 - warning toast: Le logging est activé
-
-[main (2) ] INFO - 0:00:00.922 - setSeekBarDetailsText:
-[main (2) ] INFO - 0:00:00.923 - onCreateOptionsMenu()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:00:00.924 - onPrepareOptionsMenu()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:00:00.925 - Insets: Insets{left=0, top=88, right=0, bottom=45}
-[main (2) ] INFO - 0:00:00.931 - onDestroy()@9e5576d:5237
-[main (2) ] INFO - 0:00:00.931 - installed security provider
-[main (2) ] INFO - 0:00:00.932 - MediaPlayerRenderer: onRouteSelected: MediaRouter.RouteInfo{ uniqueId=ROUTE_2e8a299d, name=Toyota Touch, description=Audio Bluetooth, iconUri=null, enabled=true, isSystemRoute=true, connectionState=0, canDisconnect=false, playbackType=0, playbackStream=3, deviceType=3, volumeHandling=1, volume=14, volumeMax=15, presentationDisplayId=-1, extras=null, settingsIntent=null, providerPackageName=android }, BT: true
-[main (2) ] INFO - 0:00:00.932 - onRouteSelected (local): route: MediaRouter.RouteInfo{ uniqueId=ROUTE_2e8a299d, name=Toyota Touch, description=Audio Bluetooth, iconUri=null, enabled=true, isSystemRoute=true, connectionState=0, canDisconnect=false, playbackType=0, playbackStream=3, deviceType=3, volumeHandling=1, volume=14, volumeMax=15, presentationDisplayId=-1, extras=null, settingsIntent=null, providerPackageName=android }, reason: 0
-[main (2) ] INFO - 0:00:00.934 - .b : selected item: France Culture
-[main (2) ] INFO - 0:00:00.934 - .b : selected item: France Culture
-[main (2) ] INFO - 0:00:00.935 - .b : CONNECTIVITY_ACTION
-[main (2) ] INFO - 0:00:00.935 - .b : EXTRA_NO_CONNECTIVITY: false
-[main (2) ] INFO - 0:00:00.935 - .b : EXTRA_REASON: null
-[main (2) ] INFO - 0:00:00.935 - .b : EXTRA_IS_FAILOVER: false
-[main (2) ] INFO - 0:00:00.936 - .b : EXTRA_NETWORK_INFO: [type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: , failover: false, available: true, roaming: false]
-[main (2) ] INFO - 0:00:00.936 - .b : EXTRA_OTHER_NETWORK_INFO: none
-[main (2) ] INFO - 0:00:00.936 - .b : EXTRA_EXTRA_INFO:
-[main (2) ] INFO - 0:00:00.936 - .b : No network change...ignoring event
-[main (2) ] INFO - 0:00:00.939 - onNetworkSearchStarted
-[main (2) ] INFO - 0:00:00.967 - added listener: 1 listeners
-[main (2) ] INFO - 0:00:00.968 - added listener: 2 listeners
-[main (2) ] INFO - 0:00:00.969 - added listener: 3 listeners
-[main (2) ] INFO - 0:00:00.969 - active renderer: none
-[main (2) ] INFO - 0:00:00.970 - created mini-player (context: com.bubblesoft.android.bubbleupnp.MainTabActivity@2e41698)
-[main (2) ] INFO - 0:00:00.971 - added listener: 4 listeners
-[main (2) ] WARNING - 0:00:00.971 - refreshLocalMediaServerLibraryList: failed to find separator container (1)
-[main (2) ] INFO - 0:00:00.971 - active renderer: none
-[Main #4 (225) ] INFO - 0:00:00.977 - task: end, 79ms: clearTempVLCSubFiles
-[main (2) ] INFO - 0:00:00.978 - onSaveInstanceState()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:00.978 - saveMediaServerState: Local et Cloud
-[main (2) ] INFO - 0:00:00.981 - onSaveInstanceState()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:00.981 - saveMediaServerState: Local et Cloud
-[main (2) ] INFO - 0:00:00.982 - positionStack: []
-[main (2) ] INFO - 0:00:00.982 - itemList: Bundle[{firstVisiblePosition=0}]
-[main (2) ] INFO - 0:00:00.982 - containerPath: []
-[main (2) ] INFO - 0:00:00.983 - remote config: fetch succeeded, activated: false
-[AsyncTask #1 (187) ] INFO - 0:00:00.984 - BrowseTask.doInBackground(): enter
-[AsyncTask #1 (187) ] INFO - 0:00:00.985 - BrowseTask.doInBackground(): loading container 'Local et Cloud'
-[cling-17 (Browse) (221) ] INFO - 0:00:00.986 - ObjectID: 0
-[cling-17 (Browse) (221) ] INFO - 0:00:00.986 - BrowseFlag: BrowseDirectChildren
-[cling-17 (Browse) (221) ] INFO - 0:00:00.986 - StartingIndex: 0
-[cling-17 (Browse) (221) ] INFO - 0:00:00.986 - RequestedCount: 0
-[cling-17 (Browse) (221) ] INFO - 0:00:00.986 - Filter: *
-[cling-17 (Browse) (221) ] INFO - 0:00:00.988 - sorted 0 items took: 0 ms
-[cling-17 (Browse) (221) ] WARNING - 0:00:00.990 - webdav: failed to load: /data/user/0/com.bubblesoft.android.bubbleupnp/files/webdavservers: java.io.FileNotFoundException: /data/user/0/com.bubblesoft.android.bubbleupnp/files/webdavservers: open failed: ENOENT (No such file or directory)
-[cling-17 (Browse) (221) ] INFO - 0:00:00.998 - browsed 10/10 items in 10ms
-[cling-23 (233) ] INFO - 0:00:00.998 - .f : Sending device descriptor retrieval message: (c) GET http://192.168.0.137:49152/description.xml
-[main (2) ] INFO - 0:00:00.999 - onCreateOptionsMenu()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:00:00.999 - onPrepareOptionsMenu()@2af0cf8/2e41698:5237
-[cling-17 (221) ] INFO - 0:00:01.1 - .f : Sending device descriptor retrieval message: (c) GET http://192.168.0.138:8080/device/63623ff4-ee41-4850-90aa-2d39395df981/desc.xml
-[main (2) ] INFO - 0:00:01.57 - sorted 0 items took: 0 ms
-[main (2) ] INFO - 0:00:01.57 - sorted 0 items took: 0 ms
-[main (2) ] INFO - 0:00:01.58 - loaded file d38a2dc7-13c1-4a39-ab36-513490cf6766-Bookmarks ok: 0 items, 1 ms
-[main (2) ] INFO - 0:00:01.58 - sorted 0 items took: 0 ms
-[main (2) ] INFO - 0:00:01.59 - sorted 2 items took: 0 ms
-[main (2) ] INFO - 0:00:01.60 - sorted 2 items took: 0 ms
-[AsyncTask #1 (187) ] INFO - 0:00:01.63 - finished browsing: got 10 objects
-[AsyncTask #1 (187) ] INFO - 0:00:01.64 - BrowseTask.doInBackground(): no item
-[main (2) ] INFO - 0:00:01.67 - onCreateOptionsMenu()@2af0cf8/2e41698:5237
-[cling-17 (221) ] INFO - 0:00:01.69 - .f : Sending device descriptor retrieval message: (c) GET http://192.168.0.200:49152/uuid-2899a4df-39ae-160a-6563-dca6329ead0d/description.xml
-[main (2) ] INFO - 0:00:01.71 - onPrepareOptionsMenu()@2af0cf8/2e41698:5237
-[glide-disk-cache-thread-0 (236) ] INFO - 0:00:01.170 - Glide: registered GlideUrl loader
-[main (2) ] INFO - 0:00:01.171 - inspecting new device: PMOMusic Media Server
-[main (2) ] INFO - 0:00:01.171 - PMOMusic Media Server: No product service found
-[main (2) ] WARNING - 0:00:01.172 - PMOMusic Media Server: no RenderingControl service found
-[main (2) ] INFO - 0:00:01.172 - PMOMusic Media Server: constructed successfully
-[Main #4 (225) ] INFO - 0:00:01.172 - task: start: MediaServer-FetchSupportedMimeType
-[main (2) ] INFO - 0:00:01.172 - refreshLocalMediaServerLibraryList: added: PMOMusic Media Server
-[main (2) ] INFO - 0:00:01.173 - sorted 2 items took: 0 ms
-[main (2) ] INFO - 0:00:01.173 - no icon for PMOMusic Media Server
-[main (2) ] INFO - 0:00:01.173 - found Media Server: PMOMusic Media Server
-[main (2) ] INFO - 0:00:01.174 - .c :
-
- Manufacturer: PMOMusic
- Model name: PMOMusic Media Server
- UDN: 63623ff4-ee41-4850-90aa-2d39395df981
-
-[glide-disk-cache-thread-0 (236) ] INFO - 0:00:01.171 - created okhttp/5.3.2 client
-[main (2) ] INFO - 0:00:01.178 - onCreateOptionsMenu()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:00:01.179 - onPrepareOptionsMenu()@2af0cf8/2e41698:5237
-[Main #4: MediaServer-FetchSupportedMimeT] INFO - 0:00:01.186 - PMOMusic Media Server supported mime-types: [audio/flac, audio/x-flac, application/flac, application/x-flac, application/ogg, audio/ogg, audio/x-ogg]
-[Main #4 (225) ] INFO - 0:00:01.186 - task: end, 14ms: MediaServer-FetchSupportedMimeType
-[main (2) ] INFO - 0:00:01.200 - inspecting new device: Chambre
-[main (2) ] INFO - 0:00:01.200 - Chambre: No product service found
-[main (2) ] INFO - 0:00:01.201 - Chambre: volume range: 0..100
-[main (2) ] INFO - 0:00:01.201 - Chambre: supports SetNextAVTransportURI: true
-[main (2) ] INFO - 0:00:01.221 - Chambre: protocolInfo: http-get:*:audio/wav:DLNA.ORG_PN=LPCM,http-get:*:audio/x-wav:DLNA.ORG_PN=LPCM,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3X,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMABASE,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMAFULL,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMAPRO,http-get:*:audio/mpeg:DLNA.ORG_PN=MP2_MPS,http-get:*:audio/mp3:*,http-get:*:audio/wma:*,http-get:*:audio/mpeg:*,http-get:*:audio/vnd.dlna.adts:DLNA.ORG_PN=AAC_ADTS,http-get:*:audio/vnd.dlna.adts:DLNA.ORG_PN=AAC_ADTS_320,http-get:*:audio/m4a:DLNA.ORG_PN=AAC_ISO,http-get:*:audio/aac:DLNA.ORG_PN=AAC_ISO,http-get:*:audio/ac3:DLNA.ORG_PN=AC3,http-get:*:audio/ogg:*,http-get:*:audio/ape:*,http-get:*:audio/x-ape:*,http-get:*:audio/flac:*
-[main (2) ] INFO - 0:00:01.221 - Chambre: max samplerate: 192000, supports 24-bit: true, supports multichannel: true
-[main (2) ] INFO - 0:00:01.221 - Chambre: supported mime-types: [audio/wav, application/x-wave, audio/wave, application/wave, application/wav, application/x-wav, audio/x-wave, audio/x-wav, audio/mp3, application/mp3, application/x-mp3, audio/mpg, audio/mpeg3, application/mpeg, audio/x-mp3, audio/x-mpegaudio, audio/mpeg, audio/x-mpeg3, audio/x-mpg, audio/x-mpeg, application/mpeg3, audio/x-ms-wma, application/x-ms-wma, application/wma, audio/wma, audio/vnd.dlna.adts, audio/m4a, audio/mp4, application/x-m4b, application/x-m4a, application/x-m4p, application/x-mp4, audio/mpeg4, audio/x-m4b, audio/x-m4a, audio/x-m4p, audio/x-mp4, application/mpeg4, audio/aacp, audio/aac, audio/3gpp, audio/3gpp2, audio/x-aac, audio/ac3, audio/x-ogg, application/x-ogg, audio/vorbis, application/ogg, audio/ogg, application/ape, application/x-ape, audio/monkeys-audio, audio/x-monkeys-audio, audio/ape, application/monkeysaudio, audio/x-monkeysaudio, application/monkeys-audio, audio/x-ape, application/x-monkeys-audio, application/x-monkeysaudio, audio/monkeysaudio, audio/x-flac, application/flac, audio/flac, application/x-flac]
-[main (2) ] INFO - 0:00:01.222 - Chambre: hasSetNextPlayItem: true, supportsSetNextPlayItem: true
-[main (2) ] INFO - 0:00:01.222 - added renderer: Chambre (ip: 192.168.0.233)
-[main (2) ] INFO - 0:00:01.223 - found renderer: Chambre
-[main (2) ] INFO - 0:00:01.223 - .c :
-
- Manufacturer: Rakoit Technology(SZ) Co., Ltd.
- Manufacturer URL: https://www.rakoit.com
- Model name: H50
- Model description: Arylic Wi-Fi Sound System
- Model number: V01-Jul 4 2023
-
- Model URL: https://www.arylic.com
- Serial number: 00001
- UDN: FF97F35D-934D-3F36-6EE8-4A26FF97F35D
-
-[main (2) ] INFO - 0:00:01.223 - Chambre: not a Media Server: java.lang.Exception: Chambre: cannot find service ContentDirectory
-[main (2) ] INFO - 0:00:01.226 - onCreateOptionsMenu()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:00:01.226 - onPrepareOptionsMenu()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:00:01.227 - inspecting new device: Glouglou Box
-[main (2) ] INFO - 0:00:01.227 - Glouglou Box: No product service found
-[main (2) ] INFO - 0:00:01.228 - Glouglou Box: volume range: 0..100
-[main (2) ] INFO - 0:00:01.228 - Glouglou Box: supports SetNextAVTransportURI: false
-[main (2) ] INFO - 0:00:01.241 - Glouglou Box: protocolInfo: http-get:*:audio/wav:DLNA.ORG_PN=LPCM,http-get:*:audio/x-wav:DLNA.ORG_PN=LPCM,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3X,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMABASE,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMAFULL,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMAPRO,http-get:*:audio/mpeg:DLNA.ORG_PN=MP2_MPS,http-get:*:audio/mp3:*,http-get:*:audio/wma:*,http-get:*:audio/mpeg:*,http-get:*:audio/vnd.dlna.adts:DLNA.ORG_PN=AAC_ADTS,http-get:*:audio/vnd.dlna.adts:DLNA.ORG_PN=AAC_ADTS_320,http-get:*:audio/m4a:DLNA.ORG_PN=AAC_ISO,http-get:*:audio/aac:DLNA.ORG_PN=AAC_ISO,http-get:*:audio/ac3:DLNA.ORG_PN=AC3,http-get:*:audio/ogg:*,http-get:*:audio/ape:*,http-get:*:audio/x-ape:*,http-get:*:audio/flac:*
-[main (2) ] INFO - 0:00:01.242 - Glouglou Box: max samplerate: 192000, supports 24-bit: true, supports multichannel: true
-[main (2) ] INFO - 0:00:01.242 - Glouglou Box: supported mime-types: [audio/wav, application/x-wave, audio/wave, application/wave, application/wav, application/x-wav, audio/x-wave, audio/x-wav, audio/mp3, application/mp3, application/x-mp3, audio/mpg, audio/mpeg3, application/mpeg, audio/x-mp3, audio/x-mpegaudio, audio/mpeg, audio/x-mpeg3, audio/x-mpg, audio/x-mpeg, application/mpeg3, audio/x-ms-wma, application/x-ms-wma, application/wma, audio/wma, audio/vnd.dlna.adts, audio/m4a, audio/mp4, application/x-m4b, application/x-m4a, application/x-m4p, application/x-mp4, audio/mpeg4, audio/x-m4b, audio/x-m4a, audio/x-m4p, audio/x-mp4, application/mpeg4, audio/aacp, audio/aac, audio/3gpp, audio/3gpp2, audio/x-aac, audio/ac3, audio/x-ogg, application/x-ogg, audio/vorbis, application/ogg, audio/ogg, application/ape, application/x-ape, audio/monkeys-audio, audio/x-monkeys-audio, audio/ape, application/monkeysaudio, audio/x-monkeysaudio, application/monkeys-audio, audio/x-ape, application/x-monkeys-audio, application/x-monkeysaudio, audio/monkeysaudio, audio/x-flac, application/flac, audio/flac, application/x-flac]
-[main (2) ] INFO - 0:00:01.242 - Glouglou Box: hasSetNextPlayItem: false, supportsSetNextPlayItem: false
-[main (2) ] INFO - 0:00:01.242 - added renderer: Glouglou Box (ip: 192.168.0.137)
-[main (2) ] INFO - 0:00:01.243 - found renderer: Glouglou Box
-[main (2) ] INFO - 0:00:01.243 - .c :
-
- Manufacturer: Harman International Industries Inc
- Manufacturer URL: https://www.harman.com
- Model name: JBL Authentics 300
- Model description: JBL soundbar
- Model number: V01-May 21 2025
-
- Model URL: https://www.jbl.com
- Serial number: 00001
- UDN: FFB8F005-0874-39C2-7E46-EF53FFB8F005
-
-[main (2) ] INFO - 0:00:01.243 - Glouglou Box: not a Media Server: java.lang.Exception: Glouglou Box: cannot find service ContentDirectory
-[main (2) ] INFO - 0:00:01.245 - onCreateOptionsMenu()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:00:01.245 - onPrepareOptionsMenu()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:00:01.292 - inspecting new device: pizzicato-Music
-[main (2) ] INFO - 0:00:01.293 - pizzicato-Music: found OpenHome device
-[main (2) ] INFO - 0:00:01.293 - pizzicato-Music: Found Product service
-[main (2) ] INFO - 0:00:01.293 - pizzicato-Music: Found Playlist service
-[main (2) ] INFO - 0:00:01.294 - pizzicato-Music: Found Time service
-[main (2) ] INFO - 0:00:01.294 - pizzicato-Music: Found Volume service
-[main (2) ] INFO - 0:00:01.305 - pizzicato-Music: Found Info service
-[main (2) ] INFO - 0:00:01.305 - pizzicato-Music: Found Credentials service
-[main (2) ] INFO - 0:00:01.334 - pizzicato-Music: adding audio/x-dsf and audio/x-dff due to audio/x-dsd presence
-[main (2) ] INFO - 0:00:01.335 - pizzicato-Music: protocolInfo: http-get:*:audio/L16:DLNA.ORG_PN=LPCM,http-get:*:application/flac:*,http-get:*:application/x-flac:*,http-get:*:application/ogg:*,http-get:*:application/vnd.apple.mpegurl:*,http-get:*:application/x-mpegurl:*,http-get:*:audio/flac:*,http-get:*:audio/x-flac:*,http-get:*:audio/aac:*,http-get:*:audio/x-aiff:*,http-get:*:audio/aif:*,http-get:*:audio/aiff:*,http-get:*:audio/dff:*,http-get:*:audio/x-dff:*,http-get:*:audio/dsd:*,http-get:*:audio/x-dsd:*,http-get:*:audio/dsf:*,http-get:*:audio/x-dsf:*,http-get:*:audio/m4a:*,http-get:*:audio/x-m4a:*,http-get:*:audio/matroska:*,http-get:*:audio/x-matroska:*,http-get:*:audio/mp1:*,http-get:*:audio/mp3:*,http-get:*:audio/mp4:*,http-get:*:audio/mpeg:*,http-get:*:audio/x-mpeg:*,http-get:*:audio/ogg:*,http-get:*:audio/vorbis:*,http-get:*:audio/x-ape:*,http-get:*:audio/ape:*,http-get:*:audio/x-monkeys-audio:*,http-get:*:audio/wav:*,http-get:*:audio/x-wav:*,http-get:*:audio/wave:*,http-get:*:audio/x-ms-wma:*,http-get:*:audio/x-ogg:*,http-get:*:audio/x-scpls:*,http-get:*:audio/x-vorbis+ogg:*,http-get:*:audio/x-vorbis:*,http-get:*:audio/x-wavpack:*,http-get:*:video/mp4:*
-[main (2) ] INFO - 0:00:01.335 - pizzicato-Music: supported mime-types: [audio/lpcm, audio/L16, audio/l16, audio/x-flac, application/flac, audio/flac, application/x-flac, audio/x-ogg, application/x-ogg, audio/vorbis, application/ogg, audio/ogg, application/vnd.apple.mpegurl, application/x-mpegurl, audio/aacp, audio/aac, audio/3gpp, audio/3gpp2, audio/x-aac, application/aiff, audio/aiff, application/x-aif, application/aif, application/x-aiff, audio/x-aifc, audio/x-aiff, audio/aif, audio/aifc, audio/x-aif, audio/dff, audio/x-dff, audio/x-dsd, audio/dsd, audio/x-dsf, audio/dsf, audio/m4a, audio/mp4, application/x-m4b, application/x-m4a, application/x-m4p, application/x-mp4, audio/mpeg4, audio/x-m4b, audio/x-m4a, audio/x-m4p, audio/x-mp4, application/mpeg4, audio/matroska, audio/x-matroska, audio/mp1, application/mp1, audio/mp3, application/mp3, application/x-mp3, audio/mpg, audio/mpeg3, application/mpeg, audio/x-mp3, audio/x-mpegaudio, audio/mpeg, audio/x-mpeg3, audio/x-mpg, audio/x-mpeg, application/mpeg3, application/ape, application/x-ape, audio/monkeys-audio, audio/x-monkeys-audio, audio/ape, application/monkeysaudio, audio/x-monkeysaudio, application/monkeys-audio, audio/x-ape, application/x-monkeys-audio, application/x-monkeysaudio, audio/monkeysaudio, audio/wav, application/x-wave, audio/wave, application/wave, application/wav, application/x-wav, audio/x-wave, audio/x-wav, audio/x-ms-wma, application/x-ms-wma, application/wma, audio/wma, audio/x-scpls, audio/x-vorbis+ogg, audio/x-vorbis, audio/wavpack, application/x-wavpack, audio/x-wv, application/wavpack, audio/wv, audio/x-wavpack, application/wv, application/x-wv, video/mp4v-es, video/mp4, video/3gpp]
-[main (2) ] INFO - 0:00:01.335 - pizzicato-Music: volume range: 0..100
-[main (2) ] INFO - 0:00:01.336 - added renderer: pizzicato-Music (ip: 192.168.0.200)
-[main (2) ] INFO - 0:00:01.336 - qobuz: user auth token: unset
-[main (2) ] INFO - 0:00:01.337 - qobuz: cleared credentials
-[main (2) ] INFO - 0:00:01.337 - qobuz: username: set
-[main (2) ] INFO - 0:00:01.337 - tidal: session: unset
-[main (2) ] INFO - 0:00:01.337 - tidal: reset
-[main (2) ] INFO - 0:00:01.338 - fireRootContentChanged
-[main (2) ] INFO - 0:00:01.339 - onSaveInstanceState()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:01.339 - saveMediaServerState: Local et Cloud
-[main (2) ] INFO - 0:00:01.339 - positionStack: []
-[main (2) ] INFO - 0:00:01.339 - itemList: Bundle[{firstVisiblePosition=0}]
-[main (2) ] INFO - 0:00:01.340 - containerPath: []
-[AsyncTask #1 (187) ] INFO - 0:00:01.341 - BrowseTask.doInBackground(): enter
-[main (2) ] INFO - 0:00:01.341 - active renderer: pizzicato-Music
-[AsyncTask #1 (187) ] INFO - 0:00:01.341 - BrowseTask.doInBackground(): loading container 'Local et Cloud'
-[main (2) ] INFO - 0:00:01.342 - supports video: false
-[main (2) ] INFO - 0:00:01.342 - tidal: OH token id: null
-[cling-17 (Browse) (221) ] INFO - 0:00:01.342 - ObjectID: 0
-[cling-17 (Browse) (221) ] INFO - 0:00:01.342 - BrowseFlag: BrowseDirectChildren
-[main (2) ] INFO - 0:00:01.342 - pizzicato-Music: control volume with pizzicato-Music
-[cling-17 (Browse) (221) ] INFO - 0:00:01.343 - StartingIndex: 0
-[cling-17 (Browse) (221) ] INFO - 0:00:01.343 - RequestedCount: 0
-[cling-17 (Browse) (221) ] INFO - 0:00:01.343 - Filter: *
-[cling-17 (Browse) (221) ] INFO - 0:00:01.344 - sorted 0 items took: 0 ms
-[cling-17 (Browse) (221) ] INFO - 0:00:01.347 - browsed 10/10 items in 3ms
-[main (2) ] INFO - 0:00:01.357 - pizzicato-Music: onSourceChange: Playlist
-[main (2) ] INFO - 0:00:01.358 - pizzicato-Music: started subscription callback for service (n) ServiceId: urn:av-openhome-org:serviceId:Product
-[main (2) ] INFO - 0:00:01.358 - pizzicato-Music: started subscription callback for service (n) ServiceId: urn:av-openhome-org:serviceId:Playlist
-[main (2) ] INFO - 0:00:01.359 - pizzicato-Music: started subscription callback for service (n) ServiceId: urn:av-openhome-org:serviceId:Info
-[main (2) ] INFO - 0:00:01.359 - pizzicato-Music: started subscription callback for service (n) ServiceId: urn:av-openhome-org:serviceId:Credentials
-[main (2) ] INFO - 0:00:01.359 - pizzicato-Music: started subscription callback for service (n) ServiceId: urn:av-openhome-org:serviceId:Volume
-[main (2) ] INFO - 0:00:01.360 - onSourceChange: Playlist
-[main (2) ] INFO - 0:00:01.360 - selected item changed (service):
-[main (2) ] INFO - 0:00:01.361 - image file cache is enabled: /storage/emulated/0/Android/data/com.bubblesoft.android.bubbleupnp/cache/images
-[main (2) ] INFO - 0:00:01.361 - enabled image file cache
-[cling-25 (240) ] INFO - 0:00:01.375 - pizzicato-Music: Established subscription uuid:3c16bfa0-648d-d76f-fe5e-64eaff0a8143 on service (n) ServiceId: urn:av-openhome-org:serviceId:Volume
-[main (2) ] INFO - 0:00:01.388 - ignoreTransportStateChangeForTrackAdvance: false, allowTrackAdvance: true
-[main (2) ] INFO - 0:00:01.388 - SETACTIVE: onTransportStateChanged: post STOP callback
-[cling-25 (240) ] INFO - 0:00:01.388 - pizzicato-Music: Established subscription uuid:4f47affc-06ec-2985-254c-fe5b915eff95 on service (n) ServiceId: urn:av-openhome-org:serviceId:Info
-[cling-33 (248) ] INFO - 0:00:01.404 - pizzicato-Music: Established subscription uuid:85105959-8465-e1ae-1173-390be1f8c52c on service (n) ServiceId: urn:av-openhome-org:serviceId:Credentials
-[cling-34 (249) ] INFO - 0:00:01.416 - pizzicato-Music: Established subscription uuid:6a044423-bdd0-dc26-794f-9c22a8044a8d on service (n) ServiceId: urn:av-openhome-org:serviceId:Product
-[cling-34 (249) ] INFO - 0:00:01.422 - pizzicato-Music: Established subscription uuid:96b0cb0d-2712-6f1a-0bf3-f5a9cf749e69 on service (n) ServiceId: urn:av-openhome-org:serviceId:Playlist
-[main (2) ] INFO - 0:00:01.426 - VolumeProvider: created for 'pizzicato-Music'
-[main (2) ] INFO - 0:00:01.451 - onNetworkSearchEnded
-[main (2) ] INFO - 0:00:01.480 - active renderer: pizzicato-Music
-[main (2) ] INFO - 0:00:01.481 - source changed: Playlist
-[main (2) ] INFO - 0:00:01.481 - selected item changed (now playing):
-[main (2) ] INFO - 0:00:01.481 - setSeekBarDetailsText:
-[main (2) ] INFO - 0:00:01.483 - active renderer: pizzicato-Music
-[main (2) ] INFO - 0:00:01.484 - active renderer: pizzicato-Music
-[main (2) ] INFO - 0:00:01.484 - addListener (context: com.bubblesoft.android.bubbleupnp.MainTabActivity@2e41698)
-[main (2) ] INFO - 0:00:01.484 - no icon for pizzicato-Music
-[main (2) ] INFO - 0:00:01.484 - found renderer: pizzicato-Music
-[main (2) ] INFO - 0:00:01.485 - .c :
-
- Manufacturer: JF Light Industries
- Manufacturer URL: https://framagit.org/medoc92
- Model name: UpMPD
- Model description: UPnP front-end to MPD
- Model number: 42
- Model URL: https://framagit.org/medoc92/upmpdcli/code/
- Serial number: upmpdcli version 1.9.5 libupnpp 1.0.2 mpd 0.23.5
- UDN: 2899a4df-39ae-160a-6563-dca6329ead0d
-
-[main (2) ] INFO - 0:00:01.485 - pizzicato-Music: not a Media Server: java.lang.Exception: pizzicato-Music: cannot find service ContentDirectory
-[main (2) ] INFO - 0:00:01.486 - onCreateOptionsMenu()@2af0cf8/2e41698:5237
-[main (2) ] WARNING - 0:00:01.486 - getBubbleUPnPServerFFmpegDecodeREST: not supported for OpenHome renderers
-[main (2) ] INFO - 0:00:01.487 - onPrepareOptionsMenu()@2af0cf8/2e41698:5237
-[cling-28 (243) ] INFO - 0:00:01.488 - .f : Sending device descriptor retrieval message: (c) GET http://192.168.0.138:8080/device/4b5d30eb-34cb-4bcc-806e-a075eebf9cd7/desc.xml
-[main (2) ] INFO - 0:00:01.497 - refreshLocalMediaServerLibraryList: added: PMOMusic Media Server
-[main (2) ] INFO - 0:00:01.497 - sorted 0 items took: 0 ms
-[main (2) ] INFO - 0:00:01.498 - sorted 0 items took: 0 ms
-[main (2) ] INFO - 0:00:01.498 - loaded file d38a2dc7-13c1-4a39-ab36-513490cf6766-Bookmarks ok: 0 items, 0 ms
-[main (2) ] INFO - 0:00:01.498 - sorted 0 items took: 0 ms
-[main (2) ] INFO - 0:00:01.499 - sorted 2 items took: 0 ms
-[main (2) ] INFO - 0:00:01.500 - sorted 2 items took: 0 ms
-[main (2) ] INFO - 0:00:01.500 - setSeekBarDetailsText:
-[main (2) ] INFO - 0:00:01.501 - pizzicato-Music: Credentials: supported ids: [qobuz.com]
-[AsyncTask #1 (187) ] INFO - 0:00:01.501 - finished browsing: got 10 objects
-[AsyncTask #1 (187) ] INFO - 0:00:01.501 - BrowseTask.doInBackground(): no item
-[main (2) ] INFO - 0:00:01.512 - pizzicato-Music: CredentialsSubscriptionCallback.getAction(qobuz.com): username: unset, password: unset, enabled: true, status: null, data: set
-[main (2) ] INFO - 0:00:01.513 - pizzicato-Music: AbstractRenderer.onVolumeChange: 100
-[main (2) ] INFO - 0:00:01.513 - VolumeProvider: onVolumeChanged: 100
-[main (2) ] INFO - 0:00:01.526 - pizzicato-Music: MainFragmentBase.onVolumeChange: 100
-[main (2) ] INFO - 0:00:01.527 - setSeekBarDetailsText:
-[main (2) ] INFO - 0:00:01.527 - pizzicato-Music: MainFragmentBase.onVolumeChange: 100
-[main (2) ] INFO - 0:00:01.527 - pizzicato-Music: MainFragmentBase.onVolumeChange: 100
-[main (2) ] INFO - 0:00:01.528 - pizzicato-Music: AbstractRenderer.onMuteChange: false
-[main (2) ] INFO - 0:00:01.546 - setSeekBarDetailsText:
-[main (2) ] INFO - 0:00:01.547 - onStandbyChange: standby=false, ignore=true
-[main (2) ] INFO - 0:00:01.548 - onStandbyChange: standby=false, ignore=true
-[main (2) ] INFO - 0:00:01.548 - onStandbyChange: standby=false, ignore=true
-[Main #4 (225) ] INFO - 0:00:01.548 - task: start: AbstractPlaylistService-FirstIdArray
-[main (2) ] WARNING - 0:00:01.549 - .b : couldn't find item trackId = 23
-[Main #4: AbstractPlaylistService-FirstId] INFO - 0:00:01.549 - pizzicato-Music: reading 1 new items to insert: [23]
-[main (2) ] INFO - 0:00:01.549 - selected item changed (service):
-[Main #4: AbstractPlaylistService-FirstId] INFO - 0:00:01.549 - pizzicato-Music: getting [0..1[
-[Main #4 (225) ] INFO - 0:00:01.571 - task: end, 23ms: AbstractPlaylistService-FirstIdArray
-[main (2) ] INFO - 0:00:01.572 - selected item changed (now playing):
-[main (2) ] INFO - 0:00:01.572 - setSeekBarDetailsText:
-[main (2) ] INFO - 0:00:01.574 - started task TimeTask: pizzicato-Music
-[main (2) ] INFO - 0:00:01.574 - ignoreTransportStateChangeForTrackAdvance: false, allowTrackAdvance: true
-[main (2) ] INFO - 0:00:01.574 - dynamic shortcuts: added 'pizzicato-Music'
-[main (2) ] INFO - 0:00:01.575 - renderer chooser target: saved 1 targets
-[Main #4 (225) ] INFO - 0:00:01.576 - task: start: publishRendererChooserTargets
-[Main #4 (225) ] INFO - 0:00:01.587 - task: end, 10ms: publishRendererChooserTargets
-[main (2) ] INFO - 0:00:01.594 - onCreateOptionsMenu()@2af0cf8/2e41698:5237
-[main (2) ] WARNING - 0:00:01.595 - getBubbleUPnPServerFFmpegDecodeREST: not supported for OpenHome renderers
-[main (2) ] INFO - 0:00:01.596 - onPrepareOptionsMenu()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:00:01.635 - qobuz: Linn status: null
-[main (2) ] INFO - 0:00:01.635 - qobuz: username: unset
-[main (2) ] INFO - 0:00:01.635 - qobuz: set custom app id
-[main (2) ] INFO - 0:00:01.636 - qobuz: user auth token: unset
-[main (2) ] INFO - 0:00:01.662 - inspecting new device: PMOMusic Audio Renderer
-[main (2) ] INFO - 0:00:01.663 - PMOMusic Audio Renderer: No product service found
-[main (2) ] WARNING - 0:00:01.663 - PMOMusic Audio Renderer: Volume state variable has no range, using default
-[main (2) ] INFO - 0:00:01.663 - PMOMusic Audio Renderer: volume range: 0..100
-[main (2) ] INFO - 0:00:01.663 - PMOMusic Audio Renderer: supports SetNextAVTransportURI: true
-[main (2) ] WARNING - 0:00:01.673 - PMOMusic Audio Renderer: cannot get ProtocolInfo: null sink value, source value: null
-[main (2) ] INFO - 0:00:01.673 - PMOMusic Audio Renderer: supported mime-types: []
-[main (2) ] INFO - 0:00:01.673 - PMOMusic Audio Renderer: hasSetNextPlayItem: true, supportsSetNextPlayItem: true
-[main (2) ] INFO - 0:00:01.674 - added renderer: PMOMusic Audio Renderer (ip: 192.168.0.138)
-[main (2) ] INFO - 0:00:01.674 - no icon for PMOMusic Audio Renderer
-[main (2) ] INFO - 0:00:01.674 - found renderer: PMOMusic Audio Renderer
-[main (2) ] INFO - 0:00:01.674 - .c :
-
- Manufacturer: PMOMusic
- Model name: PMOMusic Audio Renderer
- UDN: 4b5d30eb-34cb-4bcc-806e-a075eebf9cd7
-
-[main (2) ] INFO - 0:00:01.674 - PMOMusic Audio Renderer: not a Media Server: java.lang.Exception: PMOMusic Audio Renderer: cannot find service ContentDirectory
-[main (2) ] INFO - 0:00:01.677 - .b : selected item (track id): Babylon
-[main (2) ] INFO - 0:00:01.677 - selected item changed (service): Babylon
-[main (2) ] INFO - 0:00:01.694 - selected item changed (now playing): Babylon
-[main (2) ] INFO - 0:00:01.708 - onCreateOptionsMenu()@2af0cf8/2e41698:5237
-[main (2) ] WARNING - 0:00:01.709 - getBubbleUPnPServerFFmpegDecodeREST: not supported for OpenHome renderers
-[main (2) ] INFO - 0:00:01.709 - onPrepareOptionsMenu()@2af0cf8/2e41698:5237
-[cling-23 (233) ] INFO - 0:00:01.944 - .f : Sending device descriptor retrieval message: (c) GET http://192.168.0.254:52424/device.xml
-[main (2) ] INFO - 0:00:01.982 - inspecting new device: Freebox Server
-[main (2) ] INFO - 0:00:01.983 - Freebox Server: No product service found
-[main (2) ] WARNING - 0:00:01.983 - Freebox Server: no RenderingControl service found
-[main (2) ] INFO - 0:00:01.984 - Freebox Server: constructed successfully
-[main (2) ] INFO - 0:00:01.985 - refreshLocalMediaServerLibraryList: removed: PMOMusic Media Server
-[Main #4 (225) ] INFO - 0:00:01.984 - task: start: MediaServer-FetchSupportedMimeType
-[main (2) ] INFO - 0:00:01.985 - refreshLocalMediaServerLibraryList: added: Freebox Server
-[main (2) ] INFO - 0:00:01.986 - refreshLocalMediaServerLibraryList: added: PMOMusic Media Server
-[main (2) ] INFO - 0:00:01.987 - sorted 2 items took: 0 ms
-[main (2) ] INFO - 0:00:01.987 - found Media Server: Freebox Server
-[main (2) ] INFO - 0:00:01.988 - .c :
-
- Manufacturer: Freebox SAS
- Manufacturer URL: http://www.freebox.fr
- Model name: Freebox Media Server
- Model description: Freebox UPnP Media Server
- Model number: 1
- Model URL: http://www.freebox.fr
- Serial number: 1
- UDN: e929a46e-d218-377d-2dde-32bd8080dfbf
-
-[main (2) ] INFO - 0:00:01.989 - onCreateOptionsMenu()@2af0cf8/2e41698:5237
-[main (2) ] WARNING - 0:00:01.989 - getBubbleUPnPServerFFmpegDecodeREST: not supported for OpenHome renderers
-[main (2) ] INFO - 0:00:01.990 - onPrepareOptionsMenu()@2af0cf8/2e41698:5237
-[Main #4: MediaServer-FetchSupportedMimeT] INFO - 0:00:01.995 - Freebox Server supported mime-types: [image/jpeg, image/jpeg, image/jpeg, image/jpeg, video/mpeg, video/mpeg, video/mpeg, video/mpeg, video/mpeg, video/mpeg, video/mpeg, video/mpeg, video/mpeg, video/mpeg, video/mpeg, video/mpeg, video/mpeg, video/mpeg, video/mpeg, video/mp4, video/mp4, video/mp4, video/mp4, video/mp4, video/mp4, video/mp4, video/mp4, video/mp4, video/mp4, video/mp4, video/mp4, video/vnd.dlna.mpeg-tts, video/vnd.dlna.mpeg-tts, video/vnd.dlna.mpeg-tts, video/vnd.dlna.mpeg-tts, video/vnd.dlna.mpeg-tts, video/vnd.dlna.mpeg-tts, video/vnd.dlna.mpeg-tts, video/vnd.dlna.mpeg-tts, video/vnd.dlna.mpeg-tts, video/vnd.dlna.mpeg-tts, video/vnd.dlna.mpeg-tts, video/vnd.dlna.mpeg-tts, video/vnd.dlna.mpeg-tts, video/vnd.dlna.mpeg-tts, video/vnd.dlna.mpeg-tts, video/vnd.dlna.mpeg-tts, video/vnd.dlna.mpeg-tts, video/vnd.dlna.mpeg-tts, video/vnd.dlna.mpeg-tts, video/vnd.dlna.mpeg-tts, video/vnd.dlna.mpeg-tts, video/vnd.dlna.mpeg-tts, video/vnd.dlna.mpeg-tts, video/x-ms-wmv, video/x-ms-wmv, video/x-ms-wmv, video/x-ms-wmv, video/x-ms-wmv, video/x-ms-wmv, video/x-ms-wmv, video/x-ms-wmv, video/3gpp, video/3gpp, audio/mpeg, audio/x-ms-wma, audio/x-ms-wma, audio/x-ms-wma, audio/x-ms-wma, audio/x-ms-wma, audio/mp4, audio/mp4, audio/mp4, audio/3gpp, audio/mp4, audio/mp4, audio/L16, image/jpeg, video/avi, video/divx, video/x-matroska, video/mpeg, video/mp4, video/x-ms-wmv, video/x-msvideo, video/x-flv, video/x-tivo-mpeg, video/quicktime, audio/mp4, audio/x-wav, audio/x-flac, application/ogg]
-[Main #4 (225) ] INFO - 0:00:01.996 - task: end, 12ms: MediaServer-FetchSupportedMimeType
-[cling-14 (218) ] INFO - 0:00:02.152 - .f : Sending device descriptor retrieval message: (c) GET http://192.168.0.200:49152/uuid-c110358f-d885-b44a-d6d3-dca6329ead0d/description.xml
-[main (2) ] INFO - 0:00:02.203 - inspecting new device: pizzicato-Music-mediaserver
-[main (2) ] INFO - 0:00:02.203 - pizzicato-Music-mediaserver: No product service found
-[main (2) ] WARNING - 0:00:02.204 - pizzicato-Music-mediaserver: no RenderingControl service found
-[main (2) ] INFO - 0:00:02.204 - pizzicato-Music-mediaserver: constructed successfully
-[Main #4 (225) ] INFO - 0:00:02.204 - task: start: MediaServer-FetchSupportedMimeType
-[main (2) ] INFO - 0:00:02.205 - refreshLocalMediaServerLibraryList: removed: Freebox Server
-[main (2) ] INFO - 0:00:02.205 - refreshLocalMediaServerLibraryList: removed: PMOMusic Media Server
-[main (2) ] INFO - 0:00:02.205 - refreshLocalMediaServerLibraryList: added: Freebox Server
-[main (2) ] INFO - 0:00:02.206 - refreshLocalMediaServerLibraryList: added: pizzicato-Music-mediaserver
-[main (2) ] INFO - 0:00:02.206 - refreshLocalMediaServerLibraryList: added: PMOMusic Media Server
-[main (2) ] INFO - 0:00:02.207 - sorted 2 items took: 0 ms
-[main (2) ] INFO - 0:00:02.207 - found Media Server: pizzicato-Music-mediaserver
-[main (2) ] INFO - 0:00:02.208 - .c :
-
- Manufacturer: lesbonscomptes.com/upmpdcli
- Model name: Upmpdcli Media Server
- UDN: c110358f-d885-b44a-d6d3-dca6329ead0d
-
-[Main #4: MediaServer-FetchSupportedMimeT] WARNING - 0:00:02.213 - pizzicato-Music-mediaserver: cannot get ProtocolInfo: null source value
-[Main #4 (225) ] INFO - 0:00:02.214 - task: end, 10ms: MediaServer-FetchSupportedMimeType
-[main (2) ] INFO - 0:00:02.222 - onCreateOptionsMenu()@2af0cf8/2e41698:5237
-[main (2) ] WARNING - 0:00:02.222 - getBubbleUPnPServerFFmpegDecodeREST: not supported for OpenHome renderers
-[main (2) ] INFO - 0:00:02.224 - onPrepareOptionsMenu()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:00:02.267 - onRouteAdded 3d57e3df7b480b761c03a9d89520d61b => MediaRouter.RouteInfo{ uniqueId=com.google.android.gms/.cast.media.CastMediaRoute2ProviderService_Persistent:3d57e3df7b480b761c03a9d89520d61b, name=Glouglou Box, description=JBL Authentics 300, iconUri=null, enabled=true, isSystemRoute=false, connectionState=0, canDisconnect=false, playbackType=1, playbackStream=-1, deviceType=2, volumeHandling=0, volume=0, volumeMax=50, presentationDisplayId=-1, extras=Bundle[{com.google.android.gms.cast.EXTRA_CAST_DEVICE="G10x" (3d57e3df7b480b761c03a9d89520d61b) }], settingsIntent=null, providerPackageName=com.google.android.gms }
-[main (2) ] INFO - 0:00:02.268 - Glouglou Box: No product service found
-[main (2) ] WARNING - 0:00:02.268 - Glouglou Box: no RenderingControl service found
-[main (2) ] INFO - 0:00:02.269 - Glouglou Box: url: http://192.168.0.137:8008, device version: 5, model name: JBL Authentics 300, service port: 8009, video out: false, video in: false, audio out: true, audio in: false, multizone group: false
-[main (2) ] INFO - 0:00:02.269 - Glouglou Box: no video out support
-[main (2) ] INFO - 0:00:02.271 - added renderer: Glouglou Box (ip: 192.168.0.137)
-[Main #4 (225) ] INFO - 0:00:02.271 - task: start: ChromecastRenderer-FetchNetworkConnectionType
-[main (2) ] INFO - 0:00:02.273 - onCreateOptionsMenu()@2af0cf8/2e41698:5237
-[main (2) ] WARNING - 0:00:02.273 - getBubbleUPnPServerFFmpegDecodeREST: not supported for OpenHome renderers
-[main (2) ] INFO - 0:00:02.274 - onPrepareOptionsMenu()@2af0cf8/2e41698:5237
-[Main #4: ChromecastRenderer-FetchNetwork] INFO - 0:00:02.293 - Glouglou Box: ethernet connected: false, isCCwGTV: false
-[Main #4 (225) ] INFO - 0:00:02.293 - task: end, 21ms: ChromecastRenderer-FetchNetworkConnectionType
-[main (2) ] INFO - 0:00:02.394 - setSeekBarDetailsText: FLAC • 44.1 kHz • 16 bit
-[cling-41 (260) ] INFO - 0:00:02.411 - .f : Sending device descriptor retrieval message: (c) GET http://192.168.0.34:8096/dlna/526dedec-fde2-4224-bac6-06f7b11711cf/description.xml
-[main (2) ] INFO - 0:00:02.445 - inspecting new device: fenice
-[main (2) ] INFO - 0:00:02.446 - fenice: No product service found
-[main (2) ] WARNING - 0:00:02.446 - fenice: no RenderingControl service found
-[main (2) ] INFO - 0:00:02.446 - fenice: constructed successfully
-[Main #4 (225) ] INFO - 0:00:02.446 - task: start: MediaServer-FetchSupportedMimeType
-[main (2) ] INFO - 0:00:02.447 - refreshLocalMediaServerLibraryList: removed: Freebox Server
-[main (2) ] INFO - 0:00:02.447 - refreshLocalMediaServerLibraryList: removed: pizzicato-Music-mediaserver
-[main (2) ] INFO - 0:00:02.447 - refreshLocalMediaServerLibraryList: removed: PMOMusic Media Server
-[main (2) ] INFO - 0:00:02.447 - refreshLocalMediaServerLibraryList: added: fenice
-[main (2) ] INFO - 0:00:02.447 - refreshLocalMediaServerLibraryList: added: Freebox Server
-[main (2) ] INFO - 0:00:02.447 - refreshLocalMediaServerLibraryList: added: pizzicato-Music-mediaserver
-[main (2) ] INFO - 0:00:02.448 - refreshLocalMediaServerLibraryList: added: PMOMusic Media Server
-[main (2) ] INFO - 0:00:02.448 - sorted 2 items took: 0 ms
-[main (2) ] INFO - 0:00:02.449 - found Media Server: fenice
-[main (2) ] INFO - 0:00:02.449 - .c :
-
- Manufacturer: Jellyfin
- Manufacturer URL: https://github.com/jellyfin/jellyfin
- Model name: Jellyfin Server
- Model description: UPnP/AV 1.0 Compliant Media Server
- Model number: 01
- Model URL: https://github.com/jellyfin/jellyfin
- Presentation URL: http://192.168.0.34:8096/web/index.html
- Serial number: 526dedecfde24224bac606f7b11711cf
- UDN: 526dedec-fde2-4224-bac6-06f7b11711cf
-
-[main (2) ] INFO - 0:00:02.455 - onCreateOptionsMenu()@2af0cf8/2e41698:5237
-[main (2) ] WARNING - 0:00:02.456 - getBubbleUPnPServerFFmpegDecodeREST: not supported for OpenHome renderers
-[main (2) ] INFO - 0:00:02.457 - onPrepareOptionsMenu()@2af0cf8/2e41698:5237
-[Main #4: MediaServer-FetchSupportedMimeT] INFO - 0:00:02.469 - fenice supported mime-types: [video/mpeg, video/mp4, video/vnd.dlna.mpeg-tts, video/avi, video/x-matroska, video/x-ms-wmv, video/wtv, audio/mpeg, audio/mp3, audio/mp4, audio/x-ms-wma, audio/wav, audio/L16, image/jpeg, image/png, image/gif, image/tiff]
-[Main #4 (225) ] INFO - 0:00:02.469 - task: end, 24ms: MediaServer-FetchSupportedMimeType
-[main (2) ] INFO - 0:00:03.406 - setSeekBarDetailsText: FLAC • 44.1 kHz • 16 bit
-[main (2) ] INFO - 0:00:04.403 - setSeekBarDetailsText: FLAC • 44.1 kHz • 16 bit
-[main (2) ] INFO - 0:00:05.410 - setSeekBarDetailsText: FLAC • 44.1 kHz • 16 bit
-[pool-13-thread-1 (267) ] INFO - 0:00:06.20 - ProfileInstaller: Compiled with profile
-[main (2) ] INFO - 0:00:06.133 - onPause()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:00:06.133 - removed listener: 3 listeners
-[main (2) ] INFO - 0:00:06.135 - onResume()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:06.135 - pizzicato-Music: TimeTask already launched!
-[main (2) ] INFO - 0:00:06.135 - addListener (context: com.bubblesoft.android.bubbleupnp.MainTabActivity@2e41698)
-[main (2) ] INFO - 0:00:06.136 - onStandbyChange: standby=false, ignore=true
-[main (2) ] INFO - 0:00:06.137 - pizzicato-Music: MainFragmentBase.onVolumeChange: 100
-[main (2) ] INFO - 0:00:06.143 - onCreateOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:06.145 - onPrepareOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:08.650 - path = [server://63623ff4-ee41-4850-90aa-2d39395df981]
-[main (2) ] INFO - 0:00:08.651 - active media server: PMOMusic Media Server
-[main (2) ] INFO - 0:00:08.652 - onSaveInstanceState()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:08.653 - saveMediaServerState: PMOMusic Media Server
-[main (2) ] INFO - 0:00:08.654 - onSaveInstanceState()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:08.654 - saveMediaServerState: PMOMusic Media Server
-[main (2) ] INFO - 0:00:08.655 - positionStack: [8]
-[main (2) ] INFO - 0:00:08.655 - itemList: Bundle[{firstVisiblePosition=0}]
-[main (2) ] INFO - 0:00:08.655 - containerPath: []
-[AsyncTask #1 (187) ] INFO - 0:00:08.658 - BrowseTask.doInBackground(): enter
-[main (2) ] INFO - 0:00:08.658 - onCreateOptionsMenu()@ec98be8/2e41698:5237
-[AsyncTask #1 (187) ] INFO - 0:00:08.658 - BrowseTask.doInBackground(): loading container 'PMOMusic Media Server'
-[main (2) ] INFO - 0:00:08.659 - onPrepareOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:08.673 - sorted 0 items took: 0 ms
-[main (2) ] INFO - 0:00:08.674 - sorted 0 items took: 0 ms
-[main (2) ] INFO - 0:00:08.674 - loaded file 63623ff4-ee41-4850-90aa-2d39395df981-Bookmarks ok: 0 items, 0 ms
-[main (2) ] INFO - 0:00:08.675 - sorted 0 items took: 0 ms
-[main (2) ] INFO - 0:00:08.675 - sorted 2 items took: 0 ms
-[main (2) ] INFO - 0:00:08.676 - sorted 2 items took: 0 ms
-[AsyncTask #1 (187) ] INFO - 0:00:08.677 - finished browsing: got 4 objects
-[AsyncTask #1 (187) ] INFO - 0:00:08.677 - BrowseTask.doInBackground(): no item
-[main (2) ] INFO - 0:00:08.686 - onCreateOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:08.687 - onPrepareOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:11.649 - path = [radio-paradise:channel:mellow]
-[main (2) ] INFO - 0:00:11.651 - onSaveInstanceState()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:11.651 - saveMediaServerState: PMOMusic Media Server
-[main (2) ] INFO - 0:00:11.652 - positionStack: [0]
-[main (2) ] INFO - 0:00:11.652 - itemList: Bundle[{firstVisiblePosition=0}]
-[main (2) ] INFO - 0:00:11.652 - containerPath: [radio-paradise:channel:mellow]
-[AsyncTask #1 (187) ] INFO - 0:00:11.654 - BrowseTask.doInBackground(): enter
-[AsyncTask #1 (187) ] INFO - 0:00:11.655 - BrowseTask.doInBackground(): loading container 'Mellow Mix'
-[main (2) ] INFO - 0:00:11.660 - onCreateOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:11.661 - onPrepareOptionsMenu()@ec98be8/2e41698:5237
-[Main #4 (225) ] INFO - 0:00:11.686 - task: start: extractItemsMetadata
-[AsyncTask #1 (187) ] INFO - 0:00:11.686 - finished browsing: got 2 objects
-[AsyncTask #1 (187) ] INFO - 0:00:11.687 - BrowseTask.doInBackground(): no item
-[Main #4: extractItemsMetadata (225) ] INFO - 0:00:11.687 - task: executor 'MetadataExtract #%d': waiting for close to complete...
-[MetadataExtract #1 (268) ] INFO - 0:00:11.688 - task: start: Item #0
-[MetadataExtract #1: Item #0 (268) ] INFO - 0:00:11.689 - AbstractMediaMetadataRetriever: file cache enabled: true
-[MetadataExtract #1: Item #0 (268) ] INFO - 0:00:11.691 - FfmpegMediaMetadataRetriever: hash=-435748687: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Every Dawn’s a Mountain","100000":"false","2":"Tamino","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Babylon","39":"16","8":"2025"}
-[MetadataExtract #1 (268) ] INFO - 0:00:11.692 - task: end, 4ms: Item #0
-[Main #4: extractItemsMetadata (225) ] INFO - 0:00:11.692 - task: executor 'MetadataExtract #%d': close took 5 ms
-[Main #4 (225) ] INFO - 0:00:11.693 - task: end, 7ms: extractItemsMetadata
-[main (2) ] INFO - 0:00:11.693 - onCreateOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:11.695 - onPrepareOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:12.627 - path = [radio-paradise:channel:mellow, radio-paradise:channel:mellow:history]
-[main (2) ] INFO - 0:00:12.628 - onSaveInstanceState()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:12.629 - saveMediaServerState: PMOMusic Media Server
-[main (2) ] INFO - 0:00:12.629 - positionStack: [0, 0]
-[main (2) ] INFO - 0:00:12.629 - itemList: Bundle[{firstVisiblePosition=0}]
-[main (2) ] INFO - 0:00:12.630 - containerPath: [radio-paradise:channel:mellow, radio-paradise:channel:mellow:history]
-[main (2) ] INFO - 0:00:12.633 - onCreateOptionsMenu()@ec98be8/2e41698:5237
-[AsyncTask #1 (187) ] INFO - 0:00:12.633 - BrowseTask.doInBackground(): enter
-[AsyncTask #1 (187) ] INFO - 0:00:12.634 - BrowseTask.doInBackground(): loading container 'Mellow Mix - History'
-[main (2) ] INFO - 0:00:12.634 - onPrepareOptionsMenu()@ec98be8/2e41698:5237
-[Main #4 (225) ] INFO - 0:00:12.737 - task: start: extractItemsMetadata
-[AsyncTask #1 (187) ] INFO - 0:00:12.737 - finished browsing: got 48 objects
-[AsyncTask #1 (187) ] INFO - 0:00:12.738 - BrowseTask.doInBackground(): no item
-[MetadataExtract #2 (270) ] INFO - 0:00:12.740 - task: start: Item #1
-[MetadataExtract #1 (269) ] INFO - 0:00:12.740 - task: start: Item #0
-[MetadataExtract #3 (271) ] INFO - 0:00:12.741 - task: start: Item #2
-[MetadataExtract #4 (272) ] INFO - 0:00:12.741 - task: start: Item #3
-[MetadataExtract #8 (276) ] INFO - 0:00:12.743 - task: start: Item #7
-[Main #4: extractItemsMetadata (225) ] INFO - 0:00:12.742 - task: executor 'MetadataExtract #%d': waiting for close to complete...
-[MetadataExtract #7 (275) ] INFO - 0:00:12.743 - task: start: Item #6
-[MetadataExtract #5 (273) ] INFO - 0:00:12.742 - task: start: Item #4
-[MetadataExtract #6 (274) ] INFO - 0:00:12.742 - task: start: Item #5
-[MetadataExtract #2: Item #1 (270) ] INFO - 0:00:12.743 - FfmpegMediaMetadataRetriever: hash=-1913648982: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Aukai","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Slow Sun","39":"16","9":"206810"}
-[main (2) ] INFO - 0:00:12.745 - onCreateOptionsMenu()@ec98be8/2e41698:5237
-[MetadataExtract #2 (270) ] INFO - 0:00:12.746 - task: end, 6ms: Item #1
-[MetadataExtract #2 (270) ] INFO - 0:00:12.746 - task: start: Item #8
-[main (2) ] INFO - 0:00:12.747 - onPrepareOptionsMenu()@ec98be8/2e41698:5237
-[MetadataExtract #2: Item #8 (270) ] INFO - 0:00:12.753 - FfmpegMediaMetadataRetriever: hash=724650897: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Peter Gabriel","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"The Book of Love","39":"16","9":"216972"}
-[MetadataExtract #2 (270) ] INFO - 0:00:12.753 - task: end, 6ms: Item #8
-[MetadataExtract #2 (270) ] INFO - 0:00:12.753 - task: start: Item #9
-[MetadataExtract #3: Item #2 (271) ] INFO - 0:00:12.755 - FfmpegMediaMetadataRetriever: hash=-106913403: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Diana Krall","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Fly Me to the Moon","39":"16","9":"328724"}
-[MetadataExtract #3 (271) ] INFO - 0:00:12.756 - task: end, 15ms: Item #2
-[MetadataExtract #3 (271) ] INFO - 0:00:12.756 - task: start: Item #10
-[MetadataExtract #4: Item #3 (272) ] INFO - 0:00:12.758 - FfmpegMediaMetadataRetriever: hash=1993842102: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"The Mighty Rootsmen","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"I Won\u0027t Back Down","39":"16","9":"156594"}
-[MetadataExtract #4 (272) ] INFO - 0:00:12.758 - task: end, 18ms: Item #3
-[MetadataExtract #4 (272) ] INFO - 0:00:12.759 - task: start: Item #11
-[MetadataExtract #8: Item #7 (276) ] INFO - 0:00:12.759 - FfmpegMediaMetadataRetriever: hash=42813812: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"I Am Kloot","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Let Them All In","39":"16","9":"231290"}
-[MetadataExtract #8 (276) ] INFO - 0:00:12.760 - task: end, 17ms: Item #7
-[MetadataExtract #8 (276) ] INFO - 0:00:12.760 - task: start: Item #12
-[MetadataExtract #7: Item #6 (275) ] INFO - 0:00:12.761 - FfmpegMediaMetadataRetriever: hash=-962027383: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Ayla Nereo","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Ylva","39":"16","9":"289409"}
-[MetadataExtract #7 (275) ] INFO - 0:00:12.762 - task: end, 19ms: Item #6
-[MetadataExtract #7 (275) ] INFO - 0:00:12.763 - task: start: Item #13
-[MetadataExtract #5: Item #4 (273) ] INFO - 0:00:12.763 - FfmpegMediaMetadataRetriever: hash=-407518392: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Josh Ritter","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"The Curse","39":"16","9":"292250"}
-[MetadataExtract #5 (273) ] INFO - 0:00:12.764 - task: end, 22ms: Item #4
-[MetadataExtract #5 (273) ] INFO - 0:00:12.764 - task: start: Item #14
-[MetadataExtract #6: Item #5 (274) ] INFO - 0:00:12.766 - FfmpegMediaMetadataRetriever: hash=-1138992005: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Michael Hedges","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Prelude to Cello Suite #1 (JS Bach)","39":"16","9":"139943"}
-[MetadataExtract #6 (274) ] INFO - 0:00:12.766 - task: end, 24ms: Item #5
-[MetadataExtract #6 (274) ] INFO - 0:00:12.766 - task: start: Item #15
-[MetadataExtract #1: Item #0 (269) ] INFO - 0:00:12.767 - FfmpegMediaMetadataRetriever: hash=-1759650642: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Sinéad O\u0027Connor","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Dancing Lessons","39":"16","9":"249470"}
-[MetadataExtract #1 (269) ] INFO - 0:00:12.768 - task: end, 28ms: Item #0
-[MetadataExtract #1 (269) ] INFO - 0:00:12.768 - task: start: Item #16
-[MetadataExtract #2: Item #9 (270) ] INFO - 0:00:12.769 - FfmpegMediaMetadataRetriever: hash=277540764: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Foo Fighters","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Still","39":"16","9":"310800"}
-[MetadataExtract #2 (270) ] INFO - 0:00:12.769 - task: end, 15ms: Item #9
-[MetadataExtract #2 (270) ] INFO - 0:00:12.769 - task: start: Item #17
-[MetadataExtract #3: Item #10 (271) ] INFO - 0:00:12.772 - FfmpegMediaMetadataRetriever: hash=1612634984: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","100000":"false","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","39":"16","9":"5050"}
-[MetadataExtract #3 (271) ] INFO - 0:00:12.773 - task: end, 17ms: Item #10
-[MetadataExtract #3 (271) ] INFO - 0:00:12.773 - task: start: Item #18
-[MetadataExtract #4: Item #11 (272) ] INFO - 0:00:12.776 - FfmpegMediaMetadataRetriever: hash=1385248911: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Billy Bragg \u0026 Wilco","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"When The Roses Bloom Again","39":"16","9":"246000"}
-[MetadataExtract #4 (272) ] INFO - 0:00:12.777 - task: end, 18ms: Item #11
-[MetadataExtract #4 (272) ] INFO - 0:00:12.778 - task: start: Item #19
-[MetadataExtract #8: Item #12 (276) ] INFO - 0:00:12.778 - FfmpegMediaMetadataRetriever: hash=-352088410: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Suzanne Vega","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"12 Mortal Men","39":"16","9":"157000"}
-[MetadataExtract #8 (276) ] INFO - 0:00:12.779 - task: end, 19ms: Item #12
-[MetadataExtract #8 (276) ] INFO - 0:00:12.779 - task: start: Item #20
-[MetadataExtract #7: Item #13 (275) ] INFO - 0:00:12.782 - FfmpegMediaMetadataRetriever: hash=1891231045: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"The Sundays","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Wild Horses","39":"16","9":"277000"}
-[MetadataExtract #7 (275) ] INFO - 0:00:12.783 - task: end, 21ms: Item #13
-[MetadataExtract #7 (275) ] INFO - 0:00:12.784 - task: start: Item #21
-[MetadataExtract #5: Item #14 (273) ] INFO - 0:00:12.784 - FfmpegMediaMetadataRetriever: hash=-1053255835: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Tim Buckley","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Happy Time","39":"16","9":"190000"}
-[MetadataExtract #5 (273) ] INFO - 0:00:12.785 - task: end, 20ms: Item #14
-[MetadataExtract #5 (273) ] INFO - 0:00:12.785 - task: start: Item #22
-[MetadataExtract #7: Item #21 (275) ] INFO - 0:00:12.785 - FfmpegMediaMetadataRetriever: hash=1757379569: expensive op: retrieveMetadata
-[MetadataExtract #1: Item #16 (269) ] INFO - 0:00:12.785 - FfmpegMediaMetadataRetriever: hash=-1783977340: expensive op: retrieveMetadata
-[MetadataExtract #2: Item #17 (270) ] INFO - 0:00:12.786 - FfmpegMediaMetadataRetriever: hash=1845475776: expensive op: retrieveMetadata
-[MetadataExtract #3: Item #18 (271) ] INFO - 0:00:12.786 - FfmpegMediaMetadataRetriever: hash=1710638978: expensive op: retrieveMetadata
-[MetadataExtract #4: Item #19 (272) ] INFO - 0:00:12.787 - FfmpegMediaMetadataRetriever: hash=-894762509: expensive op: retrieveMetadata
-[MetadataExtract #8: Item #20 (276) ] INFO - 0:00:12.788 - FfmpegMediaMetadataRetriever: hash=-993423853: expensive op: retrieveMetadata
-[MetadataExtract #6: Item #15 (274) ] INFO - 0:00:12.790 - FfmpegMediaMetadataRetriever: hash=1003137573: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Trespassers William","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Different Stars","39":"16","9":"278647"}
-[MetadataExtract #6 (274) ] INFO - 0:00:12.791 - task: end, 24ms: Item #15
-[MetadataExtract #6 (274) ] INFO - 0:00:12.791 - task: start: Item #23
-[MetadataExtract #5: Item #22 (273) ] INFO - 0:00:12.791 - FfmpegMediaMetadataRetriever: hash=-395410295: expensive op: retrieveMetadata
-[MetadataExtract #6: Item #23 (274) ] INFO - 0:00:12.792 - FfmpegMediaMetadataRetriever: hash=-2056388036: expensive op: retrieveMetadata
-[MetadataExtract #4: Item #19 (272) ] INFO - 0:00:12.818 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/f0b1544d237f5347612a7f7832f8f1ac
-[MetadataExtract #1: Item #16 (269) ] INFO - 0:00:12.820 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/2ad68dd550b16313027271cb63d9153b
-[MetadataExtract #8: Item #20 (276) ] INFO - 0:00:12.837 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/aa7e068ebfa7f443972ab1b72cffc3a8
-[MetadataExtract #7: Item #21 (275) ] INFO - 0:00:12.848 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/508871fecdd0d94347006d53b427111e
-[MetadataExtract #5: Item #22 (273) ] INFO - 0:00:12.852 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/ca41892cc7c2b2298f6eff806ba2399a
-[MetadataExtract #3: Item #18 (271) ] INFO - 0:00:12.852 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/82dc11173748da450c8bdb1067b00bbb
-[MetadataExtract #6: Item #23 (274) ] INFO - 0:00:12.854 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/c8befc1539c774548f106f2f5ea6c4bf
-[MetadataExtract #2: Item #17 (270) ] INFO - 0:00:12.854 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/67c92e72e18e489dee64f769588cb1ce
-[MetadataExtract #4: Item #19 (272) ] INFO - 0:00:13.53 - ffprobe finished
-[MetadataExtract #4: Item #19 (272) ] INFO - 0:00:13.54 - ffprobe took: 241 ms
-[MetadataExtract #4: Item #19 (272) ] INFO - 0:00:13.54 - added cached probe info for http://192.168.0.138:8080/audio/flac/f0b1544d237f5347612a7f7832f8f1ac_null_, expires in 8 seconds
-[MetadataExtract #4: Item #19 (272) ] INFO - 0:00:13.54 - FfmpegMediaMetadataRetriever: hash=-894762509: retrieveMetadata took: 268 ms
-[MetadataExtract #4: Item #19 (272) ] INFO - 0:00:13.55 - FfmpegMediaMetadataRetriever: hash=-894762509: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","100000":"false","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","39":"16","9":"8516"}
-[MetadataExtract #4 (272) ] INFO - 0:00:13.56 - task: end, 278ms: Item #19
-[MetadataExtract #4 (272) ] INFO - 0:00:13.56 - task: start: Item #24
-[MetadataExtract #4: Item #24 (272) ] INFO - 0:00:13.56 - FfmpegMediaMetadataRetriever: hash=1899042957: expensive op: retrieveMetadata
-[MetadataExtract #4: Item #24 (272) ] INFO - 0:00:13.88 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/43c48c8e99e74c18b5b404eb388dce24
-[MetadataExtract #7: Item #21 (275) ] INFO - 0:00:13.135 - ffprobe finished
-[MetadataExtract #7: Item #21 (275) ] INFO - 0:00:13.135 - ffprobe took: 307 ms
-[MetadataExtract #7: Item #21 (275) ] INFO - 0:00:13.136 - added cached probe info for http://192.168.0.138:8080/audio/flac/508871fecdd0d94347006d53b427111e_null_, expires in 235 seconds
-[MetadataExtract #7: Item #21 (275) ] INFO - 0:00:13.136 - FfmpegMediaMetadataRetriever: hash=1757379569: retrieveMetadata took: 351 ms
-[MetadataExtract #7: Item #21 (275) ] INFO - 0:00:13.137 - FfmpegMediaMetadataRetriever: hash=1757379569: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"The Cactus Blossoms","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Mississippi","39":"16","9":"235634"}
-[MetadataExtract #7 (275) ] INFO - 0:00:13.138 - task: end, 354ms: Item #21
-[MetadataExtract #7 (275) ] INFO - 0:00:13.139 - task: start: Item #25
-[MetadataExtract #7: Item #25 (275) ] INFO - 0:00:13.140 - FfmpegMediaMetadataRetriever: hash=-524282951: expensive op: retrieveMetadata
-[MetadataExtract #7: Item #25 (275) ] INFO - 0:00:13.185 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/2dc9f632f96001db6f6e0c714e61ea00
-[MetadataExtract #3: Item #18 (271) ] INFO - 0:00:13.198 - ffprobe finished
-[MetadataExtract #3: Item #18 (271) ] INFO - 0:00:13.201 - ffprobe took: 360 ms
-[MetadataExtract #3: Item #18 (271) ] INFO - 0:00:13.202 - added cached probe info for http://192.168.0.138:8080/audio/flac/82dc11173748da450c8bdb1067b00bbb_null_, expires in 249 seconds
-[MetadataExtract #3: Item #18 (271) ] INFO - 0:00:13.203 - FfmpegMediaMetadataRetriever: hash=1710638978: retrieveMetadata took: 417 ms
-[MetadataExtract #3: Item #18 (271) ] INFO - 0:00:13.205 - FfmpegMediaMetadataRetriever: hash=1710638978: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Sinéad O’Connor","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Back Where You Belong","39":"16","9":"249150"}
-[MetadataExtract #3 (271) ] INFO - 0:00:13.206 - task: end, 432ms: Item #18
-[MetadataExtract #3 (271) ] INFO - 0:00:13.207 - task: start: Item #26
-[MetadataExtract #3: Item #26 (271) ] INFO - 0:00:13.209 - FfmpegMediaMetadataRetriever: hash=687172484: expensive op: retrieveMetadata
-[MetadataExtract #2: Item #17 (270) ] INFO - 0:00:13.251 - ffprobe finished
-[MetadataExtract #2: Item #17 (270) ] INFO - 0:00:13.251 - ffprobe took: 414 ms
-[MetadataExtract #2: Item #17 (270) ] INFO - 0:00:13.252 - added cached probe info for http://192.168.0.138:8080/audio/flac/67c92e72e18e489dee64f769588cb1ce_null_, expires in 320 seconds
-[MetadataExtract #2: Item #17 (270) ] INFO - 0:00:13.252 - FfmpegMediaMetadataRetriever: hash=1845475776: retrieveMetadata took: 466 ms
-[MetadataExtract #2: Item #17 (270) ] INFO - 0:00:13.253 - FfmpegMediaMetadataRetriever: hash=1845475776: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Bruce Cockburn","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Wondering Where the Lions Are (Live)","39":"16","9":"320000"}
-[MetadataExtract #2 (270) ] INFO - 0:00:13.254 - task: end, 484ms: Item #17
-[MetadataExtract #2 (270) ] INFO - 0:00:13.254 - task: start: Item #27
-[MetadataExtract #2: Item #27 (270) ] INFO - 0:00:13.254 - FfmpegMediaMetadataRetriever: hash=131303568: expensive op: retrieveMetadata
-[MetadataExtract #5: Item #22 (273) ] INFO - 0:00:13.258 - ffprobe finished
-[MetadataExtract #5: Item #22 (273) ] INFO - 0:00:13.258 - ffprobe took: 419 ms
-[MetadataExtract #5: Item #22 (273) ] INFO - 0:00:13.259 - added cached probe info for http://192.168.0.138:8080/audio/flac/ca41892cc7c2b2298f6eff806ba2399a_null_, expires in 211 seconds
-[MetadataExtract #5: Item #22 (273) ] INFO - 0:00:13.259 - FfmpegMediaMetadataRetriever: hash=-395410295: retrieveMetadata took: 467 ms
-[MetadataExtract #5: Item #22 (273) ] INFO - 0:00:13.260 - FfmpegMediaMetadataRetriever: hash=-395410295: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Sierra Ferrell","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Don’t Let Your Deal Go Down","39":"16","9":"211710"}
-[MetadataExtract #5 (273) ] INFO - 0:00:13.260 - task: end, 475ms: Item #22
-[MetadataExtract #5 (273) ] INFO - 0:00:13.261 - task: start: Item #28
-[MetadataExtract #5: Item #28 (273) ] INFO - 0:00:13.261 - FfmpegMediaMetadataRetriever: hash=485794117: expensive op: retrieveMetadata
-[MetadataExtract #3: Item #26 (271) ] INFO - 0:00:13.264 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/d5b6f3e1ccc8f4828ca2dc0efd69b987
-[MetadataExtract #2: Item #27 (270) ] INFO - 0:00:13.297 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/6ea1402e7b33ffb328887cb914d51778
-[MetadataExtract #8: Item #20 (276) ] INFO - 0:00:13.304 - ffprobe finished
-[MetadataExtract #8: Item #20 (276) ] INFO - 0:00:13.305 - ffprobe took: 472 ms
-[MetadataExtract #8: Item #20 (276) ] INFO - 0:00:13.305 - added cached probe info for http://192.168.0.138:8080/audio/flac/aa7e068ebfa7f443972ab1b72cffc3a8_null_, expires in 202 seconds
-[MetadataExtract #8: Item #20 (276) ] INFO - 0:00:13.306 - FfmpegMediaMetadataRetriever: hash=-993423853: retrieveMetadata took: 518 ms
-[MetadataExtract #5: Item #28 (273) ] INFO - 0:00:13.305 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/ffda328ef818229238661ec37ff37956
-[MetadataExtract #8: Item #20 (276) ] INFO - 0:00:13.307 - FfmpegMediaMetadataRetriever: hash=-993423853: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"R.E.M.","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Perfect Circle","39":"16","9":"202700"}
-[MetadataExtract #8 (276) ] INFO - 0:00:13.307 - task: end, 527ms: Item #20
-[MetadataExtract #8 (276) ] INFO - 0:00:13.307 - task: start: Item #29
-[MetadataExtract #8: Item #29 (276) ] INFO - 0:00:13.308 - FfmpegMediaMetadataRetriever: hash=-775299294: expensive op: retrieveMetadata
-[MetadataExtract #1: Item #16 (269) ] INFO - 0:00:13.348 - ffprobe finished
-[MetadataExtract #1: Item #16 (269) ] INFO - 0:00:13.349 - ffprobe took: 534 ms
-[MetadataExtract #1: Item #16 (269) ] INFO - 0:00:13.349 - added cached probe info for http://192.168.0.138:8080/audio/flac/2ad68dd550b16313027271cb63d9153b_null_, expires in 260 seconds
-[MetadataExtract #1: Item #16 (269) ] INFO - 0:00:13.350 - FfmpegMediaMetadataRetriever: hash=-1783977340: retrieveMetadata took: 565 ms
-[MetadataExtract #1: Item #16 (269) ] INFO - 0:00:13.350 - FfmpegMediaMetadataRetriever: hash=-1783977340: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"David Gray","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Babylon","39":"16","9":"260750"}
-[MetadataExtract #1 (269) ] INFO - 0:00:13.351 - task: end, 583ms: Item #16
-[MetadataExtract #1 (269) ] INFO - 0:00:13.351 - task: start: Item #30
-[MetadataExtract #1: Item #30 (269) ] INFO - 0:00:13.352 - FfmpegMediaMetadataRetriever: hash=-1561902046: expensive op: retrieveMetadata
-[MetadataExtract #8: Item #29 (276) ] INFO - 0:00:13.357 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/497c78b081943f22c0b7a2861e0bb35f
-[MetadataExtract #6: Item #23 (274) ] INFO - 0:00:13.379 - ffprobe finished
-[MetadataExtract #6: Item #23 (274) ] INFO - 0:00:13.380 - ffprobe took: 537 ms
-[MetadataExtract #6: Item #23 (274) ] INFO - 0:00:13.380 - added cached probe info for http://192.168.0.138:8080/audio/flac/c8befc1539c774548f106f2f5ea6c4bf_null_, expires in 231 seconds
-[MetadataExtract #6: Item #23 (274) ] INFO - 0:00:13.381 - FfmpegMediaMetadataRetriever: hash=-2056388036: retrieveMetadata took: 589 ms
-[MetadataExtract #6: Item #23 (274) ] INFO - 0:00:13.383 - FfmpegMediaMetadataRetriever: hash=-2056388036: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Norah Jones","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Light as a Feather","39":"16","9":"231305"}
-[MetadataExtract #6 (274) ] INFO - 0:00:13.384 - task: end, 593ms: Item #23
-[MetadataExtract #6 (274) ] INFO - 0:00:13.384 - task: start: Item #31
-[MetadataExtract #6: Item #31 (274) ] INFO - 0:00:13.385 - FfmpegMediaMetadataRetriever: hash=1402956451: expensive op: retrieveMetadata
-[MetadataExtract #1: Item #30 (269) ] INFO - 0:00:13.390 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/e87aa42bc2f5632ebdf983a47b90d4fc
-[MetadataExtract #4: Item #24 (272) ] INFO - 0:00:13.402 - ffprobe finished
-[MetadataExtract #4: Item #24 (272) ] INFO - 0:00:13.402 - ffprobe took: 321 ms
-[MetadataExtract #4: Item #24 (272) ] INFO - 0:00:13.402 - added cached probe info for http://192.168.0.138:8080/audio/flac/43c48c8e99e74c18b5b404eb388dce24_null_, expires in 182 seconds
-[MetadataExtract #4: Item #24 (272) ] INFO - 0:00:13.403 - FfmpegMediaMetadataRetriever: hash=1899042957: retrieveMetadata took: 347 ms
-[MetadataExtract #4: Item #24 (272) ] INFO - 0:00:13.404 - FfmpegMediaMetadataRetriever: hash=1899042957: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"London Grammar","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Shyer","39":"16","9":"182000"}
-[MetadataExtract #4 (272) ] INFO - 0:00:13.404 - task: end, 348ms: Item #24
-[MetadataExtract #4 (272) ] INFO - 0:00:13.405 - task: start: Item #32
-[MetadataExtract #4: Item #32 (272) ] INFO - 0:00:13.405 - FfmpegMediaMetadataRetriever: hash=1984356975: expensive op: retrieveMetadata
-[MetadataExtract #6: Item #31 (274) ] INFO - 0:00:13.424 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/77d393f256c7d2b397d9af5c8504596c
-[MetadataExtract #4: Item #32 (272) ] INFO - 0:00:13.442 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/069ef589ce1d9621a87afb28e7fa658c
-[MetadataExtract #7: Item #25 (275) ] INFO - 0:00:13.575 - ffprobe finished
-[MetadataExtract #7: Item #25 (275) ] INFO - 0:00:13.577 - ffprobe took: 395 ms
-[MetadataExtract #7: Item #25 (275) ] INFO - 0:00:13.578 - added cached probe info for http://192.168.0.138:8080/audio/flac/2dc9f632f96001db6f6e0c714e61ea00_null_, expires in 114 seconds
-[MetadataExtract #7: Item #25 (275) ] INFO - 0:00:13.579 - FfmpegMediaMetadataRetriever: hash=-524282951: retrieveMetadata took: 439 ms
-[MetadataExtract #7: Item #25 (275) ] INFO - 0:00:13.581 - FfmpegMediaMetadataRetriever: hash=-524282951: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Meyer, Douglas \u0026 Barenberg","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"The Hymn Of Ordinary Motion","39":"16","9":"114000"}
-[MetadataExtract #7 (275) ] INFO - 0:00:13.582 - task: end, 443ms: Item #25
-[MetadataExtract #7 (275) ] INFO - 0:00:13.582 - task: start: Item #33
-[MetadataExtract #7: Item #33 (275) ] INFO - 0:00:13.584 - FfmpegMediaMetadataRetriever: hash=1977966954: expensive op: retrieveMetadata
-[MetadataExtract #7: Item #33 (275) ] INFO - 0:00:13.629 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/ef96c7fc42def2977a9963e2d4e892ff
-[MetadataExtract #5: Item #28 (273) ] INFO - 0:00:13.638 - ffprobe finished
-[MetadataExtract #5: Item #28 (273) ] INFO - 0:00:13.638 - ffprobe took: 335 ms
-[MetadataExtract #5: Item #28 (273) ] INFO - 0:00:13.639 - added cached probe info for http://192.168.0.138:8080/audio/flac/ffda328ef818229238661ec37ff37956_null_, expires in 325 seconds
-[MetadataExtract #5: Item #28 (273) ] INFO - 0:00:13.639 - FfmpegMediaMetadataRetriever: hash=485794117: retrieveMetadata took: 378 ms
-[MetadataExtract #5: Item #28 (273) ] INFO - 0:00:13.640 - FfmpegMediaMetadataRetriever: hash=485794117: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Tracy Chapman","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"New Beginning","39":"16","9":"325000"}
-[MetadataExtract #5 (273) ] INFO - 0:00:13.640 - task: end, 379ms: Item #28
-[MetadataExtract #5 (273) ] INFO - 0:00:13.640 - task: start: Item #34
-[MetadataExtract #5: Item #34 (273) ] INFO - 0:00:13.641 - FfmpegMediaMetadataRetriever: hash=1475446356: expensive op: retrieveMetadata
-[MetadataExtract #5: Item #34 (273) ] INFO - 0:00:13.674 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/4d69f84b74a86795a52fcb73c3800af8
-[MetadataExtract #2: Item #27 (270) ] INFO - 0:00:13.748 - ffprobe finished
-[MetadataExtract #2: Item #27 (270) ] INFO - 0:00:13.750 - ffprobe took: 457 ms
-[MetadataExtract #2: Item #27 (270) ] INFO - 0:00:13.751 - added cached probe info for http://192.168.0.138:8080/audio/flac/6ea1402e7b33ffb328887cb914d51778_null_, expires in 199 seconds
-[MetadataExtract #2: Item #27 (270) ] INFO - 0:00:13.751 - FfmpegMediaMetadataRetriever: hash=131303568: retrieveMetadata took: 497 ms
-[MetadataExtract #2: Item #27 (270) ] INFO - 0:00:13.753 - FfmpegMediaMetadataRetriever: hash=131303568: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Neko Case","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Buckets of Rain","39":"16","9":"199000"}
-[MetadataExtract #2 (270) ] INFO - 0:00:13.754 - task: end, 500ms: Item #27
-[MetadataExtract #2 (270) ] INFO - 0:00:13.755 - task: start: Item #35
-[MetadataExtract #2: Item #35 (270) ] INFO - 0:00:13.756 - FfmpegMediaMetadataRetriever: hash=1109877331: expensive op: retrieveMetadata
-[MetadataExtract #3: Item #26 (271) ] INFO - 0:00:13.793 - ffprobe finished
-[MetadataExtract #3: Item #26 (271) ] INFO - 0:00:13.798 - ffprobe took: 540 ms
-[MetadataExtract #3: Item #26 (271) ] INFO - 0:00:13.805 - added cached probe info for http://192.168.0.138:8080/audio/flac/d5b6f3e1ccc8f4828ca2dc0efd69b987_null_, expires in 229 seconds
-[MetadataExtract #3: Item #26 (271) ] INFO - 0:00:13.806 - FfmpegMediaMetadataRetriever: hash=687172484: retrieveMetadata took: 597 ms
-[MetadataExtract #8: Item #29 (276) ] INFO - 0:00:13.808 - ffprobe finished
-[MetadataExtract #2: Item #35 (270) ] INFO - 0:00:13.809 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/667f1ebbc85d6440a7ff4afb9a527b89
-[MetadataExtract #8: Item #29 (276) ] INFO - 0:00:13.809 - ffprobe took: 463 ms
-[MetadataExtract #8: Item #29 (276) ] INFO - 0:00:13.811 - added cached probe info for http://192.168.0.138:8080/audio/flac/497c78b081943f22c0b7a2861e0bb35f_null_, expires in 188 seconds
-[MetadataExtract #3: Item #26 (271) ] INFO - 0:00:13.808 - FfmpegMediaMetadataRetriever: hash=687172484: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Tom Waits","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"The Heart of Saturday Night","39":"16","9":"229000"}
-[MetadataExtract #8: Item #29 (276) ] INFO - 0:00:13.812 - FfmpegMediaMetadataRetriever: hash=-775299294: retrieveMetadata took: 504 ms
-[MetadataExtract #3 (271) ] INFO - 0:00:13.813 - task: end, 605ms: Item #26
-[MetadataExtract #8: Item #29 (276) ] INFO - 0:00:13.818 - FfmpegMediaMetadataRetriever: hash=-775299294: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Blind Faith","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Can\u0027t Find My Way Home","39":"16","9":"188500"}
-[MetadataExtract #8 (276) ] INFO - 0:00:13.819 - task: end, 511ms: Item #29
-[MetadataExtract #8 (276) ] INFO - 0:00:13.819 - task: start: Item #37
-[MetadataExtract #8: Item #37 (276) ] INFO - 0:00:13.822 - FfmpegMediaMetadataRetriever: hash=496599921: expensive op: retrieveMetadata
-[MetadataExtract #3 (271) ] INFO - 0:00:13.813 - task: start: Item #36
-[MetadataExtract #3: Item #36 (271) ] INFO - 0:00:13.831 - FfmpegMediaMetadataRetriever: hash=-2093135018: expensive op: retrieveMetadata
-[MetadataExtract #8: Item #37 (276) ] INFO - 0:00:13.867 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/a8f5995175f02b30b884ec3324c831a4
-[MetadataExtract #3: Item #36 (271) ] INFO - 0:00:13.889 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/d46e57c82ed02a1848e32c0b01f21cb7
-[MetadataExtract #1: Item #30 (269) ] INFO - 0:00:13.895 - ffprobe finished
-[MetadataExtract #1: Item #30 (269) ] INFO - 0:00:13.895 - ffprobe took: 512 ms
-[MetadataExtract #1: Item #30 (269) ] INFO - 0:00:13.896 - added cached probe info for http://192.168.0.138:8080/audio/flac/e87aa42bc2f5632ebdf983a47b90d4fc_null_, expires in 136 seconds
-[MetadataExtract #1: Item #30 (269) ] INFO - 0:00:13.896 - FfmpegMediaMetadataRetriever: hash=-1561902046: retrieveMetadata took: 544 ms
-[MetadataExtract #1: Item #30 (269) ] INFO - 0:00:13.897 - FfmpegMediaMetadataRetriever: hash=-1561902046: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Willie Nelson","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Blue Eyes Crying in the Rain","39":"16","9":"136200"}
-[MetadataExtract #1 (269) ] INFO - 0:00:13.897 - task: end, 546ms: Item #30
-[MetadataExtract #1 (269) ] INFO - 0:00:13.897 - task: start: Item #38
-[MetadataExtract #1: Item #38 (269) ] INFO - 0:00:13.898 - FfmpegMediaMetadataRetriever: hash=1709432058: expensive op: retrieveMetadata
-[MetadataExtract #6: Item #31 (274) ] INFO - 0:00:13.921 - ffprobe finished
-[MetadataExtract #6: Item #31 (274) ] INFO - 0:00:13.925 - ffprobe took: 509 ms
-[MetadataExtract #6: Item #31 (274) ] INFO - 0:00:13.926 - added cached probe info for http://192.168.0.138:8080/audio/flac/77d393f256c7d2b397d9af5c8504596c_null_, expires in 300 seconds
-[MetadataExtract #6: Item #31 (274) ] INFO - 0:00:13.927 - FfmpegMediaMetadataRetriever: hash=1402956451: retrieveMetadata took: 541 ms
-[MetadataExtract #6: Item #31 (274) ] INFO - 0:00:13.929 - FfmpegMediaMetadataRetriever: hash=1402956451: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Jon Redfern","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"I Love the Sun","39":"16","9":"300000"}
-[MetadataExtract #6 (274) ] INFO - 0:00:13.933 - task: end, 549ms: Item #31
-[MetadataExtract #6 (274) ] INFO - 0:00:13.933 - task: start: Item #39
-[MetadataExtract #6: Item #39 (274) ] INFO - 0:00:13.937 - FfmpegMediaMetadataRetriever: hash=-475084519: expensive op: retrieveMetadata
-[MetadataExtract #1: Item #38 (269) ] INFO - 0:00:13.945 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/8122ae21da8da1e762a22dabd9817802
-[MetadataExtract #6: Item #39 (274) ] INFO - 0:00:13.984 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/b71d978c46b591f2211c5834a0e5b902
-[MetadataExtract #4: Item #32 (272) ] INFO - 0:00:14.66 - ffprobe finished
-[MetadataExtract #4: Item #32 (272) ] INFO - 0:00:14.67 - ffprobe took: 637 ms
-[MetadataExtract #4: Item #32 (272) ] INFO - 0:00:14.67 - added cached probe info for http://192.168.0.138:8080/audio/flac/069ef589ce1d9621a87afb28e7fa658c_null_, expires in 232 seconds
-[MetadataExtract #4: Item #32 (272) ] INFO - 0:00:14.67 - FfmpegMediaMetadataRetriever: hash=1984356975: retrieveMetadata took: 661 ms
-[MetadataExtract #4: Item #32 (272) ] INFO - 0:00:14.68 - FfmpegMediaMetadataRetriever: hash=1984356975: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Cyndi Lauper","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Time After Time","39":"16","9":"232250"}
-[MetadataExtract #4 (272) ] INFO - 0:00:14.68 - task: end, 663ms: Item #32
-[MetadataExtract #4 (272) ] INFO - 0:00:14.69 - task: start: Item #40
-[MetadataExtract #4: Item #40 (272) ] INFO - 0:00:14.69 - FfmpegMediaMetadataRetriever: hash=-238367317: expensive op: retrieveMetadata
-[MetadataExtract #4: Item #40 (272) ] INFO - 0:00:14.108 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/079e09407590d3c89234f3433280c3e0
-[MetadataExtract #5: Item #34 (273) ] INFO - 0:00:14.168 - ffprobe finished
-[MetadataExtract #5: Item #34 (273) ] INFO - 0:00:14.169 - ffprobe took: 498 ms
-[MetadataExtract #5: Item #34 (273) ] INFO - 0:00:14.169 - added cached probe info for http://192.168.0.138:8080/audio/flac/4d69f84b74a86795a52fcb73c3800af8_null_, expires in 191 seconds
-[MetadataExtract #5: Item #34 (273) ] INFO - 0:00:14.169 - FfmpegMediaMetadataRetriever: hash=1475446356: retrieveMetadata took: 528 ms
-[MetadataExtract #5: Item #34 (273) ] INFO - 0:00:14.173 - FfmpegMediaMetadataRetriever: hash=1475446356: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Elephant Revival","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Barefoot Friend","39":"16","9":"191000"}
-[MetadataExtract #5 (273) ] INFO - 0:00:14.174 - task: end, 534ms: Item #34
-[MetadataExtract #5 (273) ] INFO - 0:00:14.174 - task: start: Item #41
-[MetadataExtract #5: Item #41 (273) ] INFO - 0:00:14.175 - FfmpegMediaMetadataRetriever: hash=-1032742246: expensive op: retrieveMetadata
-[MetadataExtract #5: Item #41 (273) ] INFO - 0:00:14.212 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/1585bae3666307dd663c6f837492dec7
-[MetadataExtract #7: Item #33 (275) ] INFO - 0:00:14.225 - ffprobe finished
-[MetadataExtract #7: Item #33 (275) ] INFO - 0:00:14.230 - ffprobe took: 612 ms
-[MetadataExtract #7: Item #33 (275) ] INFO - 0:00:14.231 - added cached probe info for http://192.168.0.138:8080/audio/flac/ef96c7fc42def2977a9963e2d4e892ff_null_, expires in 222 seconds
-[MetadataExtract #7: Item #33 (275) ] INFO - 0:00:14.231 - FfmpegMediaMetadataRetriever: hash=1977966954: retrieveMetadata took: 647 ms
-[MetadataExtract #7: Item #33 (275) ] INFO - 0:00:14.233 - FfmpegMediaMetadataRetriever: hash=1977966954: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Fleetwood Mac","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Walk a Thin Line","39":"16","9":"222000"}
-[MetadataExtract #7 (275) ] INFO - 0:00:14.234 - task: end, 651ms: Item #33
-[MetadataExtract #7 (275) ] INFO - 0:00:14.235 - task: start: Item #42
-[MetadataExtract #7: Item #42 (275) ] INFO - 0:00:14.236 - FfmpegMediaMetadataRetriever: hash=2140521498: expensive op: retrieveMetadata
-[MetadataExtract #7: Item #42 (275) ] INFO - 0:00:14.293 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/d852d1f210c87200bd68b1429738ca5b
-[MetadataExtract #3: Item #36 (271) ] INFO - 0:00:14.443 - ffprobe finished
-[MetadataExtract #3: Item #36 (271) ] INFO - 0:00:14.445 - ffprobe took: 572 ms
-[MetadataExtract #3: Item #36 (271) ] INFO - 0:00:14.446 - added cached probe info for http://192.168.0.138:8080/audio/flac/d46e57c82ed02a1848e32c0b01f21cb7_null_, expires in 209 seconds
-[MetadataExtract #3: Item #36 (271) ] INFO - 0:00:14.449 - FfmpegMediaMetadataRetriever: hash=-2093135018: retrieveMetadata took: 618 ms
-[MetadataExtract #3: Item #36 (271) ] INFO - 0:00:14.453 - FfmpegMediaMetadataRetriever: hash=-2093135018: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"The Shins","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Turn on Me","39":"16","9":"209500"}
-[MetadataExtract #3 (271) ] INFO - 0:00:14.455 - task: end, 642ms: Item #36
-[MetadataExtract #2: Item #35 (270) ] INFO - 0:00:14.455 - ffprobe finished
-[MetadataExtract #3 (271) ] INFO - 0:00:14.456 - task: start: Item #43
-[MetadataExtract #2: Item #35 (270) ] INFO - 0:00:14.457 - ffprobe took: 662 ms
-[MetadataExtract #2: Item #35 (270) ] INFO - 0:00:14.457 - added cached probe info for http://192.168.0.138:8080/audio/flac/667f1ebbc85d6440a7ff4afb9a527b89_null_, expires in 264 seconds
-[MetadataExtract #2: Item #35 (270) ] INFO - 0:00:14.457 - FfmpegMediaMetadataRetriever: hash=1109877331: retrieveMetadata took: 701 ms
-[MetadataExtract #2: Item #35 (270) ] INFO - 0:00:14.458 - FfmpegMediaMetadataRetriever: hash=1109877331: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Hamilton Leithauser","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"The Silent Orchestra","39":"16","9":"264060"}
-[MetadataExtract #2 (270) ] INFO - 0:00:14.458 - task: end, 704ms: Item #35
-[MetadataExtract #2 (270) ] INFO - 0:00:14.459 - task: start: Item #44
-[MetadataExtract #3: Item #43 (271) ] INFO - 0:00:14.460 - FfmpegMediaMetadataRetriever: hash=-1752918010: expensive op: retrieveMetadata
-[MetadataExtract #2: Item #44 (270) ] INFO - 0:00:14.461 - FfmpegMediaMetadataRetriever: hash=152071891: expensive op: retrieveMetadata
-[MetadataExtract #8: Item #37 (276) ] INFO - 0:00:14.511 - ffprobe finished
-[MetadataExtract #8: Item #37 (276) ] INFO - 0:00:14.511 - ffprobe took: 651 ms
-[MetadataExtract #8: Item #37 (276) ] INFO - 0:00:14.512 - added cached probe info for http://192.168.0.138:8080/audio/flac/a8f5995175f02b30b884ec3324c831a4_null_, expires in 204 seconds
-[MetadataExtract #8: Item #37 (276) ] INFO - 0:00:14.512 - FfmpegMediaMetadataRetriever: hash=496599921: retrieveMetadata took: 690 ms
-[MetadataExtract #8: Item #37 (276) ] INFO - 0:00:14.513 - FfmpegMediaMetadataRetriever: hash=496599921: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Moby","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Wait for Me","39":"16","9":"204000"}
-[MetadataExtract #8 (276) ] INFO - 0:00:14.513 - task: end, 693ms: Item #37
-[MetadataExtract #8 (276) ] INFO - 0:00:14.513 - task: start: Item #45
-[MetadataExtract #8: Item #45 (276) ] INFO - 0:00:14.514 - FfmpegMediaMetadataRetriever: hash=-731586392: expensive op: retrieveMetadata
-[MetadataExtract #2: Item #44 (270) ] INFO - 0:00:14.516 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/f1f31e24b2c730171b8642af0d0bcc04
-[MetadataExtract #3: Item #43 (271) ] INFO - 0:00:14.526 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/ed084a8cd1b7ef2d38d4d8e8e272cc7c
-[MetadataExtract #1: Item #38 (269) ] INFO - 0:00:14.531 - ffprobe finished
-[MetadataExtract #1: Item #38 (269) ] INFO - 0:00:14.533 - ffprobe took: 595 ms
-[MetadataExtract #1: Item #38 (269) ] INFO - 0:00:14.534 - added cached probe info for http://192.168.0.138:8080/audio/flac/8122ae21da8da1e762a22dabd9817802_null_, expires in 289 seconds
-[MetadataExtract #1: Item #38 (269) ] INFO - 0:00:14.535 - FfmpegMediaMetadataRetriever: hash=1709432058: retrieveMetadata took: 637 ms
-[MetadataExtract #1: Item #38 (269) ] INFO - 0:00:14.538 - FfmpegMediaMetadataRetriever: hash=1709432058: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Cocosuma","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Servant","39":"16","9":"289070"}
-[MetadataExtract #1 (269) ] INFO - 0:00:14.539 - task: end, 642ms: Item #38
-[MetadataExtract #1 (269) ] INFO - 0:00:14.540 - task: start: Item #46
-[MetadataExtract #1: Item #46 (269) ] INFO - 0:00:14.541 - FfmpegMediaMetadataRetriever: hash=-174877526: expensive op: retrieveMetadata
-[MetadataExtract #8: Item #45 (276) ] INFO - 0:00:14.553 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/e5bee29a1067b71f8d96ab7bc592eec7
-[MetadataExtract #1: Item #46 (269) ] INFO - 0:00:14.573 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/8ee666aeb2de061e86fc6d568b5f2a18
-[MetadataExtract #6: Item #39 (274) ] INFO - 0:00:14.635 - ffprobe finished
-[MetadataExtract #6: Item #39 (274) ] INFO - 0:00:14.638 - ffprobe took: 661 ms
-[MetadataExtract #6: Item #39 (274) ] INFO - 0:00:14.641 - added cached probe info for http://192.168.0.138:8080/audio/flac/b71d978c46b591f2211c5834a0e5b902_null_, expires in 164 seconds
-[MetadataExtract #6: Item #39 (274) ] INFO - 0:00:14.648 - FfmpegMediaMetadataRetriever: hash=-475084519: retrieveMetadata took: 711 ms
-[MetadataExtract #6: Item #39 (274) ] INFO - 0:00:14.665 - FfmpegMediaMetadataRetriever: hash=-475084519: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Jimi Hendrix","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Castles Made Of Sand","39":"16","9":"164612"}
-[MetadataExtract #6 (274) ] INFO - 0:00:14.671 - task: end, 737ms: Item #39
-[MetadataExtract #6 (274) ] INFO - 0:00:14.674 - task: start: Item #47
-[MetadataExtract #6: Item #47 (274) ] INFO - 0:00:14.680 - FfmpegMediaMetadataRetriever: hash=1850019505: expensive op: retrieveMetadata
-[MetadataExtract #6: Item #47 (274) ] INFO - 0:00:14.774 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/4c33e09beef28347ed88555d69adfa0c
-[MetadataExtract #4: Item #40 (272) ] INFO - 0:00:14.804 - ffprobe finished
-[MetadataExtract #4: Item #40 (272) ] INFO - 0:00:14.806 - ffprobe took: 710 ms
-[MetadataExtract #4: Item #40 (272) ] INFO - 0:00:14.808 - added cached probe info for http://192.168.0.138:8080/audio/flac/079e09407590d3c89234f3433280c3e0_null_, expires in 182 seconds
-[MetadataExtract #4: Item #40 (272) ] INFO - 0:00:14.809 - FfmpegMediaMetadataRetriever: hash=-238367317: retrieveMetadata took: 740 ms
-[MetadataExtract #4: Item #40 (272) ] INFO - 0:00:14.811 - FfmpegMediaMetadataRetriever: hash=-238367317: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Oi Va Voi","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"I Know What You Are","39":"16","9":"182000"}
-[MetadataExtract #4 (272) ] INFO - 0:00:14.834 - task: end, 765ms: Item #40
-[MetadataExtract #5: Item #41 (273) ] INFO - 0:00:14.848 - ffprobe finished
-[MetadataExtract #5: Item #41 (273) ] INFO - 0:00:14.848 - ffprobe took: 644 ms
-[MetadataExtract #5: Item #41 (273) ] INFO - 0:00:14.849 - added cached probe info for http://192.168.0.138:8080/audio/flac/1585bae3666307dd663c6f837492dec7_null_, expires in 193 seconds
-[MetadataExtract #5: Item #41 (273) ] INFO - 0:00:14.849 - FfmpegMediaMetadataRetriever: hash=-1032742246: retrieveMetadata took: 674 ms
-[MetadataExtract #5: Item #41 (273) ] INFO - 0:00:14.850 - FfmpegMediaMetadataRetriever: hash=-1032742246: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Wilco","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Sky Blue Sky","39":"16","9":"193957"}
-[MetadataExtract #5 (273) ] INFO - 0:00:14.850 - task: end, 676ms: Item #41
-[MetadataExtract #7: Item #42 (275) ] INFO - 0:00:14.966 - ffprobe finished
-[MetadataExtract #7: Item #42 (275) ] INFO - 0:00:14.967 - ffprobe took: 682 ms
-[MetadataExtract #7: Item #42 (275) ] INFO - 0:00:14.968 - added cached probe info for http://192.168.0.138:8080/audio/flac/d852d1f210c87200bd68b1429738ca5b_null_, expires in 215 seconds
-[MetadataExtract #7: Item #42 (275) ] INFO - 0:00:14.969 - FfmpegMediaMetadataRetriever: hash=2140521498: retrieveMetadata took: 733 ms
-[MetadataExtract #7: Item #42 (275) ] INFO - 0:00:14.972 - FfmpegMediaMetadataRetriever: hash=2140521498: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Manchester Orchestra","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Capital Karma","39":"16","9":"215108"}
-[MetadataExtract #7 (275) ] INFO - 0:00:14.985 - task: end, 750ms: Item #42
-[MetadataExtract #3: Item #43 (271) ] INFO - 0:00:14.999 - ffprobe finished
-[MetadataExtract #3: Item #43 (271) ] INFO - 0:00:14.999 - ffprobe took: 492 ms
-[MetadataExtract #3: Item #43 (271) ] INFO - 0:00:15.0 - added cached probe info for http://192.168.0.138:8080/audio/flac/ed084a8cd1b7ef2d38d4d8e8e272cc7c_null_, expires in 201 seconds
-[MetadataExtract #3: Item #43 (271) ] INFO - 0:00:15.0 - FfmpegMediaMetadataRetriever: hash=-1752918010: retrieveMetadata took: 540 ms
-[MetadataExtract #3: Item #43 (271) ] INFO - 0:00:15.1 - FfmpegMediaMetadataRetriever: hash=-1752918010: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Paul Simon","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Loves Me Like A Rock","39":"16","9":"201000"}
-[MetadataExtract #3 (271) ] INFO - 0:00:15.1 - task: end, 546ms: Item #43
-[MetadataExtract #2: Item #44 (270) ] INFO - 0:00:15.24 - ffprobe finished
-[MetadataExtract #2: Item #44 (270) ] INFO - 0:00:15.25 - ffprobe took: 516 ms
-[MetadataExtract #2: Item #44 (270) ] INFO - 0:00:15.25 - added cached probe info for http://192.168.0.138:8080/audio/flac/f1f31e24b2c730171b8642af0d0bcc04_null_, expires in 336 seconds
-[MetadataExtract #2: Item #44 (270) ] INFO - 0:00:15.25 - FfmpegMediaMetadataRetriever: hash=152071891: retrieveMetadata took: 564 ms
-[MetadataExtract #2: Item #44 (270) ] INFO - 0:00:15.26 - FfmpegMediaMetadataRetriever: hash=152071891: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Tamino","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Babylon","39":"16","9":"336306"}
-[MetadataExtract #2 (270) ] INFO - 0:00:15.26 - task: end, 568ms: Item #44
-[MetadataExtract #1: Item #46 (269) ] INFO - 0:00:15.35 - ffprobe finished
-[MetadataExtract #1: Item #46 (269) ] INFO - 0:00:15.37 - ffprobe took: 473 ms
-[MetadataExtract #1: Item #46 (269) ] INFO - 0:00:15.38 - added cached probe info for http://192.168.0.138:8080/audio/flac/8ee666aeb2de061e86fc6d568b5f2a18_null_, expires in 180 seconds
-[MetadataExtract #1: Item #46 (269) ] INFO - 0:00:15.38 - FfmpegMediaMetadataRetriever: hash=-174877526: retrieveMetadata took: 498 ms
-[MetadataExtract #1: Item #46 (269) ] INFO - 0:00:15.40 - FfmpegMediaMetadataRetriever: hash=-174877526: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Jimmy Cliff","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"The Harder They Come","39":"16","9":"180968"}
-[MetadataExtract #1 (269) ] INFO - 0:00:15.41 - task: end, 502ms: Item #46
-[MetadataExtract #8: Item #45 (276) ] INFO - 0:00:15.83 - ffprobe finished
-[MetadataExtract #8: Item #45 (276) ] INFO - 0:00:15.85 - ffprobe took: 543 ms
-[MetadataExtract #8: Item #45 (276) ] INFO - 0:00:15.86 - added cached probe info for http://192.168.0.138:8080/audio/flac/e5bee29a1067b71f8d96ab7bc592eec7_null_, expires in 164 seconds
-[MetadataExtract #8: Item #45 (276) ] INFO - 0:00:15.86 - FfmpegMediaMetadataRetriever: hash=-731586392: retrieveMetadata took: 573 ms
-[MetadataExtract #8: Item #45 (276) ] INFO - 0:00:15.88 - FfmpegMediaMetadataRetriever: hash=-731586392: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Sonny Chillingworth","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Moe \u0027Uhane (Dream Slack Key)","39":"16","9":"164000"}
-[MetadataExtract #8 (276) ] INFO - 0:00:15.89 - task: end, 575ms: Item #45
-[MetadataExtract #6: Item #47 (274) ] INFO - 0:00:15.149 - ffprobe finished
-[MetadataExtract #6: Item #47 (274) ] INFO - 0:00:15.150 - ffprobe took: 396 ms
-[MetadataExtract #6: Item #47 (274) ] INFO - 0:00:15.150 - added cached probe info for http://192.168.0.138:8080/audio/flac/4c33e09beef28347ed88555d69adfa0c_null_, expires in 332 seconds
-[MetadataExtract #6: Item #47 (274) ] INFO - 0:00:15.151 - FfmpegMediaMetadataRetriever: hash=1850019505: retrieveMetadata took: 471 ms
-[MetadataExtract #6: Item #47 (274) ] INFO - 0:00:15.153 - FfmpegMediaMetadataRetriever: hash=1850019505: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Harry Manx","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Bring That Thing (live)","39":"16","9":"332000"}
-[MetadataExtract #6 (274) ] INFO - 0:00:15.154 - task: end, 479ms: Item #47
-[Main #4: extractItemsMetadata (225) ] INFO - 0:00:15.155 - task: executor 'MetadataExtract #%d': close took 2413 ms
-[Main #4 (225) ] INFO - 0:00:15.155 - task: end, 2418ms: extractItemsMetadata
-[AsyncTask #1 (187) ] INFO - 0:00:17.535 - BrowseTask.doInBackground(): enter
-[main (2) ] INFO - 0:00:17.541 - selected item changed (service):
-[main (2) ] INFO - 0:00:17.592 - onCreateOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:17.593 - onPrepareOptionsMenu()@ec98be8/2e41698:5237
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:17.598 - pizzicato-Music: Dancing Lessons: returning first supported resource
-[main (2) ] INFO - 0:00:17.607 - selected item changed (service):
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:17.620 - pizzicato-Music: addItemsAfter: inserted item after id=24, url=http://192.168.0.138:8080/audio/flac/50ec4ba2cffd1ef92ebe194f36657375, metadata=- object.item.audioItem.musicTrackDancing LessonsSinéad O'ConnorSinéad O'ConnorRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2000-01-01Faith and Courage63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/50ec4ba2cffd1ef92ebe194f36657375
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:17.622 - pizzicato-Music: addItemsAfter: wait 2000ms (workaround)
-[main (2) ] WARNING - 0:00:17.629 - .b : couldn't find item trackId = 23
-[main (2) ] INFO - 0:00:17.629 - selected item changed (service):
-[main (2) ] WARNING - 0:00:17.652 - .b : couldn't find item trackId = 0
-[main (2) ] INFO - 0:00:17.653 - selected item changed (service):
-[main (2) ] INFO - 0:00:17.681 - stopping task TimeTask: pizzicato-Music
-[main (2) ] INFO - 0:00:17.681 - ignoreTransportStateChangeForTrackAdvance: false, allowTrackAdvance: true
-[main (2) ] INFO - 0:00:17.681 - SETACTIVE: onTransportStateChanged: post STOP callback
-[main (2) ] INFO - 0:00:17.717 - onCreateOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:17.719 - onPrepareOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:18.623 - pizzicato-Music: processIdArray: ignoring update due to lock
-[main (2) ] WARNING - 0:00:18.624 - .b : couldn't find item trackId = 0
-[main (2) ] INFO - 0:00:18.624 - selected item changed (service):
-[main (2) ] WARNING - 0:00:18.648 - .b : couldn't find item trackId = 24
-[main (2) ] INFO - 0:00:18.648 - selected item changed (service):
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:19.641 - pizzicato-Music: reading 1 new items to insert: [24]
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:19.642 - pizzicato-Music: getting [0..1[
-[main (2) ] INFO - 0:00:19.666 - .b : selected item (track id): Dancing Lessons
-[main (2) ] INFO - 0:00:19.667 - selected item changed (service): Dancing Lessons
-[main (2) ] INFO - 0:00:19.698 - onCreateOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:19.700 - onPrepareOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:19.736 - playItem: main thread
-[PlaybackActions (323) ] INFO - 0:00:19.737 - playItem: worker thread enter
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:19.738 - pizzicato-Music: Slow Sun: returning first supported resource
-[PlaybackAction:playItem (323) ] INFO - 0:00:19.749 - playItem worker thread took: 11 ms
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:19.762 - pizzicato-Music: addItemsAfter: inserted item after id=25, url=http://192.168.0.138:8080/audio/flac/341b0cbfdfe9755ac1c676d0e77a23c9, metadata=- object.item.audioItem.musicTrackSlow SunAukaiAukaiRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2025-01-01Slow Sun - Single63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/341b0cbfdfe9755ac1c676d0e77a23c9
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:19.766 - pizzicato-Music: Fly Me to the Moon: returning first supported resource
-[main (2) ] INFO - 0:00:19.775 - pizzicato-Music: processIdArray: ignoring update due to lock
-[main (2) ] INFO - 0:00:19.776 - started task TimeTask: pizzicato-Music
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:19.786 - pizzicato-Music: addItemsAfter: inserted item after id=26, url=http://192.168.0.138:8080/audio/flac/f1f7731535fdb77e83b401c5c54790a9, metadata=- object.item.audioItem.musicTrackFly Me to the MoonDiana KrallDiana KrallRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2002-01-01Live In Paris63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/f1f7731535fdb77e83b401c5c54790a9
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:19.789 - pizzicato-Music: I Won't Back Down: returning first supported resource
-[main (2) ] INFO - 0:00:19.790 - loadPlaylist: loaded /storage/emulated/0/Android/data/com.bubblesoft.android.bubbleupnp/files/playlists/recent.dpl
-[main (2) ] INFO - 0:00:19.795 - ignoreTransportStateChangeForTrackAdvance: false, allowTrackAdvance: true
-[main (2) ] INFO - 0:00:19.796 - dynamic shortcuts: added 'pizzicato-Music'
-[main (2) ] INFO - 0:00:19.797 - renderer chooser target: saved 1 targets
-[Main #4 (225) ] INFO - 0:00:19.798 - task: start: publishRendererChooserTargets
-[AsyncTask #2 (325) ] INFO - 0:00:19.801 - saved file /storage/emulated/0/Android/data/com.bubblesoft.android.bubbleupnp/files/playlists/recent.dpl ok: 100 items
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:19.805 - pizzicato-Music: addItemsAfter: inserted item after id=27, url=http://192.168.0.138:8080/audio/flac/4592022e5adbb88cec2f7883972b8303, metadata=- object.item.audioItem.musicTrackI Won't Back DownThe Mighty RootsmenThe Mighty RootsmenRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2025-01-01The Mighty Rootsmen, Toots & The Maytals, Gregory Isaacs & Mykal Rose63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/4592022e5adbb88cec2f7883972b8303
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:19.808 - pizzicato-Music: The Curse: returning first supported resource
-[Main #4 (225) ] INFO - 0:00:19.823 - task: end, 25ms: publishRendererChooserTargets
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:19.828 - pizzicato-Music: addItemsAfter: inserted item after id=28, url=http://192.168.0.138:8080/audio/flac/be31edd4a08b2208188269574312c1ef, metadata=- object.item.audioItem.musicTrackThe CurseJosh RitterJosh RitterRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2010-01-01So Runs the World Away63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/be31edd4a08b2208188269574312c1ef
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:19.834 - pizzicato-Music: Prelude to Cello Suite #1 (JS Bach): returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:19.854 - pizzicato-Music: addItemsAfter: inserted item after id=29, url=http://192.168.0.138:8080/audio/flac/f6f23d21ec900a59466e3b23e2ea95fc, metadata=- object.item.audioItem.musicTrackPrelude to Cello Suite #1 (JS Bach)Michael HedgesMichael HedgesRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1990-01-01Select Sounds 199663623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/f6f23d21ec900a59466e3b23e2ea95fc
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:19.858 - pizzicato-Music: Ylva: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:19.881 - pizzicato-Music: addItemsAfter: inserted item after id=30, url=http://192.168.0.138:8080/audio/flac/f5e11ed3dcebbc4b409786631d4703b2, metadata=- object.item.audioItem.musicTrackYlvaAyla NereoAyla NereoRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2023-01-01Sovereign Kin – Book I: The Spark63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/f5e11ed3dcebbc4b409786631d4703b2
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:19.883 - pizzicato-Music: Let Them All In: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:19.919 - pizzicato-Music: addItemsAfter: inserted item after id=31, url=http://192.168.0.138:8080/audio/flac/668db4b5f4b25fbad790b5bec3b95b43, metadata=- object.item.audioItem.musicTrackLet Them All InI Am KlootI Am KlootRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2013-01-01Let It All In63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/668db4b5f4b25fbad790b5bec3b95b43
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:19.924 - pizzicato-Music: The Book of Love: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.192 - pizzicato-Music: addItemsAfter: inserted item after id=32, url=http://192.168.0.138:8080/audio/flac/e807470e04488465c04c4d4de763c695, metadata=- object.item.audioItem.musicTrackThe Book of LovePeter GabrielPeter GabrielRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2010-01-01Scratch My Back63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/e807470e04488465c04c4d4de763c695
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.196 - pizzicato-Music: Still: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.212 - pizzicato-Music: addItemsAfter: inserted item after id=33, url=http://192.168.0.138:8080/audio/flac/c1ed42dee1c68dc52ddcade17e7c03d8, metadata=- object.item.audioItem.musicTrackStillFoo FightersFoo FightersRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2005-01-01In Your Honor63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/c1ed42dee1c68dc52ddcade17e7c03d8
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.217 - pizzicato-Music: Listener-supported: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.235 - pizzicato-Music: addItemsAfter: inserted item after id=34, url=http://192.168.0.138:8080/audio/flac/0354ff365fc12530ab574798918231f3, metadata=- object.item.audioItem.musicTrackListener-supportedCommercial-freeCommercial-freeRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/0354ff365fc12530ab574798918231f3
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.239 - pizzicato-Music: When The Roses Bloom Again: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.285 - pizzicato-Music: addItemsAfter: inserted item after id=35, url=http://192.168.0.138:8080/audio/flac/25540bcbdb5fb212d0d3c1a29faa762f, metadata=- object.item.audioItem.musicTrackWhen The Roses Bloom AgainBilly Bragg & WilcoBilly Bragg & WilcoRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2012-01-01Mermaid Avenue Vol III63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/25540bcbdb5fb212d0d3c1a29faa762f
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.291 - pizzicato-Music: 12 Mortal Men: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.307 - pizzicato-Music: addItemsAfter: inserted item after id=36, url=http://192.168.0.138:8080/audio/flac/b1819621989454decfdeeb2fd1012742, metadata=- object.item.audioItem.musicTrack12 Mortal MenSuzanne VegaSuzanne VegaRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2016-01-01Lover, Beloved: Songs from an Evening with Carson McCullers1263623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/b1819621989454decfdeeb2fd1012742
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.310 - pizzicato-Music: Wild Horses: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.329 - pizzicato-Music: addItemsAfter: inserted item after id=37, url=http://192.168.0.138:8080/audio/flac/7a1420295c9ba04a9123f5a8d3fc7b08, metadata=- object.item.audioItem.musicTrackWild HorsesThe SundaysThe SundaysRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1992-01-01Blind63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/7a1420295c9ba04a9123f5a8d3fc7b08
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.331 - pizzicato-Music: Happy Time: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.352 - pizzicato-Music: addItemsAfter: inserted item after id=38, url=http://192.168.0.138:8080/audio/flac/a55129a8f5bc6ecefd7b904d794b9052, metadata=- object.item.audioItem.musicTrackHappy TimeTim BuckleyTim BuckleyRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1969-01-01Blue Afternoon63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/a55129a8f5bc6ecefd7b904d794b9052
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.355 - pizzicato-Music: Different Stars: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.376 - pizzicato-Music: addItemsAfter: inserted item after id=39, url=http://192.168.0.138:8080/audio/flac/1d25a8b5f6be45e2bb26896b82ed15c7, metadata=- object.item.audioItem.musicTrackDifferent StarsTrespassers WilliamTrespassers WilliamRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2002-01-01Different Stars63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/1d25a8b5f6be45e2bb26896b82ed15c7
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.378 - pizzicato-Music: Babylon: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.398 - pizzicato-Music: addItemsAfter: inserted item after id=40, url=http://192.168.0.138:8080/audio/flac/2ad68dd550b16313027271cb63d9153b, metadata=- object.item.audioItem.musicTrackBabylonDavid GrayDavid GrayRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1998-01-01White Ladder63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/2ad68dd550b16313027271cb63d9153b
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.401 - pizzicato-Music: Wondering Where the Lions Are (Live): returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.417 - pizzicato-Music: addItemsAfter: inserted item after id=41, url=http://192.168.0.138:8080/audio/flac/67c92e72e18e489dee64f769588cb1ce, metadata=- object.item.audioItem.musicTrackWondering Where the Lions Are (Live)Bruce CockburnBruce CockburnRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1997-01-01The Whole Night Sky63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/67c92e72e18e489dee64f769588cb1ce
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.420 - pizzicato-Music: Back Where You Belong: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.437 - pizzicato-Music: addItemsAfter: inserted item after id=42, url=http://192.168.0.138:8080/audio/flac/82dc11173748da450c8bdb1067b00bbb, metadata=- object.item.audioItem.musicTrackBack Where You BelongSinéad O'ConnorSinéad O'ConnorRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2012-01-01How About I Be Me (And You Be You)?63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/82dc11173748da450c8bdb1067b00bbb
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.443 - pizzicato-Music: Listener-supported: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.460 - pizzicato-Music: addItemsAfter: inserted item after id=43, url=http://192.168.0.138:8080/audio/flac/f0b1544d237f5347612a7f7832f8f1ac, metadata=- object.item.audioItem.musicTrackListener-supportedCommercial-freeCommercial-freeRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/f0b1544d237f5347612a7f7832f8f1ac
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.465 - pizzicato-Music: Perfect Circle: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.481 - pizzicato-Music: addItemsAfter: inserted item after id=44, url=http://192.168.0.138:8080/audio/flac/aa7e068ebfa7f443972ab1b72cffc3a8, metadata=- object.item.audioItem.musicTrackPerfect CircleR.E.M.R.E.M.Radio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1983-01-01Murmur63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/aa7e068ebfa7f443972ab1b72cffc3a8
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.488 - pizzicato-Music: Mississippi: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.505 - pizzicato-Music: addItemsAfter: inserted item after id=45, url=http://192.168.0.138:8080/audio/flac/508871fecdd0d94347006d53b427111e, metadata=- object.item.audioItem.musicTrackMississippiThe Cactus BlossomsThe Cactus BlossomsRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2016-01-01You're Dreaming63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/508871fecdd0d94347006d53b427111e
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.511 - pizzicato-Music: Don’t Let Your Deal Go Down: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.532 - pizzicato-Music: addItemsAfter: inserted item after id=46, url=http://192.168.0.138:8080/audio/flac/ca41892cc7c2b2298f6eff806ba2399a, metadata=- object.item.audioItem.musicTrackDon’t Let Your Deal Go DownSierra FerrellSierra FerrellRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2024-01-01Trail of Flowers63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/ca41892cc7c2b2298f6eff806ba2399a
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.538 - pizzicato-Music: Light as a Feather: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.595 - pizzicato-Music: addItemsAfter: inserted item after id=47, url=http://192.168.0.138:8080/audio/flac/c8befc1539c774548f106f2f5ea6c4bf, metadata=- object.item.audioItem.musicTrackLight as a FeatherNorah JonesNorah JonesRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2009-01-01The Fall63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/c8befc1539c774548f106f2f5ea6c4bf
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.602 - pizzicato-Music: Shyer: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.621 - pizzicato-Music: addItemsAfter: inserted item after id=48, url=http://192.168.0.138:8080/audio/flac/43c48c8e99e74c18b5b404eb388dce24, metadata=- object.item.audioItem.musicTrackShyerLondon GrammarLondon GrammarRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2013-01-01If You Wait63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/43c48c8e99e74c18b5b404eb388dce24
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.627 - pizzicato-Music: The Hymn Of Ordinary Motion: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.647 - pizzicato-Music: addItemsAfter: inserted item after id=49, url=http://192.168.0.138:8080/audio/flac/2dc9f632f96001db6f6e0c714e61ea00, metadata=- object.item.audioItem.musicTrackThe Hymn Of Ordinary MotionMeyer, Douglas & BarenbergMeyer, Douglas & BarenbergRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1993-01-01Skip, Hop & Wobble63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/2dc9f632f96001db6f6e0c714e61ea00
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.653 - pizzicato-Music: The Heart of Saturday Night: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.671 - pizzicato-Music: addItemsAfter: inserted item after id=50, url=http://192.168.0.138:8080/audio/flac/d5b6f3e1ccc8f4828ca2dc0efd69b987, metadata=- object.item.audioItem.musicTrackThe Heart of Saturday NightTom WaitsTom WaitsRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1974-01-01Mainstreet63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/d5b6f3e1ccc8f4828ca2dc0efd69b987
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.677 - pizzicato-Music: Buckets of Rain: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.696 - pizzicato-Music: addItemsAfter: inserted item after id=51, url=http://192.168.0.138:8080/audio/flac/6ea1402e7b33ffb328887cb914d51778, metadata=- object.item.audioItem.musicTrackBuckets of RainNeko CaseNeko CaseRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2005-01-01Sweetheart 200563623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/6ea1402e7b33ffb328887cb914d51778
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.702 - pizzicato-Music: New Beginning: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.723 - pizzicato-Music: addItemsAfter: inserted item after id=52, url=http://192.168.0.138:8080/audio/flac/ffda328ef818229238661ec37ff37956, metadata=- object.item.audioItem.musicTrackNew BeginningTracy ChapmanTracy ChapmanRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1995-01-01New Beginning63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/ffda328ef818229238661ec37ff37956
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.730 - pizzicato-Music: Can't Find My Way Home: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.754 - pizzicato-Music: addItemsAfter: inserted item after id=53, url=http://192.168.0.138:8080/audio/flac/497c78b081943f22c0b7a2861e0bb35f, metadata=- object.item.audioItem.musicTrackCan't Find My Way HomeBlind FaithBlind FaithRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1969-01-01Blind Faith63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/497c78b081943f22c0b7a2861e0bb35f
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.760 - pizzicato-Music: Blue Eyes Crying in the Rain: returning first supported resource
-[main (2) ] INFO - 0:00:20.787 - pizzicato-Music: processIdArray: ignoring update due to lock
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.784 - pizzicato-Music: addItemsAfter: inserted item after id=54, url=http://192.168.0.138:8080/audio/flac/e87aa42bc2f5632ebdf983a47b90d4fc, metadata=- object.item.audioItem.musicTrackBlue Eyes Crying in the RainWillie NelsonWillie NelsonRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1975-01-01Red Headed Stranger63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/e87aa42bc2f5632ebdf983a47b90d4fc
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.790 - pizzicato-Music: I Love the Sun: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.812 - pizzicato-Music: addItemsAfter: inserted item after id=55, url=http://192.168.0.138:8080/audio/flac/77d393f256c7d2b397d9af5c8504596c, metadata=- object.item.audioItem.musicTrackI Love the SunJon RedfernJon RedfernRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2007-01-01May Be Some Time63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/77d393f256c7d2b397d9af5c8504596c
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.819 - pizzicato-Music: Time After Time: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.838 - pizzicato-Music: addItemsAfter: inserted item after id=56, url=http://192.168.0.138:8080/audio/flac/069ef589ce1d9621a87afb28e7fa658c, metadata=- object.item.audioItem.musicTrackTime After TimeCyndi LauperCyndi LauperRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1982-01-01She’s So Unusual63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/069ef589ce1d9621a87afb28e7fa658c
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.844 - pizzicato-Music: Walk a Thin Line: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.861 - pizzicato-Music: addItemsAfter: inserted item after id=57, url=http://192.168.0.138:8080/audio/flac/ef96c7fc42def2977a9963e2d4e892ff, metadata=- object.item.audioItem.musicTrackWalk a Thin LineFleetwood MacFleetwood MacRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1979-01-01Tusk63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/ef96c7fc42def2977a9963e2d4e892ff
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.866 - pizzicato-Music: Barefoot Friend: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.899 - pizzicato-Music: addItemsAfter: inserted item after id=58, url=http://192.168.0.138:8080/audio/flac/4d69f84b74a86795a52fcb73c3800af8, metadata=- object.item.audioItem.musicTrackBarefoot FriendElephant RevivalElephant RevivalRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2010-01-01Break In the Clouds63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/4d69f84b74a86795a52fcb73c3800af8
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.902 - pizzicato-Music: The Silent Orchestra: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.919 - pizzicato-Music: addItemsAfter: inserted item after id=59, url=http://192.168.0.138:8080/audio/flac/667f1ebbc85d6440a7ff4afb9a527b89, metadata=- object.item.audioItem.musicTrackThe Silent OrchestraHamilton LeithauserHamilton LeithauserRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2014-01-01Black Hours63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/667f1ebbc85d6440a7ff4afb9a527b89
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.921 - pizzicato-Music: Turn on Me: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.938 - pizzicato-Music: addItemsAfter: inserted item after id=60, url=http://192.168.0.138:8080/audio/flac/d46e57c82ed02a1848e32c0b01f21cb7, metadata=- object.item.audioItem.musicTrackTurn on MeThe ShinsThe ShinsRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2007-01-01Wincing The Night Away63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/d46e57c82ed02a1848e32c0b01f21cb7
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.940 - pizzicato-Music: Wait for Me: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.962 - pizzicato-Music: addItemsAfter: inserted item after id=61, url=http://192.168.0.138:8080/audio/flac/a8f5995175f02b30b884ec3324c831a4, metadata=- object.item.audioItem.musicTrackWait for MeMobyMobyRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2009-01-01Wait for Me63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/a8f5995175f02b30b884ec3324c831a4
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.964 - pizzicato-Music: Servant: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.982 - pizzicato-Music: addItemsAfter: inserted item after id=62, url=http://192.168.0.138:8080/audio/flac/8122ae21da8da1e762a22dabd9817802, metadata=- object.item.audioItem.musicTrackServantCocosumaCocosumaRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2006-01-01Pointing Excitedly To The Sky63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/8122ae21da8da1e762a22dabd9817802
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:20.984 - pizzicato-Music: Castles Made Of Sand: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:21.4 - pizzicato-Music: addItemsAfter: inserted item after id=63, url=http://192.168.0.138:8080/audio/flac/b71d978c46b591f2211c5834a0e5b902, metadata=- object.item.audioItem.musicTrackCastles Made Of SandJimi HendrixJimi HendrixRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1967-01-01Electric Guitarland63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/b71d978c46b591f2211c5834a0e5b902
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:21.7 - pizzicato-Music: I Know What You Are: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:21.28 - pizzicato-Music: addItemsAfter: inserted item after id=64, url=http://192.168.0.138:8080/audio/flac/079e09407590d3c89234f3433280c3e0, metadata=- object.item.audioItem.musicTrackI Know What You AreOi Va VoiOi Va VoiRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2009-01-01Travelling The Face Of The Globe63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/079e09407590d3c89234f3433280c3e0
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:21.31 - pizzicato-Music: Sky Blue Sky: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:21.60 - pizzicato-Music: addItemsAfter: inserted item after id=65, url=http://192.168.0.138:8080/audio/flac/1585bae3666307dd663c6f837492dec7, metadata=- object.item.audioItem.musicTrackSky Blue SkyWilcoWilcoRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2007-01-012005-11-01: Auditorium Theatre, Chicago, IL, USA63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/1585bae3666307dd663c6f837492dec7
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:21.62 - pizzicato-Music: Capital Karma: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:21.77 - pizzicato-Music: addItemsAfter: inserted item after id=66, url=http://192.168.0.138:8080/audio/flac/d852d1f210c87200bd68b1429738ca5b, metadata=- object.item.audioItem.musicTrackCapital KarmaManchester OrchestraManchester OrchestraRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2023-01-01The Valley Of Vision63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/d852d1f210c87200bd68b1429738ca5b
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:21.80 - pizzicato-Music: Loves Me Like A Rock: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:21.96 - pizzicato-Music: addItemsAfter: inserted item after id=67, url=http://192.168.0.138:8080/audio/flac/ed084a8cd1b7ef2d38d4d8e8e272cc7c, metadata=- object.item.audioItem.musicTrackLoves Me Like A RockPaul SimonPaul SimonRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1973-01-01There Goes Rhymin' Simon63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/ed084a8cd1b7ef2d38d4d8e8e272cc7c
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:21.99 - pizzicato-Music: Babylon: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:21.116 - pizzicato-Music: addItemsAfter: inserted item after id=68, url=http://192.168.0.138:8080/audio/flac/f1f31e24b2c730171b8642af0d0bcc04, metadata=- object.item.audioItem.musicTrackBabylonTaminoTaminoRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2025-01-01Every Dawn’s a Mountain63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/f1f31e24b2c730171b8642af0d0bcc04
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:21.119 - pizzicato-Music: Moe 'Uhane (Dream Slack Key): returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:21.134 - pizzicato-Music: addItemsAfter: inserted item after id=69, url=http://192.168.0.138:8080/audio/flac/e5bee29a1067b71f8d96ab7bc592eec7, metadata=- object.item.audioItem.musicTrackMoe 'Uhane (Dream Slack Key)Sonny ChillingworthSonny ChillingworthRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1993-01-01Sonny Solo63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/e5bee29a1067b71f8d96ab7bc592eec7
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:21.137 - pizzicato-Music: The Harder They Come: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:21.156 - pizzicato-Music: addItemsAfter: inserted item after id=70, url=http://192.168.0.138:8080/audio/flac/8ee666aeb2de061e86fc6d568b5f2a18, metadata=- object.item.audioItem.musicTrackThe Harder They ComeJimmy CliffJimmy CliffRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1972-01-01The Harder They Come63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/8ee666aeb2de061e86fc6d568b5f2a18
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:21.159 - pizzicato-Music: Bring That Thing (live): returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:21.174 - pizzicato-Music: addItemsAfter: inserted item after id=71, url=http://192.168.0.138:8080/audio/flac/4c33e09beef28347ed88555d69adfa0c, metadata=- object.item.audioItem.musicTrackBring That Thing (live)Harry ManxHarry ManxRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2007-01-01Dog My Cat63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/4c33e09beef28347ed88555d69adfa0c
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:21.192 - pizzicato-Music: reading 47 new items to insert: [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71]
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:00:21.192 - pizzicato-Music: getting [0..47[
-[main (2) ] INFO - 0:00:21.287 - onCreateOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:21.290 - onPrepareOptionsMenu()@ec98be8/2e41698:5237
-[Main #4 (225) ] INFO - 0:00:21.398 - task: start: extractItemsMetadata
-[MetadataExtract #1 (326) ] INFO - 0:00:21.405 - task: start: Item #0
-[MetadataExtract #3 (328) ] INFO - 0:00:21.406 - task: start: Item #2
-[MetadataExtract #2 (327) ] INFO - 0:00:21.406 - task: start: Item #1
-[MetadataExtract #1: Item #0 (326) ] INFO - 0:00:21.406 - FfmpegMediaMetadataRetriever: hash=-1759650642: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Sinéad O\u0027Connor","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Dancing Lessons","39":"16","9":"249470"}
-[MetadataExtract #4 (329) ] INFO - 0:00:21.406 - task: start: Item #3
-[MetadataExtract #1 (326) ] INFO - 0:00:21.407 - task: end, 3ms: Item #0
-[MetadataExtract #4: Item #3 (329) ] INFO - 0:00:21.408 - FfmpegMediaMetadataRetriever: hash=1993842102: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"The Mighty Rootsmen","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"I Won\u0027t Back Down","39":"16","9":"156594"}
-[MetadataExtract #5 (330) ] INFO - 0:00:21.409 - task: start: Item #4
-[MetadataExtract #4 (329) ] INFO - 0:00:21.409 - task: end, 3ms: Item #3
-[MetadataExtract #2: Item #1 (327) ] INFO - 0:00:21.409 - FfmpegMediaMetadataRetriever: hash=-1913648982: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Aukai","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Slow Sun","39":"16","9":"206810"}
-[MetadataExtract #2 (327) ] INFO - 0:00:21.410 - task: end, 4ms: Item #1
-[MetadataExtract #5: Item #4 (330) ] INFO - 0:00:21.410 - FfmpegMediaMetadataRetriever: hash=-407518392: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Josh Ritter","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"The Curse","39":"16","9":"292250"}
-[MetadataExtract #6 (331) ] INFO - 0:00:21.411 - task: start: Item #5
-[MetadataExtract #5 (330) ] INFO - 0:00:21.411 - task: end, 2ms: Item #4
-[MetadataExtract #6: Item #5 (331) ] INFO - 0:00:21.411 - FfmpegMediaMetadataRetriever: hash=-1138992005: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Michael Hedges","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Prelude to Cello Suite #1 (JS Bach)","39":"16","9":"139943"}
-[MetadataExtract #7 (332) ] INFO - 0:00:21.411 - task: start: Item #6
-[MetadataExtract #5 (330) ] INFO - 0:00:21.412 - task: start: Item #11
-[MetadataExtract #1 (326) ] INFO - 0:00:21.412 - task: start: Item #8
-[MetadataExtract #4 (329) ] INFO - 0:00:21.412 - task: start: Item #9
-[MetadataExtract #2 (327) ] INFO - 0:00:21.412 - task: start: Item #10
-[Main #4: extractItemsMetadata (225) ] INFO - 0:00:21.412 - task: executor 'MetadataExtract #%d': waiting for close to complete...
-[MetadataExtract #6 (331) ] INFO - 0:00:21.412 - task: end, 1ms: Item #5
-[MetadataExtract #8 (333) ] INFO - 0:00:21.413 - task: start: Item #7
-[MetadataExtract #6 (331) ] INFO - 0:00:21.413 - task: start: Item #12
-[MetadataExtract #3: Item #2 (328) ] INFO - 0:00:21.413 - FfmpegMediaMetadataRetriever: hash=-106913403: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Diana Krall","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Fly Me to the Moon","39":"16","9":"328724"}
-[MetadataExtract #3 (328) ] INFO - 0:00:21.414 - task: end, 8ms: Item #2
-[MetadataExtract #7: Item #6 (332) ] INFO - 0:00:21.414 - FfmpegMediaMetadataRetriever: hash=-962027383: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Ayla Nereo","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Ylva","39":"16","9":"289409"}
-[MetadataExtract #3 (328) ] INFO - 0:00:21.415 - task: start: Item #13
-[MetadataExtract #7 (332) ] INFO - 0:00:21.415 - task: end, 4ms: Item #6
-[MetadataExtract #1: Item #8 (326) ] INFO - 0:00:21.415 - FfmpegMediaMetadataRetriever: hash=724650897: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Peter Gabriel","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"The Book of Love","39":"16","9":"216972"}
-[MetadataExtract #7 (332) ] INFO - 0:00:21.415 - task: start: Item #14
-[MetadataExtract #1 (326) ] INFO - 0:00:21.416 - task: end, 4ms: Item #8
-[MetadataExtract #1 (326) ] INFO - 0:00:21.416 - task: start: Item #15
-[MetadataExtract #7: Item #14 (332) ] INFO - 0:00:21.417 - FfmpegMediaMetadataRetriever: hash=-1053255835: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Tim Buckley","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Happy Time","39":"16","9":"190000"}
-[MetadataExtract #7 (332) ] INFO - 0:00:21.417 - task: end, 1ms: Item #14
-[MetadataExtract #7 (332) ] INFO - 0:00:21.417 - task: start: Item #16
-[MetadataExtract #7: Item #16 (332) ] INFO - 0:00:21.418 - FfmpegMediaMetadataRetriever: hash=-1783977340: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"David Gray","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Babylon","39":"16","9":"260750"}
-[MetadataExtract #7 (332) ] INFO - 0:00:21.418 - task: end, 2ms: Item #16
-[MetadataExtract #7 (332) ] INFO - 0:00:21.419 - task: start: Item #17
-[MetadataExtract #4: Item #9 (329) ] INFO - 0:00:21.419 - FfmpegMediaMetadataRetriever: hash=277540764: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Foo Fighters","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Still","39":"16","9":"310800"}
-[MetadataExtract #4 (329) ] INFO - 0:00:21.419 - task: end, 7ms: Item #9
-[MetadataExtract #4 (329) ] INFO - 0:00:21.419 - task: start: Item #18
-[MetadataExtract #6: Item #12 (331) ] INFO - 0:00:21.420 - FfmpegMediaMetadataRetriever: hash=-352088410: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Suzanne Vega","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"12 Mortal Men","39":"16","9":"157000"}
-[MetadataExtract #6 (331) ] INFO - 0:00:21.420 - task: end, 7ms: Item #12
-[MetadataExtract #6 (331) ] INFO - 0:00:21.420 - task: start: Item #19
-[MetadataExtract #8: Item #7 (333) ] INFO - 0:00:21.421 - FfmpegMediaMetadataRetriever: hash=42813812: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"I Am Kloot","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Let Them All In","39":"16","9":"231290"}
-[MetadataExtract #8 (333) ] INFO - 0:00:21.422 - task: end, 9ms: Item #7
-[MetadataExtract #8 (333) ] INFO - 0:00:21.423 - task: start: Item #20
-[MetadataExtract #3: Item #13 (328) ] INFO - 0:00:21.423 - FfmpegMediaMetadataRetriever: hash=1891231045: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"The Sundays","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Wild Horses","39":"16","9":"277000"}
-[MetadataExtract #3 (328) ] INFO - 0:00:21.423 - task: end, 9ms: Item #13
-[MetadataExtract #1: Item #15 (326) ] INFO - 0:00:21.424 - FfmpegMediaMetadataRetriever: hash=1003137573: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Trespassers William","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Different Stars","39":"16","9":"278647"}
-[MetadataExtract #3 (328) ] INFO - 0:00:21.424 - task: start: Item #21
-[MetadataExtract #1 (326) ] INFO - 0:00:21.424 - task: end, 8ms: Item #15
-[MetadataExtract #1 (326) ] INFO - 0:00:21.424 - task: start: Item #22
-[MetadataExtract #2: Item #10 (327) ] INFO - 0:00:21.425 - FfmpegMediaMetadataRetriever: hash=1612634984: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","100000":"false","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","39":"16","9":"5050"}
-[MetadataExtract #2 (327) ] INFO - 0:00:21.425 - task: end, 13ms: Item #10
-[MetadataExtract #2 (327) ] INFO - 0:00:21.425 - task: start: Item #23
-[MetadataExtract #7: Item #17 (332) ] INFO - 0:00:21.425 - FfmpegMediaMetadataRetriever: hash=1845475776: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Bruce Cockburn","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Wondering Where the Lions Are (Live)","39":"16","9":"320000"}
-[MetadataExtract #7 (332) ] INFO - 0:00:21.426 - task: end, 7ms: Item #17
-[MetadataExtract #7 (332) ] INFO - 0:00:21.426 - task: start: Item #24
-[MetadataExtract #7: Item #24 (332) ] INFO - 0:00:21.427 - FfmpegMediaMetadataRetriever: hash=1899042957: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"London Grammar","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Shyer","39":"16","9":"182000"}
-[MetadataExtract #4: Item #18 (329) ] INFO - 0:00:21.428 - FfmpegMediaMetadataRetriever: hash=1710638978: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Sinéad O’Connor","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Back Where You Belong","39":"16","9":"249150"}
-[MetadataExtract #7 (332) ] INFO - 0:00:21.428 - task: end, 2ms: Item #24
-[MetadataExtract #4 (329) ] INFO - 0:00:21.428 - task: end, 8ms: Item #18
-[MetadataExtract #7 (332) ] INFO - 0:00:21.428 - task: start: Item #25
-[MetadataExtract #4 (329) ] INFO - 0:00:21.428 - task: start: Item #26
-[MetadataExtract #7: Item #25 (332) ] INFO - 0:00:21.429 - FfmpegMediaMetadataRetriever: hash=-524282951: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Meyer, Douglas \u0026 Barenberg","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"The Hymn Of Ordinary Motion","39":"16","9":"114000"}
-[MetadataExtract #7 (332) ] INFO - 0:00:21.429 - task: end, 1ms: Item #25
-[MetadataExtract #7 (332) ] INFO - 0:00:21.429 - task: start: Item #27
-[MetadataExtract #8: Item #20 (333) ] INFO - 0:00:21.430 - FfmpegMediaMetadataRetriever: hash=-993423853: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"R.E.M.","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Perfect Circle","39":"16","9":"202700"}
-[MetadataExtract #8 (333) ] INFO - 0:00:21.431 - task: end, 8ms: Item #20
-[MetadataExtract #8 (333) ] INFO - 0:00:21.431 - task: start: Item #28
-[MetadataExtract #8: Item #28 (333) ] INFO - 0:00:21.433 - FfmpegMediaMetadataRetriever: hash=485794117: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Tracy Chapman","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"New Beginning","39":"16","9":"325000"}
-[MetadataExtract #1: Item #22 (326) ] INFO - 0:00:21.434 - FfmpegMediaMetadataRetriever: hash=-395410295: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Sierra Ferrell","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Don’t Let Your Deal Go Down","39":"16","9":"211710"}
-[MetadataExtract #1 (326) ] INFO - 0:00:21.434 - task: end, 9ms: Item #22
-[MetadataExtract #1 (326) ] INFO - 0:00:21.434 - task: start: Item #29
-[MetadataExtract #2: Item #23 (327) ] INFO - 0:00:21.435 - FfmpegMediaMetadataRetriever: hash=-2056388036: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Norah Jones","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Light as a Feather","39":"16","9":"231305"}
-[MetadataExtract #8 (333) ] INFO - 0:00:21.434 - task: end, 2ms: Item #28
-[MetadataExtract #2 (327) ] INFO - 0:00:21.435 - task: end, 10ms: Item #23
-[MetadataExtract #5: Item #11 (330) ] INFO - 0:00:21.435 - FfmpegMediaMetadataRetriever: hash=1385248911: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Billy Bragg \u0026 Wilco","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"When The Roses Bloom Again","39":"16","9":"246000"}
-[MetadataExtract #2 (327) ] INFO - 0:00:21.436 - task: start: Item #31
-[MetadataExtract #5 (330) ] INFO - 0:00:21.436 - task: end, 24ms: Item #11
-[MetadataExtract #5 (330) ] INFO - 0:00:21.436 - task: start: Item #32
-[MetadataExtract #8 (333) ] INFO - 0:00:21.436 - task: start: Item #30
-[MetadataExtract #2: Item #31 (327) ] INFO - 0:00:21.437 - FfmpegMediaMetadataRetriever: hash=1402956451: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Jon Redfern","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"I Love the Sun","39":"16","9":"300000"}
-[MetadataExtract #2 (327) ] INFO - 0:00:21.437 - task: end, 1ms: Item #31
-[MetadataExtract #2 (327) ] INFO - 0:00:21.437 - task: start: Item #33
-[MetadataExtract #6: Item #19 (331) ] INFO - 0:00:21.437 - FfmpegMediaMetadataRetriever: hash=-894762509: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","100000":"false","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","39":"16","9":"8516"}
-[MetadataExtract #6 (331) ] INFO - 0:00:21.438 - task: end, 18ms: Item #19
-[MetadataExtract #6 (331) ] INFO - 0:00:21.438 - task: start: Item #34
-[MetadataExtract #7: Item #27 (332) ] INFO - 0:00:21.438 - FfmpegMediaMetadataRetriever: hash=131303568: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Neko Case","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Buckets of Rain","39":"16","9":"199000"}
-[MetadataExtract #7 (332) ] INFO - 0:00:21.439 - task: end, 9ms: Item #27
-[MetadataExtract #7 (332) ] INFO - 0:00:21.439 - task: start: Item #35
-[MetadataExtract #3: Item #21 (328) ] INFO - 0:00:21.440 - FfmpegMediaMetadataRetriever: hash=1757379569: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"The Cactus Blossoms","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Mississippi","39":"16","9":"235634"}
-[MetadataExtract #3 (328) ] INFO - 0:00:21.441 - task: end, 17ms: Item #21
-[MetadataExtract #1: Item #29 (326) ] INFO - 0:00:21.441 - FfmpegMediaMetadataRetriever: hash=-775299294: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Blind Faith","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Can\u0027t Find My Way Home","39":"16","9":"188500"}
-[MetadataExtract #3 (328) ] INFO - 0:00:21.441 - task: start: Item #36
-[MetadataExtract #1 (326) ] INFO - 0:00:21.442 - task: end, 7ms: Item #29
-[MetadataExtract #1 (326) ] INFO - 0:00:21.442 - task: start: Item #37
-[MetadataExtract #5: Item #32 (330) ] INFO - 0:00:21.442 - FfmpegMediaMetadataRetriever: hash=1984356975: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Cyndi Lauper","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Time After Time","39":"16","9":"232250"}
-[MetadataExtract #5 (330) ] INFO - 0:00:21.442 - task: end, 7ms: Item #32
-[MetadataExtract #4: Item #26 (329) ] INFO - 0:00:21.443 - FfmpegMediaMetadataRetriever: hash=687172484: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Tom Waits","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"The Heart of Saturday Night","39":"16","9":"229000"}
-[MetadataExtract #5 (330) ] INFO - 0:00:21.443 - task: start: Item #38
-[MetadataExtract #4 (329) ] INFO - 0:00:21.443 - task: end, 15ms: Item #26
-[MetadataExtract #4 (329) ] INFO - 0:00:21.443 - task: start: Item #39
-[MetadataExtract #5: Item #38 (330) ] INFO - 0:00:21.444 - FfmpegMediaMetadataRetriever: hash=1709432058: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Cocosuma","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Servant","39":"16","9":"289070"}
-[MetadataExtract #5 (330) ] INFO - 0:00:21.444 - task: end, 1ms: Item #38
-[MetadataExtract #5 (330) ] INFO - 0:00:21.444 - task: start: Item #40
-[MetadataExtract #2: Item #33 (327) ] INFO - 0:00:21.444 - FfmpegMediaMetadataRetriever: hash=1977966954: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Fleetwood Mac","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Walk a Thin Line","39":"16","9":"222000"}
-[MetadataExtract #2 (327) ] INFO - 0:00:21.445 - task: end, 7ms: Item #33
-[MetadataExtract #2 (327) ] INFO - 0:00:21.445 - task: start: Item #41
-[MetadataExtract #6: Item #34 (331) ] INFO - 0:00:21.445 - FfmpegMediaMetadataRetriever: hash=1475446356: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Elephant Revival","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Barefoot Friend","39":"16","9":"191000"}
-[MetadataExtract #6 (331) ] INFO - 0:00:21.446 - task: end, 7ms: Item #34
-[MetadataExtract #6 (331) ] INFO - 0:00:21.446 - task: start: Item #42
-[MetadataExtract #7: Item #35 (332) ] INFO - 0:00:21.446 - FfmpegMediaMetadataRetriever: hash=1109877331: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Hamilton Leithauser","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"The Silent Orchestra","39":"16","9":"264060"}
-[MetadataExtract #7 (332) ] INFO - 0:00:21.446 - task: end, 8ms: Item #35
-[MetadataExtract #7 (332) ] INFO - 0:00:21.447 - task: start: Item #43
-[MetadataExtract #3: Item #36 (328) ] INFO - 0:00:21.447 - FfmpegMediaMetadataRetriever: hash=-2093135018: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"The Shins","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Turn on Me","39":"16","9":"209500"}
-[MetadataExtract #3 (328) ] INFO - 0:00:21.448 - task: end, 6ms: Item #36
-[MetadataExtract #1: Item #37 (326) ] INFO - 0:00:21.448 - FfmpegMediaMetadataRetriever: hash=496599921: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Moby","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Wait for Me","39":"16","9":"204000"}
-[MetadataExtract #3 (328) ] INFO - 0:00:21.449 - task: start: Item #44
-[MetadataExtract #1 (326) ] INFO - 0:00:21.449 - task: end, 7ms: Item #37
-[MetadataExtract #1 (326) ] INFO - 0:00:21.449 - task: start: Item #45
-[MetadataExtract #4: Item #39 (329) ] INFO - 0:00:21.449 - FfmpegMediaMetadataRetriever: hash=-475084519: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Jimi Hendrix","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Castles Made Of Sand","39":"16","9":"164612"}
-[MetadataExtract #4 (329) ] INFO - 0:00:21.450 - task: end, 6ms: Item #39
-[MetadataExtract #4 (329) ] INFO - 0:00:21.450 - task: start: Item #46
-[MetadataExtract #8: Item #30 (333) ] INFO - 0:00:21.450 - FfmpegMediaMetadataRetriever: hash=-1561902046: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Willie Nelson","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Blue Eyes Crying in the Rain","39":"16","9":"136200"}
-[MetadataExtract #8 (333) ] INFO - 0:00:21.451 - task: end, 15ms: Item #30
-[MetadataExtract #8 (333) ] INFO - 0:00:21.451 - task: start: Item #47
-[MetadataExtract #5: Item #40 (330) ] INFO - 0:00:21.451 - FfmpegMediaMetadataRetriever: hash=-238367317: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Oi Va Voi","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"I Know What You Are","39":"16","9":"182000"}
-[MetadataExtract #5 (330) ] INFO - 0:00:21.452 - task: end, 8ms: Item #40
-[MetadataExtract #2: Item #41 (327) ] INFO - 0:00:21.452 - FfmpegMediaMetadataRetriever: hash=-1032742246: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Wilco","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Sky Blue Sky","39":"16","9":"193957"}
-[MetadataExtract #2 (327) ] INFO - 0:00:21.453 - task: end, 8ms: Item #41
-[MetadataExtract #6: Item #42 (331) ] INFO - 0:00:21.453 - FfmpegMediaMetadataRetriever: hash=2140521498: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Manchester Orchestra","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Capital Karma","39":"16","9":"215108"}
-[MetadataExtract #6 (331) ] INFO - 0:00:21.454 - task: end, 8ms: Item #42
-[MetadataExtract #7: Item #43 (332) ] INFO - 0:00:21.454 - FfmpegMediaMetadataRetriever: hash=-1752918010: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Paul Simon","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Loves Me Like A Rock","39":"16","9":"201000"}
-[MetadataExtract #7 (332) ] INFO - 0:00:21.454 - task: end, 8ms: Item #43
-[MetadataExtract #3: Item #44 (328) ] INFO - 0:00:21.455 - FfmpegMediaMetadataRetriever: hash=152071891: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Tamino","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Babylon","39":"16","9":"336306"}
-[MetadataExtract #3 (328) ] INFO - 0:00:21.456 - task: end, 7ms: Item #44
-[MetadataExtract #1: Item #45 (326) ] INFO - 0:00:21.457 - FfmpegMediaMetadataRetriever: hash=-731586392: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Sonny Chillingworth","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Moe \u0027Uhane (Dream Slack Key)","39":"16","9":"164000"}
-[MetadataExtract #1 (326) ] INFO - 0:00:21.457 - task: end, 8ms: Item #45
-[MetadataExtract #4: Item #46 (329) ] INFO - 0:00:21.458 - FfmpegMediaMetadataRetriever: hash=-174877526: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Jimmy Cliff","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"The Harder They Come","39":"16","9":"180968"}
-[MetadataExtract #4 (329) ] INFO - 0:00:21.458 - task: end, 8ms: Item #46
-[MetadataExtract #8: Item #47 (333) ] INFO - 0:00:21.459 - FfmpegMediaMetadataRetriever: hash=1850019505: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Harry Manx","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Bring That Thing (live)","39":"16","9":"332000"}
-[MetadataExtract #8 (333) ] INFO - 0:00:21.459 - task: end, 8ms: Item #47
-[Main #4: extractItemsMetadata (225) ] INFO - 0:00:21.459 - task: executor 'MetadataExtract #%d': close took 47 ms
-[Main #4 (225) ] INFO - 0:00:21.460 - task: end, 62ms: extractItemsMetadata
-[main (2) ] INFO - 0:00:30.333 - onPause()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:00:30.333 - removed listener: 2 listeners
-[main (2) ] INFO - 0:00:30.336 - removeListener (context: com.bubblesoft.android.bubbleupnp.MainTabActivity@2e41698)
-[main (2) ] INFO - 0:00:30.337 - onResume()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:00:30.337 - added listener: 3 listeners
-[main (2) ] INFO - 0:00:30.338 - pizzicato-Music: TimeTask already launched!
-[main (2) ] INFO - 0:00:30.338 - source changed: Playlist
-[main (2) ] INFO - 0:00:30.338 - selected item changed (now playing): Dancing Lessons
-[main (2) ] WARNING - 0:00:30.339 - getBubbleUPnPServerFFmpegDecodeREST: not supported for OpenHome renderers
-[main (2) ] INFO - 0:00:30.341 - setSeekBarDetailsText: FLAC • 44.1 kHz • 16 bit
-[main (2) ] INFO - 0:00:30.342 - setSeekBarDetailsText: FLAC • 44.1 kHz • 16 bit
-[main (2) ] INFO - 0:00:30.343 - onStandbyChange: standby=false, ignore=true
-[main (2) ] INFO - 0:00:30.343 - pizzicato-Music: MainFragmentBase.onVolumeChange: 100
-[main (2) ] INFO - 0:00:30.344 - setSeekBarDetailsText: FLAC • 44.1 kHz • 16 bit
-[main (2) ] INFO - 0:00:30.348 - onCreateOptionsMenu()@2af0cf8/2e41698:5237
-[main (2) ] WARNING - 0:00:30.349 - getBubbleUPnPServerFFmpegDecodeREST: not supported for OpenHome renderers
-[main (2) ] INFO - 0:00:30.350 - onPrepareOptionsMenu()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:00:30.884 - performDeviceSearch: search done
-[main (2) ] SEVERE - 0:00:30.885 - watchdog: device search--: 0
-[main (2) ] INFO - 0:01:00.864 - onPause()@2e41698:5237
-[main (2) ] INFO - 0:01:00.865 - onPause()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:01:00.866 - removed listener: 2 listeners
-[main (2) ] INFO - 0:01:00.867 - removed listener: 1 listeners
-[main (2) ] INFO - 0:01:00.912 - onStop()@2e41698:5237
-[main (2) ] INFO - 0:01:00.913 - onStop()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:01:00.914 - onStop()@5f65d35/2e41698:5237
-[main (2) ] INFO - 0:01:00.915 - onStop()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:01:00.916 - onSaveInstanceState(outState)@2e41698:5237
-[main (2) ] INFO - 0:01:00.921 - onSaveInstanceState()@5f65d35/2e41698:5237
-[main (2) ] INFO - 0:01:00.922 - onSaveInstanceState()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:01:00.923 - onSaveInstanceState()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:01:01.484 - ACTION_SCREEN_OFF
-[main (2) ] SEVERE - 0:01:01.486 - watchdog: schedule inactivity action in 15 mins
-[main (2) ] SEVERE - 0:01:01.487 - watchdog: enabled
-[cling-33 (Time) (248) ] WARNING - 0:03:24.967 - .h : Client connection was aborted: v5.y: 192.168.0.200:49152 failed to respond: http://192.168.0.200:49152/uuid-2899a4df-39ae-160a-6563-dca6329ead0d/ctl-urn-av-openhome-org-service-Time-1
-[cling-33 (Time) (248) ] WARNING - 0:03:24.972 - .d : Time: Error: Current state of service prevents invoking that action. Connection error or no response received.
-[TimeTask: pizzicato-Music (324) ] WARNING - 0:03:24.974 - TimeTask: pizzicato-Music: is.c: Current state of service prevents invoking that action. Connection error or no response received.
-[main (2) ] INFO - 0:03:25.546 - ACTION_SCREEN_ON
-[main (2) ] SEVERE - 0:03:25.547 - watchdog: cancelled inactivity action
-[main (2) ] SEVERE - 0:03:25.549 - watchdog: disabled
-[main (2) ] INFO - 0:03:26.363 - onRouteRemoved 3d57e3df7b480b761c03a9d89520d61b => MediaRouter.RouteInfo{ uniqueId=com.google.android.gms/.cast.media.CastMediaRoute2ProviderService_Persistent:3d57e3df7b480b761c03a9d89520d61b, name=Glouglou Box, description=JBL Authentics 300, iconUri=null, enabled=true, isSystemRoute=false, connectionState=0, canDisconnect=false, playbackType=1, playbackStream=-1, deviceType=2, volumeHandling=0, volume=0, volumeMax=50, presentationDisplayId=-1, extras=Bundle[{com.google.android.gms.cast.EXTRA_CAST_DEVICE="G10x" (3d57e3df7b480b761c03a9d89520d61b) }], settingsIntent=null, providerPackageName=com.google.android.gms }
-[main (2) ] INFO - 0:03:26.365 - not removing cast device due to recent screen on or off
-[main (2) ] INFO - 0:03:26.772 - onRouteAdded 3d57e3df7b480b761c03a9d89520d61b => MediaRouter.RouteInfo{ uniqueId=com.google.android.gms/.cast.media.CastMediaRoute2ProviderService_Persistent:3d57e3df7b480b761c03a9d89520d61b, name=Glouglou Box, description=JBL Authentics 300, iconUri=null, enabled=true, isSystemRoute=false, connectionState=0, canDisconnect=false, playbackType=1, playbackStream=-1, deviceType=2, volumeHandling=0, volume=0, volumeMax=50, presentationDisplayId=-1, extras=Bundle[{com.google.android.gms.cast.EXTRA_CAST_DEVICE="G10x" (3d57e3df7b480b761c03a9d89520d61b) }], settingsIntent=null, providerPackageName=com.google.android.gms }
-[main (2) ] INFO - 0:03:26.774 - not adding already added cast device
-[main (2) ] INFO - 0:03:27.114 - onRestart()@2e41698:5237
-[main (2) ] INFO - 0:03:27.117 - onStart()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:03:27.124 - onStart()@5f65d35/2e41698:5237
-[main (2) ] INFO - 0:03:27.175 - onStart()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:03:27.183 - onStart()@2e41698:5237
-[main (2) ] INFO - 0:03:27.193 - onResume()@2e41698:5237
-[main (2) ] INFO - 0:03:27.195 - added listener: 2 listeners
-[main (2) ] INFO - 0:03:27.197 - sorted 2 items took: 0 ms
-[main (2) ] INFO - 0:03:27.211 - onResume()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:03:27.212 - added listener: 3 listeners
-[main (2) ] INFO - 0:03:27.212 - pizzicato-Music: TimeTask already launched!
-[main (2) ] INFO - 0:03:27.212 - source changed: Playlist
-[main (2) ] INFO - 0:03:27.213 - selected item changed (now playing): Dancing Lessons
-[main (2) ] WARNING - 0:03:27.213 - getBubbleUPnPServerFFmpegDecodeREST: not supported for OpenHome renderers
-[main (2) ] INFO - 0:03:27.214 - setSeekBarDetailsText: FLAC • 44.1 kHz • 16 bit
-[main (2) ] INFO - 0:03:27.214 - setSeekBarDetailsText: FLAC • 44.1 kHz • 16 bit
-[main (2) ] INFO - 0:03:27.215 - onStandbyChange: standby=false, ignore=true
-[main (2) ] INFO - 0:03:27.216 - pizzicato-Music: MainFragmentBase.onVolumeChange: 100
-[main (2) ] INFO - 0:03:27.216 - setSeekBarDetailsText: FLAC • 44.1 kHz • 16 bit
-[main (2) ] INFO - 0:03:27.219 - onCreateOptionsMenu()@2af0cf8/2e41698:5237
-[main (2) ] WARNING - 0:03:27.220 - getBubbleUPnPServerFFmpegDecodeREST: not supported for OpenHome renderers
-[main (2) ] INFO - 0:03:27.231 - onPrepareOptionsMenu()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:03:28.841 - onPause()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:03:28.842 - removed listener: 2 listeners
-[main (2) ] INFO - 0:03:28.843 - onResume()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:03:28.844 - added listener: 3 listeners
-[main (2) ] INFO - 0:03:28.845 - refreshLocalMediaServerLibraryList: removed: fenice
-[main (2) ] INFO - 0:03:28.845 - refreshLocalMediaServerLibraryList: removed: Freebox Server
-[main (2) ] INFO - 0:03:28.845 - refreshLocalMediaServerLibraryList: removed: pizzicato-Music-mediaserver
-[main (2) ] INFO - 0:03:28.845 - refreshLocalMediaServerLibraryList: removed: PMOMusic Media Server
-[main (2) ] INFO - 0:03:28.846 - refreshLocalMediaServerLibraryList: added: fenice
-[main (2) ] INFO - 0:03:28.846 - refreshLocalMediaServerLibraryList: added: Freebox Server
-[main (2) ] INFO - 0:03:28.846 - refreshLocalMediaServerLibraryList: added: pizzicato-Music-mediaserver
-[main (2) ] INFO - 0:03:28.847 - refreshLocalMediaServerLibraryList: added: PMOMusic Media Server
-[main (2) ] INFO - 0:03:28.847 - pizzicato-Music: TimeTask already launched!
-[main (2) ] INFO - 0:03:28.847 - addListener (context: com.bubblesoft.android.bubbleupnp.MainTabActivity@2e41698)
-[main (2) ] INFO - 0:03:28.848 - onStandbyChange: standby=false, ignore=true
-[main (2) ] INFO - 0:03:28.849 - pizzicato-Music: MainFragmentBase.onVolumeChange: 100
-[main (2) ] INFO - 0:03:28.856 - onCreateOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:03:28.857 - onPrepareOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:03:32.484 - pizzicato-Music: notify fake TransportState=Stopped on auto track change
-[main (2) ] INFO - 0:03:32.485 - stopping task TimeTask: pizzicato-Music
-[main (2) ] INFO - 0:03:32.486 - ignoreTransportStateChangeForTrackAdvance: false, allowTrackAdvance: true
-[main (2) ] INFO - 0:03:32.487 - SETACTIVE: onTransportStateChanged: post STOP callback
-[main (2) ] INFO - 0:03:32.547 - .b : selected item (track id): Slow Sun
-[main (2) ] INFO - 0:03:32.548 - selected item changed (service): Slow Sun
-[main (2) ] INFO - 0:03:32.589 - pizzicato-Music: notify fake TransportState=Playing on auto track change
-[main (2) ] INFO - 0:03:32.590 - started task TimeTask: pizzicato-Music
-[main (2) ] INFO - 0:03:32.598 - ignoreTransportStateChangeForTrackAdvance: false, allowTrackAdvance: true
-[main (2) ] INFO - 0:03:32.598 - dynamic shortcuts: added 'pizzicato-Music'
-[main (2) ] INFO - 0:03:32.600 - renderer chooser target: saved 1 targets
-[Main #12 (339) ] INFO - 0:03:32.601 - task: start: publishRendererChooserTargets
-[Main #12 (339) ] INFO - 0:03:32.610 - task: end, 9ms: publishRendererChooserTargets
-[AsyncTask #3 (338) ] INFO - 0:03:32.619 - saved file /storage/emulated/0/Android/data/com.bubblesoft.android.bubbleupnp/files/playlists/recent.dpl ok: 100 items
-[main (2) ] SEVERE - 0:03:39.425 - watchdog: device search++: 1
-[main (2) ] INFO - 0:03:39.426 - performDeviceSearch: searching...
-[main (2) ] INFO - 0:03:40.995 - active media server: pizzicato-Music-mediaserver
-[main (2) ] INFO - 0:03:40.996 - active media server UDN: uuid:c110358f-d885-b44a-d6d3-dca6329ead0d
-[main (2) ] INFO - 0:03:41.6 - onSaveInstanceState()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:03:41.6 - saveMediaServerState: pizzicato-Music-mediaserver
-[main (2) ] INFO - 0:03:41.9 - onSaveInstanceState()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:03:41.9 - saveMediaServerState: pizzicato-Music-mediaserver
-[main (2) ] INFO - 0:03:41.9 - positionStack: [0, 0]
-[main (2) ] INFO - 0:03:41.10 - itemList: Bundle[{firstVisiblePosition=0}]
-[main (2) ] INFO - 0:03:41.10 - containerPath: []
-[AsyncTask #1 (187) ] INFO - 0:03:41.11 - BrowseTask.doInBackground(): enter
-[AsyncTask #1 (187) ] INFO - 0:03:41.12 - BrowseTask.doInBackground(): loading container 'pizzicato-Music-mediaserver'
-[main (2) ] INFO - 0:03:41.13 - onCreateOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:03:41.14 - onPrepareOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:03:41.34 - sorted 0 items took: 0 ms
-[main (2) ] INFO - 0:03:41.36 - sorted 0 items took: 0 ms
-[main (2) ] INFO - 0:03:41.37 - loaded file c110358f-d885-b44a-d6d3-dca6329ead0d-Bookmarks ok: 0 items, 1 ms
-[main (2) ] INFO - 0:03:41.38 - sorted 0 items took: 0 ms
-[main (2) ] INFO - 0:03:41.39 - sorted 2 items took: 1 ms
-[main (2) ] INFO - 0:03:41.40 - sorted 2 items took: 0 ms
-[AsyncTask #1 (187) ] INFO - 0:03:41.40 - finished browsing: got 6 objects
-[AsyncTask #1 (187) ] INFO - 0:03:41.41 - BrowseTask.doInBackground(): no item
-[main (2) ] INFO - 0:03:41.42 - onCreateOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:03:41.43 - onPrepareOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] SEVERE - 0:03:44.469 - watchdog: device search--: 0
-[main (2) ] SEVERE - 0:03:44.469 - watchdog: device search++: 1
-[main (2) ] INFO - 0:03:44.469 - performDeviceSearch: searching...
-[main (2) ] INFO - 0:03:45.805 - active media server: PMOMusic Media Server
-[main (2) ] INFO - 0:03:45.806 - active media server UDN: uuid:63623ff4-ee41-4850-90aa-2d39395df981
-[main (2) ] INFO - 0:03:45.811 - restore path: [radio-paradise:channel:mellow, radio-paradise:channel:mellow:history]
-[main (2) ] INFO - 0:03:45.819 - onCreateOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:03:45.820 - onPrepareOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:03:58.89 - active media server: Local et Cloud
-[main (2) ] INFO - 0:03:58.89 - active media server UDN: uuid:d38a2dc7-13c1-4a39-ab36-513490cf6766
-[main (2) ] INFO - 0:03:58.95 - sorted 2 items took: 0 ms
-[main (2) ] INFO - 0:03:58.95 - restore path: []
-[main (2) ] INFO - 0:03:58.96 - restoring path: []
-[main (2) ] INFO - 0:03:58.97 - onSaveInstanceState()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:03:58.97 - saveMediaServerState: Local et Cloud
-[main (2) ] INFO - 0:03:58.97 - positionStack: []
-[main (2) ] INFO - 0:03:58.98 - itemList: Bundle[{firstVisiblePosition=1}]
-[main (2) ] INFO - 0:03:58.98 - containerPath: []
-[main (2) ] INFO - 0:03:58.99 - restored position stack: []
-[main (2) ] INFO - 0:03:58.103 - onCreateOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:03:58.105 - onPrepareOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:04:00.639 - path = [server://63623ff4-ee41-4850-90aa-2d39395df981]
-[main (2) ] INFO - 0:04:00.640 - active media server: PMOMusic Media Server
-[main (2) ] INFO - 0:04:00.640 - restore path: [radio-paradise:channel:mellow, radio-paradise:channel:mellow:history]
-[main (2) ] INFO - 0:04:00.642 - onCreateOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:04:00.643 - onPrepareOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:04:04.646 - path = [server://63623ff4-ee41-4850-90aa-2d39395df981]
-[main (2) ] INFO - 0:04:04.647 - active media server: PMOMusic Media Server
-[main (2) ] INFO - 0:04:04.650 - onCreateOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:04:04.651 - onPrepareOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:04:06.526 - path = [server://63623ff4-ee41-4850-90aa-2d39395df981]
-[main (2) ] INFO - 0:04:06.527 - active media server: PMOMusic Media Server
-[main (2) ] INFO - 0:04:06.537 - onCreateOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:04:06.538 - onPrepareOptionsMenu()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:04:10.147 - onPause()@2e41698:5237
-[main (2) ] INFO - 0:04:10.152 - onPause()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:04:10.152 - removed listener: 2 listeners
-[main (2) ] INFO - 0:04:10.156 - removeListener (context: com.bubblesoft.android.bubbleupnp.MainTabActivity@2e41698)
-[main (2) ] INFO - 0:04:10.157 - removed listener: 1 listeners
-[main (2) ] INFO - 0:04:10.439 - onStop()@2e41698:5237
-[main (2) ] INFO - 0:04:10.441 - onStop()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:04:10.443 - onStop()@5f65d35/2e41698:5237
-[main (2) ] INFO - 0:04:10.444 - onStop()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:04:10.453 - onSaveInstanceState(outState)@2e41698:5237
-[main (2) ] INFO - 0:04:10.465 - onSaveInstanceState()@5f65d35/2e41698:5237
-[main (2) ] INFO - 0:04:10.468 - onSaveInstanceState()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:04:10.470 - onSaveInstanceState()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:04:10.986 - onDestroy()@2e41698:5237
-[main (2) ] INFO - 0:04:10.990 - onDestroyView()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:04:10.992 - onDestroy()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:04:10.996 - onDetach()@2af0cf8/2e41698:5237
-[main (2) ] INFO - 0:04:10.998 - onDestroyView()@5f65d35/2e41698:5237
-[main (2) ] INFO - 0:04:11.2 - onDestroy()@5f65d35/2e41698:5237
-[main (2) ] INFO - 0:04:11.3 - removed listener: 0 listeners
-[main (2) ] INFO - 0:04:11.6 - onDetach()@5f65d35/2e41698:5237
-[main (2) ] INFO - 0:04:11.8 - onDestroyView()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:04:11.9 - removeListener (context: com.bubblesoft.android.bubbleupnp.MainTabActivity@2e41698)
-[main (2) ] INFO - 0:04:11.10 - onSaveInstanceState()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:04:11.11 - saveMediaServerState: PMOMusic Media Server
-[main (2) ] INFO - 0:04:11.12 - positionStack: [3, 3, 3]
-[main (2) ] INFO - 0:04:11.13 - itemList: Bundle[{firstVisiblePosition=3}]
-[main (2) ] INFO - 0:04:11.14 - containerPath: []
-[main (2) ] INFO - 0:04:11.14 - refreshLocalMediaServerLibraryList: removed: fenice
-[main (2) ] INFO - 0:04:11.15 - refreshLocalMediaServerLibraryList: removed: Freebox Server
-[main (2) ] INFO - 0:04:11.16 - refreshLocalMediaServerLibraryList: removed: pizzicato-Music-mediaserver
-[main (2) ] INFO - 0:04:11.17 - refreshLocalMediaServerLibraryList: removed: PMOMusic Media Server
-[main (2) ] INFO - 0:04:11.18 - onDestroy()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:04:11.21 - onDetach()@ec98be8/2e41698:5237
-[main (2) ] INFO - 0:04:11.40 - onTaskRemoved: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 xflg=0x4 cmp=com.bubblesoft.android.bubbleupnp/.MainActivity }, mode: 2
-[main (2) ] INFO - 0:04:13.338 - attachBaseContext(base)@9ef2a0e:-1
-[main (2) ] INFO - 0:04:13.343 - onCreate(): Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 xflg=0x4 cmp=com.bubblesoft.android.bubbleupnp/.MainActivity bnds=[841,188][1041,472] }@9ef2a0e:5238
-[main (2) ] INFO - 0:04:13.343 - Referrer: android-app://com.sec.android.app.launcher
-[main (2) ] INFO - 0:04:13.372 - attachBaseContext(base)@ea019b3:-1
-[main (2) ] INFO - 0:04:13.374 - dynamic theming: isDynamicColorAvailable: true, isRuntimeColorThemeGenAvailable: true
-[main (2) ] INFO - 0:04:13.374 - dynamic theming: theme mode: 0
-[main (2) ] INFO - 0:04:13.375 - dynamic theming: theme overlay applied
-[main (2) ] INFO - 0:04:13.375 - dynamic theming: dark theme: false
-[main (2) ] INFO - 0:04:13.376 - dynamic theming: dialogs elevation overlay enabled: true
-[main (2) ] INFO - 0:04:13.378 - dynamic theming: applied color harmonization
-[main (2) ] INFO - 0:04:13.380 - dynamic theming: initDynamicTheming took: 6 ms
-[main (2) ] INFO - 0:04:13.386 - onCreate(): Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 xflg=0x4 cmp=com.bubblesoft.android.bubbleupnp/.MainTabActivity bnds=[841,188][1041,472] }@ea019b3:5238
-[main (2) ] INFO - 0:04:13.389 - dynamic theming: colorPrimary: #ff475d92
-[main (2) ] INFO - 0:04:13.389 - dynamic theming: android:windowBackground: #fffaf8ff
-[main (2) ] INFO - 0:04:13.390 - dynamic theming: android:colorbackground: #fffaf8ff
-[main (2) ] INFO - 0:04:13.390 - startAndBindServiceWithRetry: retryOnFailure true
-[Main #12 (339) ] INFO - 0:04:13.442 - task: start: getSearchableInfo
-[Main #12 (339) ] INFO - 0:04:13.443 - task: end, 1ms: getSearchableInfo
-[main (2) ] INFO - 0:04:13.444 - MainTabActivity.onCreate() took: 70 ms
-[main (2) ] INFO - 0:04:13.445 - onStart()@ea019b3:5238
-[main (2) ] INFO - 0:04:13.446 - onPostCreate()@ea019b3:5238
-[main (2) ] INFO - 0:04:13.446 - startup page index: 0
-[main (2) ] INFO - 0:04:13.446 - onResume()@ea019b3:5238
-[main (2) ] INFO - 0:04:13.454 - display: screen generalized size: normal
-[main (2) ] INFO - 0:04:13.454 - display: screen generalized density: 480 dpi
-[main (2) ] INFO - 0:04:13.454 - display: logical density factor: 3.000000
-[main (2) ] INFO - 0:04:13.454 - display: screen size (pixels, Display.getSize()): 1080x2400
-[main (2) ] INFO - 0:04:13.455 - display: screen size (pixels, displayMetrics): 1080x2400
-[main (2) ] INFO - 0:04:13.455 - display: screen size (dp): 360x800
-[main (2) ] INFO - 0:04:13.455 - display: screen size (conf: screenWidthDp x screenHeightDp) (dp): 360x800
-[main (2) ] INFO - 0:04:13.455 - display: smallest width (dp): 360
-[main (2) ] INFO - 0:04:13.455 - display: screen size (inches): 2.637801x5.905512, diagonal: 6.467848
-[main (2) ] INFO - 0:04:13.455 - display: screen size aspect ratio (h/w): 2.222222
-[main (2) ] INFO - 0:04:13.455 - display: isTallActivity: true
-[main (2) ] INFO - 0:04:13.455 - display: isInMultiWindowMode: false
-[main (2) ] INFO - 0:04:13.455 - display: xdpi: 409.432007
-[main (2) ] INFO - 0:04:13.456 - display: ydpi: 406.399994
-[main (2) ] INFO - 0:04:13.456 - display: landscape: false
-[main (2) ] INFO - 0:04:13.456 - display: isPhoneSize: true
-[main (2) ] INFO - 0:04:13.456 - display: E2E35.isEnforced: true
-[main (2) ] INFO - 0:04:13.456 - doStartForeground: calling startForeground(), fromOnStartCommand: true, serviceType: 2
-[main (2) ] INFO - 0:04:13.461 - added listener: 1 listeners
-[main (2) ] INFO - 0:04:13.465 - Insets: Insets{left=0, top=88, right=0, bottom=45}
-[main (2) ] INFO - 0:04:13.484 - onAttach()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:04:13.485 - onCreate()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:04:13.487 - onCreateView()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:04:13.504 - setSeekBarDetailsText:
-[main (2) ] INFO - 0:04:13.504 - NowPlayingFragment.onCreateView() took: 19 ms
-[main (2) ] INFO - 0:04:13.505 - onActivityCreated()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:04:13.506 - onStart()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:04:13.508 - onResume()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:04:13.510 - onAttach()@b163faf/ea019b3:5238
-[main (2) ] INFO - 0:04:13.510 - onCreate()@b163faf/ea019b3:5238
-[main (2) ] INFO - 0:04:13.511 - onCreateView()@b163faf/ea019b3:5238
-[main (2) ] INFO - 0:04:13.518 - PlaylistFragment.onCreateView() took: 7 ms
-[main (2) ] INFO - 0:04:13.519 - onActivityCreated()@b163faf/ea019b3:5238
-[main (2) ] INFO - 0:04:13.520 - onStart()@b163faf/ea019b3:5238
-[main (2) ] INFO - 0:04:13.523 - onAttach()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:04:13.523 - onCreate()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:04:13.524 - onCreateView()@df8ac1c/ea019b3:5238
-[Main #12 (339) ] INFO - 0:04:13.550 - task: start: getSearchableInfo
-[main (2) ] INFO - 0:04:13.550 - LibraryFragment.onCreateView() took: 26 ms
-[main (2) ] INFO - 0:04:13.551 - onActivityCreated()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:04:13.551 - onStart()@df8ac1c/ea019b3:5238
-[Main #12 (339) ] INFO - 0:04:13.552 - task: end, 2ms: getSearchableInfo
-[main (2) ] INFO - 0:04:13.555 - setSeekBarDetailsText:
-[main (2) ] INFO - 0:04:13.568 - setSeekBarDetailsText:
-[main (2) ] INFO - 0:04:13.577 - onCreateOptionsMenu()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:04:13.578 - onPrepareOptionsMenu()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:04:13.578 - Insets: Insets{left=0, top=88, right=0, bottom=45}
-[main (2) ] INFO - 0:04:13.582 - onNetworkSearchStarted
-[main (2) ] INFO - 0:04:13.609 - added listener: 2 listeners
-[main (2) ] INFO - 0:04:13.609 - onNetworkSearchEnded
-[main (2) ] INFO - 0:04:13.619 - active renderer: pizzicato-Music
-[main (2) ] INFO - 0:04:13.619 - pizzicato-Music: TimeTask already launched!
-[main (2) ] INFO - 0:04:13.620 - source changed: Playlist
-[main (2) ] INFO - 0:04:13.620 - selected item changed (now playing): Slow Sun
-[main (2) ] WARNING - 0:04:13.621 - getBubbleUPnPServerFFmpegDecodeREST: not supported for OpenHome renderers
-[main (2) ] INFO - 0:04:13.621 - setSeekBarDetailsText:
-[main (2) ] INFO - 0:04:13.622 - setSeekBarDetailsText: FLAC • 44.1 kHz • 16 bit
-[main (2) ] INFO - 0:04:13.623 - onStandbyChange: standby=false, ignore=true
-[main (2) ] INFO - 0:04:13.623 - pizzicato-Music: MainFragmentBase.onVolumeChange: 100
-[main (2) ] INFO - 0:04:13.624 - setSeekBarDetailsText: FLAC • 44.1 kHz • 16 bit
-[main (2) ] INFO - 0:04:13.625 - added listener: 3 listeners
-[main (2) ] INFO - 0:04:13.625 - active renderer: pizzicato-Music
-[main (2) ] INFO - 0:04:13.626 - pizzicato-Music: TimeTask already launched!
-[main (2) ] INFO - 0:04:13.626 - onStandbyChange: standby=false, ignore=true
-[main (2) ] INFO - 0:04:13.626 - pizzicato-Music: MainFragmentBase.onVolumeChange: 100
-[main (2) ] INFO - 0:04:13.628 - created mini-player (context: com.bubblesoft.android.bubbleupnp.MainTabActivity@ea019b3)
-[main (2) ] INFO - 0:04:13.629 - added listener: 4 listeners
-[main (2) ] INFO - 0:04:13.629 - refreshLocalMediaServerLibraryList: added: fenice
-[main (2) ] INFO - 0:04:13.629 - refreshLocalMediaServerLibraryList: added: Freebox Server
-[main (2) ] INFO - 0:04:13.629 - refreshLocalMediaServerLibraryList: added: pizzicato-Music-mediaserver
-[main (2) ] INFO - 0:04:13.629 - refreshLocalMediaServerLibraryList: added: PMOMusic Media Server
-[main (2) ] INFO - 0:04:13.630 - active renderer: pizzicato-Music
-[main (2) ] INFO - 0:04:13.630 - pizzicato-Music: TimeTask already launched!
-[main (2) ] INFO - 0:04:13.630 - addListener (context: com.bubblesoft.android.bubbleupnp.MainTabActivity@ea019b3)
-[main (2) ] INFO - 0:04:13.632 - onStandbyChange: standby=false, ignore=true
-[main (2) ] INFO - 0:04:13.632 - pizzicato-Music: MainFragmentBase.onVolumeChange: 100
-[main (2) ] INFO - 0:04:13.633 - restore path: []
-[main (2) ] INFO - 0:04:13.633 - restoring path: []
-[main (2) ] INFO - 0:04:13.633 - onSaveInstanceState()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:04:13.634 - saveMediaServerState: PMOMusic Media Server
-[main (2) ] INFO - 0:04:13.634 - positionStack: []
-[main (2) ] INFO - 0:04:13.634 - itemList: Bundle[{firstVisiblePosition=0}]
-[main (2) ] INFO - 0:04:13.634 - containerPath: []
-[main (2) ] INFO - 0:04:13.636 - restored position stack: [3, 3, 3]
-[AsyncTask #1 (187) ] INFO - 0:04:13.636 - BrowseTask.doInBackground(): enter
-[AsyncTask #1 (187) ] INFO - 0:04:13.636 - BrowseTask.doInBackground(): loading container 'PMOMusic Media Server'
-[main (2) ] INFO - 0:04:13.638 - onCreateOptionsMenu()@914ef69/ea019b3:5238
-[main (2) ] WARNING - 0:04:13.638 - getBubbleUPnPServerFFmpegDecodeREST: not supported for OpenHome renderers
-[main (2) ] INFO - 0:04:13.639 - onPrepareOptionsMenu()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:04:13.698 - onDestroy()@9ef2a0e:5238
-[main (2) ] INFO - 0:04:13.718 - sorted 0 items took: 0 ms
-[main (2) ] INFO - 0:04:13.719 - sorted 0 items took: 0 ms
-[main (2) ] INFO - 0:04:13.719 - loaded file 63623ff4-ee41-4850-90aa-2d39395df981-Bookmarks ok: 0 items, 0 ms
-[main (2) ] INFO - 0:04:13.720 - sorted 0 items took: 0 ms
-[main (2) ] INFO - 0:04:13.720 - sorted 2 items took: 0 ms
-[main (2) ] INFO - 0:04:13.721 - sorted 2 items took: 0 ms
-[AsyncTask #1 (187) ] INFO - 0:04:13.721 - finished browsing: got 4 objects
-[AsyncTask #1 (187) ] INFO - 0:04:13.722 - BrowseTask.doInBackground(): no item
-[main (2) ] INFO - 0:04:13.735 - onCreateOptionsMenu()@914ef69/ea019b3:5238
-[main (2) ] WARNING - 0:04:13.735 - getBubbleUPnPServerFFmpegDecodeREST: not supported for OpenHome renderers
-[main (2) ] INFO - 0:04:13.736 - onPrepareOptionsMenu()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:04:14.470 - performDeviceSearch: search done
-[main (2) ] SEVERE - 0:04:14.471 - watchdog: device search--: 0
-[main (2) ] INFO - 0:04:15.114 - onPause()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:04:15.115 - removed listener: 3 listeners
-[main (2) ] INFO - 0:04:15.116 - onResume()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:04:15.117 - pizzicato-Music: TimeTask already launched!
-[main (2) ] INFO - 0:04:15.117 - addListener (context: com.bubblesoft.android.bubbleupnp.MainTabActivity@ea019b3)
-[main (2) ] INFO - 0:04:15.118 - onStandbyChange: standby=false, ignore=true
-[main (2) ] INFO - 0:04:15.118 - pizzicato-Music: MainFragmentBase.onVolumeChange: 100
-[main (2) ] INFO - 0:04:15.124 - onCreateOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:04:15.125 - onPrepareOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:04:22.211 - path = [radio-paradise:channel:mellow]
-[main (2) ] INFO - 0:04:22.212 - onSaveInstanceState()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:04:22.213 - saveMediaServerState: PMOMusic Media Server
-[main (2) ] INFO - 0:04:22.213 - positionStack: [3, 3, 3, 0]
-[main (2) ] INFO - 0:04:22.214 - itemList: Bundle[{firstVisiblePosition=0}]
-[main (2) ] INFO - 0:04:22.214 - containerPath: [radio-paradise:channel:mellow]
-[AsyncTask #1 (187) ] INFO - 0:04:22.216 - BrowseTask.doInBackground(): enter
-[AsyncTask #1 (187) ] INFO - 0:04:22.218 - BrowseTask.doInBackground(): loading container 'Mellow Mix'
-[main (2) ] INFO - 0:04:22.221 - onCreateOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:04:22.223 - onPrepareOptionsMenu()@df8ac1c/ea019b3:5238
-[Main #12 (339) ] INFO - 0:04:22.325 - task: start: extractItemsMetadata
-[AsyncTask #1 (187) ] INFO - 0:04:22.325 - finished browsing: got 2 objects
-[Main #12: extractItemsMetadata (339) ] INFO - 0:04:22.326 - task: executor 'MetadataExtract #%d': waiting for close to complete...
-[MetadataExtract #1 (371) ] INFO - 0:04:22.327 - task: start: Item #0
-[AsyncTask #1 (187) ] INFO - 0:04:22.327 - BrowseTask.doInBackground(): no item
-[MetadataExtract #1: Item #0 (371) ] INFO - 0:04:22.329 - FfmpegMediaMetadataRetriever: hash=-435748687: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Every Dawn’s a Mountain","100000":"false","2":"Tamino","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Babylon","39":"16","8":"2025"}
-[MetadataExtract #1 (371) ] INFO - 0:04:22.330 - task: end, 2ms: Item #0
-[Main #12: extractItemsMetadata (339) ] INFO - 0:04:22.330 - task: executor 'MetadataExtract #%d': close took 3 ms
-[Main #12 (339) ] INFO - 0:04:22.330 - task: end, 5ms: extractItemsMetadata
-[main (2) ] INFO - 0:04:22.338 - onCreateOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:04:22.340 - onPrepareOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:04:25.543 - path = [radio-paradise:channel:mellow, radio-paradise:channel:mellow:history]
-[main (2) ] INFO - 0:04:25.544 - onSaveInstanceState()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:04:25.545 - saveMediaServerState: PMOMusic Media Server
-[main (2) ] INFO - 0:04:25.545 - positionStack: [3, 3, 3, 0, 0]
-[main (2) ] INFO - 0:04:25.545 - itemList: Bundle[{firstVisiblePosition=0}]
-[main (2) ] INFO - 0:04:25.546 - containerPath: [radio-paradise:channel:mellow, radio-paradise:channel:mellow:history]
-[AsyncTask #1 (187) ] INFO - 0:04:25.548 - BrowseTask.doInBackground(): enter
-[main (2) ] INFO - 0:04:25.548 - onCreateOptionsMenu()@df8ac1c/ea019b3:5238
-[AsyncTask #1 (187) ] INFO - 0:04:25.550 - BrowseTask.doInBackground(): loading container 'Mellow Mix - History'
-[main (2) ] INFO - 0:04:25.552 - onPrepareOptionsMenu()@df8ac1c/ea019b3:5238
-[AsyncTask #1 (187) ] WARNING - 0:04:25.609 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/45e4c84bf08e1d976715235518c58175/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.610 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/198d8c63dcf1e621ebd05b9f6fd87386/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.612 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/32506bc2aa97bb3a9535b771c1617f0b/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.614 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/dfdd93bbc61c5a0020f32715f9bc9e50/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.616 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/4ba9909872cb63b07b07464d1961b476/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.618 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/eb8e4dfd1b055acf64fbc22e0ad36768/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.620 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/39cf232371b482b8cf4fb5c525ff0e94/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.621 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/0ebc06d64c2784a0ff329c4cc0a986b2/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.622 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/0d049094a8a6d753cd3c3ec2e10bfc21/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.623 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/7391afd94f3d145be1fb1f292daa136f/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.625 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/172d6ba8e1d0169e1d84320a5e50767e/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.626 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/79fcba551a423af054b023a2bf24073b/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.626 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/d2659b50e0e36f276048a50373b5b4fc/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.627 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/9dcf5452f33adbef0459c74762cf2aca/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.628 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/fd1a51f5344d8d8fa3f3fc31ebc5343d/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.628 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/36a37ecd7a982a356841a48a770a460b/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.663 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/fdc013cb811954f7aa6254bf4c16697e/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.664 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/1e715abd124e3f30a970b49a77a152c6/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.665 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/4b1a954e9f043987d8def8fbd3e3e867/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.666 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/172d6ba8e1d0169e1d84320a5e50767e/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.667 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/877119bd9100473f4870130d11bb0ab3/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.668 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/e8e2f2e56b5d0be2a670afd4e375523e/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.669 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/bff1f690ef399a0d7a5b9963a0da7a3f/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.670 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/76c207a03a3f01305e6348896434cf73/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.671 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/f119369cc72f919d63378465ed7fdf31/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.672 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/82299a6814ec9104010514c28757b2f5/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.673 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/1b21b135410e145a52d788f7f4a4fa68/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.674 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/fecc7386051e6225566f54dc7c9837d0/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.675 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/1ce26247b1226dee2fc34cfd59c28f78/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.677 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/5cdf1420bc8cc80959f2ee9647e2c4da/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.677 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/7939bfcb24a82b7bb6a28176b95fdd8f/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.678 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/d41896013ab277676ed6ed66b70de3c4/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.679 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/53d33f48da568006f936271d20a01d08/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.679 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/fc723fcd196fc4c8f9ae77956ffd9c52/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.680 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/a1c4f20c8a28b372b163946d345d2c08/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.681 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/9b5039a4842b724f57ae95263ab1f01e/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.682 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/39e1de9ff912438cd3fcf3f91bda9de0/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.683 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/9a276a3ce9b0415b3c8e9f88afeae897/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.683 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/719247e307fdb74c644757b1d8a4e293/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.684 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/ba0be49db3556b512b53245c910ac83e/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.685 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/7c8a7b431d4d1744b904c907c74179d5/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.685 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/54db28b37b416e714454b96996d39149/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.686 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/e8f2ef7188296f46cc0e1f2c72eef932/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.686 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/0bd78ed9f4f4d5fab2714c0c1b6ba18e/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.687 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/90e782381dbaad0274534eeef83b7179/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.688 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/e354ad05237ab3e84d7c186532f4936e/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.688 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/b2fe22c3b34008425111d4109f7e1f34/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.689 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/3790a635131f43ba3aae7dffaebdabd5/256
-[AsyncTask #1 (187) ] WARNING - 0:04:25.689 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/ea63e4b76e7f60bf9086af35768a74a4/256
-[Main #12 (339) ] INFO - 0:04:25.690 - task: start: extractItemsMetadata
-[AsyncTask #1 (187) ] INFO - 0:04:25.690 - finished browsing: got 49 objects
-[AsyncTask #1 (187) ] INFO - 0:04:25.690 - BrowseTask.doInBackground(): no item
-[MetadataExtract #1 (381) ] INFO - 0:04:25.691 - task: start: Item #0
-[MetadataExtract #2 (382) ] INFO - 0:04:25.691 - task: start: Item #1
-[MetadataExtract #3 (383) ] INFO - 0:04:25.691 - task: start: Item #2
-[MetadataExtract #4 (384) ] INFO - 0:04:25.692 - task: start: Item #3
-[MetadataExtract #6 (386) ] INFO - 0:04:25.692 - task: start: Item #5
-[MetadataExtract #5 (385) ] INFO - 0:04:25.692 - task: start: Item #4
-[MetadataExtract #7 (387) ] INFO - 0:04:25.693 - task: start: Item #6
-[Main #12: extractItemsMetadata (339) ] INFO - 0:04:25.693 - task: executor 'MetadataExtract #%d': waiting for close to complete...
-[MetadataExtract #8 (388) ] INFO - 0:04:25.693 - task: start: Item #7
-[MetadataExtract #1: Item #0 (381) ] INFO - 0:04:25.693 - FfmpegMediaMetadataRetriever: hash=-1759650642: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Sinéad O\u0027Connor","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Dancing Lessons","39":"16","9":"249470"}
-[MetadataExtract #1 (381) ] INFO - 0:04:25.694 - task: end, 3ms: Item #0
-[MetadataExtract #1 (381) ] INFO - 0:04:25.694 - task: start: Item #8
-[MetadataExtract #2: Item #1 (382) ] INFO - 0:04:25.694 - FfmpegMediaMetadataRetriever: hash=-1913648982: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Aukai","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Slow Sun","39":"16","9":"206810"}
-[MetadataExtract #2 (382) ] INFO - 0:04:25.694 - task: end, 4ms: Item #1
-[MetadataExtract #2 (382) ] INFO - 0:04:25.695 - task: start: Item #9
-[MetadataExtract #3: Item #2 (383) ] INFO - 0:04:25.695 - FfmpegMediaMetadataRetriever: hash=-106913403: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Diana Krall","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Fly Me to the Moon","39":"16","9":"328724"}
-[MetadataExtract #3 (383) ] INFO - 0:04:25.695 - task: end, 4ms: Item #2
-[main (2) ] INFO - 0:04:25.695 - onCreateOptionsMenu()@df8ac1c/ea019b3:5238
-[MetadataExtract #3 (383) ] INFO - 0:04:25.696 - task: start: Item #10
-[MetadataExtract #4: Item #3 (384) ] INFO - 0:04:25.696 - FfmpegMediaMetadataRetriever: hash=1993842102: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"The Mighty Rootsmen","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"I Won\u0027t Back Down","39":"16","9":"156594"}
-[main (2) ] INFO - 0:04:25.696 - onPrepareOptionsMenu()@df8ac1c/ea019b3:5238
-[MetadataExtract #6: Item #5 (386) ] INFO - 0:04:25.697 - FfmpegMediaMetadataRetriever: hash=-1138992005: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Michael Hedges","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Prelude to Cello Suite #1 (JS Bach)","39":"16","9":"139943"}
-[MetadataExtract #6 (386) ] INFO - 0:04:25.698 - task: end, 6ms: Item #5
-[MetadataExtract #6 (386) ] INFO - 0:04:25.698 - task: start: Item #11
-[MetadataExtract #6: Item #11 (386) ] INFO - 0:04:25.701 - FfmpegMediaMetadataRetriever: hash=1385248911: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Billy Bragg \u0026 Wilco","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"When The Roses Bloom Again","39":"16","9":"246000"}
-[MetadataExtract #6 (386) ] INFO - 0:04:25.702 - task: end, 4ms: Item #11
-[MetadataExtract #6 (386) ] INFO - 0:04:25.702 - task: start: Item #12
-[MetadataExtract #6: Item #12 (386) ] INFO - 0:04:25.702 - FfmpegMediaMetadataRetriever: hash=-352088410: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Suzanne Vega","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"12 Mortal Men","39":"16","9":"157000"}
-[MetadataExtract #8: Item #7 (388) ] INFO - 0:04:25.703 - FfmpegMediaMetadataRetriever: hash=42813812: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"I Am Kloot","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Let Them All In","39":"16","9":"231290"}
-[MetadataExtract #8 (388) ] INFO - 0:04:25.703 - task: end, 11ms: Item #7
-[MetadataExtract #8 (388) ] INFO - 0:04:25.704 - task: start: Item #13
-[MetadataExtract #4 (384) ] INFO - 0:04:25.697 - task: end, 5ms: Item #3
-[MetadataExtract #8: Item #13 (388) ] INFO - 0:04:25.704 - FfmpegMediaMetadataRetriever: hash=1891231045: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"The Sundays","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Wild Horses","39":"16","9":"277000"}
-[MetadataExtract #8 (388) ] INFO - 0:04:25.705 - task: end, 1ms: Item #13
-[MetadataExtract #8 (388) ] INFO - 0:04:25.705 - task: start: Item #15
-[MetadataExtract #8: Item #15 (388) ] INFO - 0:04:25.705 - FfmpegMediaMetadataRetriever: hash=1003137573: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Trespassers William","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Different Stars","39":"16","9":"278647"}
-[MetadataExtract #8 (388) ] INFO - 0:04:25.706 - task: end, 1ms: Item #15
-[MetadataExtract #8 (388) ] INFO - 0:04:25.706 - task: start: Item #16
-[MetadataExtract #8: Item #16 (388) ] INFO - 0:04:25.706 - FfmpegMediaMetadataRetriever: hash=-1783977340: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"David Gray","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Babylon","39":"16","9":"260750"}
-[MetadataExtract #5: Item #4 (385) ] INFO - 0:04:25.707 - FfmpegMediaMetadataRetriever: hash=-407518392: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Josh Ritter","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"The Curse","39":"16","9":"292250"}
-[MetadataExtract #5 (385) ] INFO - 0:04:25.707 - task: end, 16ms: Item #4
-[MetadataExtract #5 (385) ] INFO - 0:04:25.708 - task: start: Item #17
-[MetadataExtract #5: Item #17 (385) ] INFO - 0:04:25.708 - FfmpegMediaMetadataRetriever: hash=1845475776: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Bruce Cockburn","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Wondering Where the Lions Are (Live)","39":"16","9":"320000"}
-[MetadataExtract #5 (385) ] INFO - 0:04:25.709 - task: end, 1ms: Item #17
-[MetadataExtract #5 (385) ] INFO - 0:04:25.709 - task: start: Item #18
-[MetadataExtract #8 (388) ] INFO - 0:04:25.709 - task: end, 3ms: Item #16
-[MetadataExtract #8 (388) ] INFO - 0:04:25.709 - task: start: Item #19
-[MetadataExtract #3: Item #10 (383) ] INFO - 0:04:25.709 - FfmpegMediaMetadataRetriever: hash=1612634984: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","100000":"false","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","39":"16","9":"5050"}
-[MetadataExtract #3 (383) ] INFO - 0:04:25.710 - task: end, 14ms: Item #10
-[MetadataExtract #3 (383) ] INFO - 0:04:25.710 - task: start: Item #20
-[MetadataExtract #4 (384) ] INFO - 0:04:25.704 - task: start: Item #14
-[MetadataExtract #3: Item #20 (383) ] INFO - 0:04:25.711 - FfmpegMediaMetadataRetriever: hash=-993423853: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"R.E.M.","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Perfect Circle","39":"16","9":"202700"}
-[MetadataExtract #5: Item #18 (385) ] INFO - 0:04:25.711 - FfmpegMediaMetadataRetriever: hash=1710638978: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Sinéad O’Connor","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Back Where You Belong","39":"16","9":"249150"}
-[MetadataExtract #5 (385) ] INFO - 0:04:25.712 - task: end, 3ms: Item #18
-[MetadataExtract #6 (386) ] INFO - 0:04:25.708 - task: end, 6ms: Item #12
-[MetadataExtract #3 (383) ] INFO - 0:04:25.712 - task: end, 2ms: Item #20
-[MetadataExtract #3 (383) ] INFO - 0:04:25.713 - task: start: Item #23
-[MetadataExtract #6 (386) ] INFO - 0:04:25.712 - task: start: Item #22
-[MetadataExtract #5 (385) ] INFO - 0:04:25.712 - task: start: Item #21
-[MetadataExtract #1: Item #8 (381) ] INFO - 0:04:25.714 - FfmpegMediaMetadataRetriever: hash=724650897: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Peter Gabriel","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"The Book of Love","39":"16","9":"216972"}
-[MetadataExtract #1 (381) ] INFO - 0:04:25.714 - task: end, 21ms: Item #8
-[MetadataExtract #1 (381) ] INFO - 0:04:25.715 - task: start: Item #24
-[MetadataExtract #7: Item #6 (387) ] INFO - 0:04:25.715 - FfmpegMediaMetadataRetriever: hash=-962027383: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Ayla Nereo","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Ylva","39":"16","9":"289409"}
-[MetadataExtract #7 (387) ] INFO - 0:04:25.715 - task: end, 23ms: Item #6
-[MetadataExtract #7 (387) ] INFO - 0:04:25.716 - task: start: Item #25
-[MetadataExtract #1: Item #24 (381) ] INFO - 0:04:25.716 - FfmpegMediaMetadataRetriever: hash=1899042957: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"London Grammar","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Shyer","39":"16","9":"182000"}
-[MetadataExtract #1 (381) ] INFO - 0:04:25.717 - task: end, 2ms: Item #24
-[MetadataExtract #1 (381) ] INFO - 0:04:25.717 - task: start: Item #26
-[MetadataExtract #4: Item #14 (384) ] INFO - 0:04:25.717 - FfmpegMediaMetadataRetriever: hash=-1053255835: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Tim Buckley","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Happy Time","39":"16","9":"190000"}
-[MetadataExtract #4 (384) ] INFO - 0:04:25.717 - task: end, 14ms: Item #14
-[MetadataExtract #4 (384) ] INFO - 0:04:25.718 - task: start: Item #27
-[MetadataExtract #2: Item #9 (382) ] INFO - 0:04:25.718 - FfmpegMediaMetadataRetriever: hash=277540764: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Foo Fighters","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Still","39":"16","9":"310800"}
-[MetadataExtract #2 (382) ] INFO - 0:04:25.718 - task: end, 23ms: Item #9
-[MetadataExtract #2 (382) ] INFO - 0:04:25.718 - task: start: Item #28
-[MetadataExtract #3: Item #23 (383) ] INFO - 0:04:25.718 - FfmpegMediaMetadataRetriever: hash=-2056388036: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Norah Jones","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Light as a Feather","39":"16","9":"231305"}
-[MetadataExtract #3 (383) ] INFO - 0:04:25.719 - task: end, 6ms: Item #23
-[MetadataExtract #3 (383) ] INFO - 0:04:25.719 - task: start: Item #29
-[MetadataExtract #6: Item #22 (386) ] INFO - 0:04:25.719 - FfmpegMediaMetadataRetriever: hash=-395410295: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Sierra Ferrell","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Don’t Let Your Deal Go Down","39":"16","9":"211710"}
-[MetadataExtract #6 (386) ] INFO - 0:04:25.719 - task: end, 8ms: Item #22
-[MetadataExtract #6 (386) ] INFO - 0:04:25.720 - task: start: Item #30
-[MetadataExtract #5: Item #21 (385) ] INFO - 0:04:25.720 - FfmpegMediaMetadataRetriever: hash=1757379569: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"The Cactus Blossoms","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Mississippi","39":"16","9":"235634"}
-[MetadataExtract #5 (385) ] INFO - 0:04:25.720 - task: end, 7ms: Item #21
-[MetadataExtract #5 (385) ] INFO - 0:04:25.720 - task: start: Item #31
-[MetadataExtract #8: Item #19 (388) ] INFO - 0:04:25.720 - FfmpegMediaMetadataRetriever: hash=-894762509: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","100000":"false","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","39":"16","9":"8516"}
-[MetadataExtract #8 (388) ] INFO - 0:04:25.721 - task: end, 12ms: Item #19
-[MetadataExtract #8 (388) ] INFO - 0:04:25.721 - task: start: Item #32
-[MetadataExtract #7: Item #25 (387) ] INFO - 0:04:25.721 - FfmpegMediaMetadataRetriever: hash=-524282951: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Meyer, Douglas \u0026 Barenberg","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"The Hymn Of Ordinary Motion","39":"16","9":"114000"}
-[MetadataExtract #7 (387) ] INFO - 0:04:25.721 - task: end, 6ms: Item #25
-[MetadataExtract #7 (387) ] INFO - 0:04:25.722 - task: start: Item #33
-[MetadataExtract #1: Item #26 (381) ] INFO - 0:04:25.722 - FfmpegMediaMetadataRetriever: hash=687172484: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Tom Waits","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"The Heart of Saturday Night","39":"16","9":"229000"}
-[MetadataExtract #1 (381) ] INFO - 0:04:25.722 - task: end, 5ms: Item #26
-[MetadataExtract #1 (381) ] INFO - 0:04:25.722 - task: start: Item #34
-[MetadataExtract #4: Item #27 (384) ] INFO - 0:04:25.722 - FfmpegMediaMetadataRetriever: hash=131303568: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Neko Case","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Buckets of Rain","39":"16","9":"199000"}
-[MetadataExtract #4 (384) ] INFO - 0:04:25.723 - task: end, 5ms: Item #27
-[MetadataExtract #4 (384) ] INFO - 0:04:25.723 - task: start: Item #35
-[MetadataExtract #2: Item #28 (382) ] INFO - 0:04:25.723 - FfmpegMediaMetadataRetriever: hash=485794117: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Tracy Chapman","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"New Beginning","39":"16","9":"325000"}
-[MetadataExtract #2 (382) ] INFO - 0:04:25.723 - task: end, 6ms: Item #28
-[MetadataExtract #2 (382) ] INFO - 0:04:25.724 - task: start: Item #36
-[MetadataExtract #3: Item #29 (383) ] INFO - 0:04:25.724 - FfmpegMediaMetadataRetriever: hash=-775299294: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Blind Faith","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Can\u0027t Find My Way Home","39":"16","9":"188500"}
-[MetadataExtract #3 (383) ] INFO - 0:04:25.724 - task: end, 5ms: Item #29
-[MetadataExtract #3 (383) ] INFO - 0:04:25.724 - task: start: Item #37
-[MetadataExtract #6: Item #30 (386) ] INFO - 0:04:25.724 - FfmpegMediaMetadataRetriever: hash=-1561902046: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Willie Nelson","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Blue Eyes Crying in the Rain","39":"16","9":"136200"}
-[MetadataExtract #6 (386) ] INFO - 0:04:25.725 - task: end, 5ms: Item #30
-[MetadataExtract #6 (386) ] INFO - 0:04:25.725 - task: start: Item #38
-[MetadataExtract #5: Item #31 (385) ] INFO - 0:04:25.725 - FfmpegMediaMetadataRetriever: hash=1402956451: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Jon Redfern","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"I Love the Sun","39":"16","9":"300000"}
-[MetadataExtract #5 (385) ] INFO - 0:04:25.725 - task: end, 6ms: Item #31
-[MetadataExtract #5 (385) ] INFO - 0:04:25.726 - task: start: Item #39
-[MetadataExtract #8: Item #32 (388) ] INFO - 0:04:25.726 - FfmpegMediaMetadataRetriever: hash=1984356975: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Cyndi Lauper","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Time After Time","39":"16","9":"232250"}
-[MetadataExtract #8 (388) ] INFO - 0:04:25.726 - task: end, 5ms: Item #32
-[MetadataExtract #8 (388) ] INFO - 0:04:25.726 - task: start: Item #40
-[MetadataExtract #7: Item #33 (387) ] INFO - 0:04:25.726 - FfmpegMediaMetadataRetriever: hash=1977966954: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Fleetwood Mac","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Walk a Thin Line","39":"16","9":"222000"}
-[MetadataExtract #7 (387) ] INFO - 0:04:25.727 - task: end, 5ms: Item #33
-[MetadataExtract #7 (387) ] INFO - 0:04:25.727 - task: start: Item #41
-[MetadataExtract #1: Item #34 (381) ] INFO - 0:04:25.727 - FfmpegMediaMetadataRetriever: hash=1475446356: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Elephant Revival","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Barefoot Friend","39":"16","9":"191000"}
-[MetadataExtract #1 (381) ] INFO - 0:04:25.727 - task: end, 5ms: Item #34
-[MetadataExtract #1 (381) ] INFO - 0:04:25.727 - task: start: Item #42
-[MetadataExtract #4: Item #35 (384) ] INFO - 0:04:25.727 - FfmpegMediaMetadataRetriever: hash=1109877331: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Hamilton Leithauser","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"The Silent Orchestra","39":"16","9":"264060"}
-[MetadataExtract #4 (384) ] INFO - 0:04:25.728 - task: end, 5ms: Item #35
-[MetadataExtract #2: Item #36 (382) ] INFO - 0:04:25.728 - FfmpegMediaMetadataRetriever: hash=-2093135018: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"The Shins","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Turn on Me","39":"16","9":"209500"}
-[MetadataExtract #4 (384) ] INFO - 0:04:25.728 - task: start: Item #43
-[MetadataExtract #2 (382) ] INFO - 0:04:25.729 - task: end, 5ms: Item #36
-[MetadataExtract #2 (382) ] INFO - 0:04:25.729 - task: start: Item #44
-[MetadataExtract #4: Item #43 (384) ] INFO - 0:04:25.730 - FfmpegMediaMetadataRetriever: hash=-1752918010: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Paul Simon","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Loves Me Like A Rock","39":"16","9":"201000"}
-[MetadataExtract #4 (384) ] INFO - 0:04:25.731 - task: end, 3ms: Item #43
-[MetadataExtract #6: Item #38 (386) ] INFO - 0:04:25.731 - FfmpegMediaMetadataRetriever: hash=1709432058: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Cocosuma","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Servant","39":"16","9":"289070"}
-[MetadataExtract #4 (384) ] INFO - 0:04:25.732 - task: start: Item #45
-[MetadataExtract #5: Item #39 (385) ] INFO - 0:04:25.732 - FfmpegMediaMetadataRetriever: hash=-475084519: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Jimi Hendrix","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Castles Made Of Sand","39":"16","9":"164612"}
-[MetadataExtract #6 (386) ] INFO - 0:04:25.733 - task: end, 8ms: Item #38
-[MetadataExtract #6 (386) ] INFO - 0:04:25.733 - task: start: Item #46
-[MetadataExtract #8: Item #40 (388) ] INFO - 0:04:25.733 - FfmpegMediaMetadataRetriever: hash=-238367317: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Oi Va Voi","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"I Know What You Are","39":"16","9":"182000"}
-[MetadataExtract #8 (388) ] INFO - 0:04:25.734 - task: end, 8ms: Item #40
-[MetadataExtract #8 (388) ] INFO - 0:04:25.734 - task: start: Item #47
-[MetadataExtract #8: Item #47 (388) ] INFO - 0:04:25.734 - FfmpegMediaMetadataRetriever: hash=1850019505: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Harry Manx","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Bring That Thing (live)","39":"16","9":"332000"}
-[MetadataExtract #8 (388) ] INFO - 0:04:25.735 - task: end, 1ms: Item #47
-[MetadataExtract #8 (388) ] INFO - 0:04:25.735 - task: start: Item #48
-[MetadataExtract #5 (385) ] INFO - 0:04:25.733 - task: end, 8ms: Item #39
-[MetadataExtract #1: Item #42 (381) ] INFO - 0:04:25.735 - FfmpegMediaMetadataRetriever: hash=2140521498: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Manchester Orchestra","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Capital Karma","39":"16","9":"215108"}
-[MetadataExtract #1 (381) ] INFO - 0:04:25.736 - task: end, 8ms: Item #42
-[MetadataExtract #2: Item #44 (382) ] INFO - 0:04:25.736 - FfmpegMediaMetadataRetriever: hash=152071891: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Tamino","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Babylon","39":"16","9":"336306"}
-[MetadataExtract #2 (382) ] INFO - 0:04:25.736 - task: end, 7ms: Item #44
-[MetadataExtract #3: Item #37 (383) ] INFO - 0:04:25.737 - FfmpegMediaMetadataRetriever: hash=496599921: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Moby","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Wait for Me","39":"16","9":"204000"}
-[MetadataExtract #3 (383) ] INFO - 0:04:25.737 - task: end, 14ms: Item #37
-[MetadataExtract #4: Item #45 (384) ] INFO - 0:04:25.738 - FfmpegMediaMetadataRetriever: hash=-731586392: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Sonny Chillingworth","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Moe \u0027Uhane (Dream Slack Key)","39":"16","9":"164000"}
-[MetadataExtract #6: Item #46 (386) ] INFO - 0:04:25.739 - FfmpegMediaMetadataRetriever: hash=-174877526: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Jimmy Cliff","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"The Harder They Come","39":"16","9":"180968"}
-[MetadataExtract #4 (384) ] INFO - 0:04:25.740 - task: end, 8ms: Item #45
-[MetadataExtract #6 (386) ] INFO - 0:04:25.740 - task: end, 8ms: Item #46
-[MetadataExtract #7: Item #41 (387) ] INFO - 0:04:25.740 - FfmpegMediaMetadataRetriever: hash=-1032742246: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Wilco","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Sky Blue Sky","39":"16","9":"193957"}
-[MetadataExtract #7 (387) ] INFO - 0:04:25.741 - task: end, 14ms: Item #41
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.740 - FfmpegMediaMetadataRetriever: hash=1096471425: expensive op: retrieveMetadata
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.741 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/497c78b081943f22c0b7a2861e0bb35f_null_
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.742 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/e87aa42bc2f5632ebdf983a47b90d4fc_null_
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.742 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/b71d978c46b591f2211c5834a0e5b902_null_
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.742 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/079e09407590d3c89234f3433280c3e0_null_
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.742 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/a8f5995175f02b30b884ec3324c831a4_null_
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.743 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/ed084a8cd1b7ef2d38d4d8e8e272cc7c_null_
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.743 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/82dc11173748da450c8bdb1067b00bbb_null_
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.743 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/c8befc1539c774548f106f2f5ea6c4bf_null_
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.743 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/ca41892cc7c2b2298f6eff806ba2399a_null_
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.743 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/aa7e068ebfa7f443972ab1b72cffc3a8_null_
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.744 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/e5bee29a1067b71f8d96ab7bc592eec7_null_
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.744 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/2dc9f632f96001db6f6e0c714e61ea00_null_
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.744 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/d46e57c82ed02a1848e32c0b01f21cb7_null_
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.744 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/069ef589ce1d9621a87afb28e7fa658c_null_
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.744 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/1585bae3666307dd663c6f837492dec7_null_
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.745 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/d852d1f210c87200bd68b1429738ca5b_null_
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.746 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/43c48c8e99e74c18b5b404eb388dce24_null_
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.746 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/d5b6f3e1ccc8f4828ca2dc0efd69b987_null_
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.746 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/4d69f84b74a86795a52fcb73c3800af8_null_
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.746 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/ef96c7fc42def2977a9963e2d4e892ff_null_
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.747 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/6ea1402e7b33ffb328887cb914d51778_null_
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.747 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/8ee666aeb2de061e86fc6d568b5f2a18_null_
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.747 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/508871fecdd0d94347006d53b427111e_null_
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.747 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/f0b1544d237f5347612a7f7832f8f1ac_null_
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.771 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 1 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/audio/flac/50314386354bec0fa6062156ab2e50fa
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.986 - ffprobe finished
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.986 - ffprobe took: 216 ms
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.986 - added cached probe info for http://192.168.0.138:8080/audio/flac/50314386354bec0fa6062156ab2e50fa_null_, expires in 173 seconds
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.987 - FfmpegMediaMetadataRetriever: hash=1096471425: retrieveMetadata took: 247 ms
-[MetadataExtract #8: Item #48 (388) ] INFO - 0:04:25.987 - FfmpegMediaMetadataRetriever: hash=1096471425: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Jenny Lewis","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"The Charging Sky (w/ The Watson Twins)","39":"16","9":"173476"}
-[MetadataExtract #8 (388) ] INFO - 0:04:25.987 - task: end, 253ms: Item #48
-[Main #12: extractItemsMetadata (339) ] INFO - 0:04:25.988 - task: executor 'MetadataExtract #%d': close took 295 ms
-[Main #12 (339) ] INFO - 0:04:25.989 - task: end, 299ms: extractItemsMetadata
-[AsyncTask #1 (187) ] INFO - 0:04:32.12 - BrowseTask.doInBackground(): enter
-[main (2) ] INFO - 0:04:32.28 - selected item changed (service):
-[main (2) ] INFO - 0:04:32.86 - onCreateOptionsMenu()@df8ac1c/ea019b3:5238
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:32.87 - pizzicato-Music: Dancing Lessons: returning first supported resource
-[main (2) ] INFO - 0:04:32.89 - onPrepareOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:04:32.101 - selected item changed (service):
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:32.108 - pizzicato-Music: addItemsAfter: inserted item after id=72, url=http://192.168.0.138:8080/audio/flac/50ec4ba2cffd1ef92ebe194f36657375, metadata=- object.item.audioItem.musicTrackDancing LessonsSinéad O'ConnorSinéad O'ConnorRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2000-01-01Faith and Courage63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/50ec4ba2cffd1ef92ebe194f36657375
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:32.109 - pizzicato-Music: addItemsAfter: wait 2000ms (workaround)
-[main (2) ] WARNING - 0:04:32.122 - .b : couldn't find item trackId = 25
-[main (2) ] INFO - 0:04:32.123 - selected item changed (service):
-[main (2) ] WARNING - 0:04:32.145 - .b : couldn't find item trackId = 0
-[main (2) ] INFO - 0:04:32.145 - selected item changed (service):
-[main (2) ] INFO - 0:04:32.169 - stopping task TimeTask: pizzicato-Music
-[main (2) ] INFO - 0:04:32.169 - ignoreTransportStateChangeForTrackAdvance: false, allowTrackAdvance: true
-[main (2) ] INFO - 0:04:32.169 - SETACTIVE: onTransportStateChanged: post STOP callback
-[main (2) ] INFO - 0:04:32.185 - onCreateOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:04:32.186 - onPrepareOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:04:33.99 - pizzicato-Music: processIdArray: ignoring update due to lock
-[main (2) ] WARNING - 0:04:33.100 - .b : couldn't find item trackId = 0
-[main (2) ] INFO - 0:04:33.100 - selected item changed (service):
-[main (2) ] WARNING - 0:04:33.126 - .b : couldn't find item trackId = 72
-[main (2) ] INFO - 0:04:33.126 - selected item changed (service):
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.125 - pizzicato-Music: reading 1 new items to insert: [72]
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.126 - pizzicato-Music: getting [0..1[
-[main (2) ] INFO - 0:04:34.148 - .b : selected item (track id): Dancing Lessons
-[main (2) ] INFO - 0:04:34.149 - selected item changed (service): Dancing Lessons
-[main (2) ] INFO - 0:04:34.182 - onCreateOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:04:34.184 - onPrepareOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:04:34.210 - playItem: main thread
-[PlaybackAction: idle (323) ] INFO - 0:04:34.211 - playItem: worker thread enter
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.214 - pizzicato-Music: Slow Sun: returning first supported resource
-[PlaybackAction:playItem (323) ] INFO - 0:04:34.228 - playItem worker thread took: 17 ms
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.243 - pizzicato-Music: addItemsAfter: inserted item after id=73, url=http://192.168.0.138:8080/audio/flac/341b0cbfdfe9755ac1c676d0e77a23c9, metadata=- object.item.audioItem.musicTrackSlow SunAukaiAukaiRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2025-01-01Slow Sun - Single63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/341b0cbfdfe9755ac1c676d0e77a23c9
-[main (2) ] INFO - 0:04:34.254 - pizzicato-Music: processIdArray: ignoring update due to lock
-[main (2) ] INFO - 0:04:34.255 - started task TimeTask: pizzicato-Music
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.255 - pizzicato-Music: Fly Me to the Moon: returning first supported resource
-[main (2) ] INFO - 0:04:34.258 - ignoreTransportStateChangeForTrackAdvance: false, allowTrackAdvance: true
-[main (2) ] INFO - 0:04:34.258 - dynamic shortcuts: added 'pizzicato-Music'
-[main (2) ] INFO - 0:04:34.260 - renderer chooser target: saved 1 targets
-[Main #12 (339) ] INFO - 0:04:34.261 - task: start: publishRendererChooserTargets
-[Main #12 (339) ] INFO - 0:04:34.286 - task: end, 26ms: publishRendererChooserTargets
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.287 - pizzicato-Music: addItemsAfter: inserted item after id=74, url=http://192.168.0.138:8080/audio/flac/f1f7731535fdb77e83b401c5c54790a9, metadata=- object.item.audioItem.musicTrackFly Me to the MoonDiana KrallDiana KrallRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2002-01-01Live In Paris63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/f1f7731535fdb77e83b401c5c54790a9
-[AsyncTask #4 (393) ] INFO - 0:04:34.294 - saved file /storage/emulated/0/Android/data/com.bubblesoft.android.bubbleupnp/files/playlists/recent.dpl ok: 100 items
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.296 - pizzicato-Music: I Won't Back Down: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.325 - pizzicato-Music: addItemsAfter: inserted item after id=75, url=http://192.168.0.138:8080/audio/flac/4592022e5adbb88cec2f7883972b8303, metadata=- object.item.audioItem.musicTrackI Won't Back DownThe Mighty RootsmenThe Mighty RootsmenRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2025-01-01The Mighty Rootsmen, Toots & The Maytals, Gregory Isaacs & Mykal Rose63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/4592022e5adbb88cec2f7883972b8303
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.332 - pizzicato-Music: The Curse: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.361 - pizzicato-Music: addItemsAfter: inserted item after id=76, url=http://192.168.0.138:8080/audio/flac/be31edd4a08b2208188269574312c1ef, metadata=- object.item.audioItem.musicTrackThe CurseJosh RitterJosh RitterRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2010-01-01So Runs the World Away63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/be31edd4a08b2208188269574312c1ef
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.363 - pizzicato-Music: Prelude to Cello Suite #1 (JS Bach): returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.425 - pizzicato-Music: addItemsAfter: inserted item after id=77, url=http://192.168.0.138:8080/audio/flac/f6f23d21ec900a59466e3b23e2ea95fc, metadata=- object.item.audioItem.musicTrackPrelude to Cello Suite #1 (JS Bach)Michael HedgesMichael HedgesRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1990-01-01Select Sounds 199663623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/f6f23d21ec900a59466e3b23e2ea95fc
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.431 - pizzicato-Music: Ylva: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.480 - pizzicato-Music: addItemsAfter: inserted item after id=78, url=http://192.168.0.138:8080/audio/flac/f5e11ed3dcebbc4b409786631d4703b2, metadata=- object.item.audioItem.musicTrackYlvaAyla NereoAyla NereoRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2023-01-01Sovereign Kin – Book I: The Spark63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/f5e11ed3dcebbc4b409786631d4703b2
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.486 - pizzicato-Music: Let Them All In: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.529 - pizzicato-Music: addItemsAfter: inserted item after id=79, url=http://192.168.0.138:8080/audio/flac/668db4b5f4b25fbad790b5bec3b95b43, metadata=- object.item.audioItem.musicTrackLet Them All InI Am KlootI Am KlootRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2013-01-01Let It All In63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/668db4b5f4b25fbad790b5bec3b95b43
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.531 - pizzicato-Music: The Book of Love: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.557 - pizzicato-Music: addItemsAfter: inserted item after id=80, url=http://192.168.0.138:8080/audio/flac/e807470e04488465c04c4d4de763c695, metadata=- object.item.audioItem.musicTrackThe Book of LovePeter GabrielPeter GabrielRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2010-01-01Scratch My Back63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/e807470e04488465c04c4d4de763c695
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.560 - pizzicato-Music: Still: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.576 - pizzicato-Music: addItemsAfter: inserted item after id=81, url=http://192.168.0.138:8080/audio/flac/c1ed42dee1c68dc52ddcade17e7c03d8, metadata=- object.item.audioItem.musicTrackStillFoo FightersFoo FightersRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2005-01-01In Your Honor63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/c1ed42dee1c68dc52ddcade17e7c03d8
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.579 - pizzicato-Music: Listener-supported: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.601 - pizzicato-Music: addItemsAfter: inserted item after id=82, url=http://192.168.0.138:8080/audio/flac/0354ff365fc12530ab574798918231f3, metadata=- object.item.audioItem.musicTrackListener-supportedCommercial-freeCommercial-freeRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/0354ff365fc12530ab574798918231f3
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.607 - pizzicato-Music: When The Roses Bloom Again: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.626 - pizzicato-Music: addItemsAfter: inserted item after id=83, url=http://192.168.0.138:8080/audio/flac/25540bcbdb5fb212d0d3c1a29faa762f, metadata=- object.item.audioItem.musicTrackWhen The Roses Bloom AgainBilly Bragg & WilcoBilly Bragg & WilcoRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2012-01-01Mermaid Avenue Vol III63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/25540bcbdb5fb212d0d3c1a29faa762f
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.628 - pizzicato-Music: 12 Mortal Men: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.646 - pizzicato-Music: addItemsAfter: inserted item after id=84, url=http://192.168.0.138:8080/audio/flac/b1819621989454decfdeeb2fd1012742, metadata=- object.item.audioItem.musicTrack12 Mortal MenSuzanne VegaSuzanne VegaRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2016-01-01Lover, Beloved: Songs from an Evening with Carson McCullers1263623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/b1819621989454decfdeeb2fd1012742
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.653 - pizzicato-Music: Wild Horses: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.670 - pizzicato-Music: addItemsAfter: inserted item after id=85, url=http://192.168.0.138:8080/audio/flac/7a1420295c9ba04a9123f5a8d3fc7b08, metadata=- object.item.audioItem.musicTrackWild HorsesThe SundaysThe SundaysRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1992-01-01Blind63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/7a1420295c9ba04a9123f5a8d3fc7b08
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.677 - pizzicato-Music: Happy Time: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.699 - pizzicato-Music: addItemsAfter: inserted item after id=86, url=http://192.168.0.138:8080/audio/flac/a55129a8f5bc6ecefd7b904d794b9052, metadata=- object.item.audioItem.musicTrackHappy TimeTim BuckleyTim BuckleyRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1969-01-01Blue Afternoon63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/a55129a8f5bc6ecefd7b904d794b9052
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.706 - pizzicato-Music: Different Stars: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.982 - pizzicato-Music: addItemsAfter: inserted item after id=87, url=http://192.168.0.138:8080/audio/flac/1d25a8b5f6be45e2bb26896b82ed15c7, metadata=- object.item.audioItem.musicTrackDifferent StarsTrespassers WilliamTrespassers WilliamRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2002-01-01Different Stars63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/1d25a8b5f6be45e2bb26896b82ed15c7
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:34.985 - pizzicato-Music: Babylon: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.6 - pizzicato-Music: addItemsAfter: inserted item after id=88, url=http://192.168.0.138:8080/audio/flac/2ad68dd550b16313027271cb63d9153b, metadata=- object.item.audioItem.musicTrackBabylonDavid GrayDavid GrayRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1998-01-01White Ladder63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/2ad68dd550b16313027271cb63d9153b
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.9 - pizzicato-Music: Wondering Where the Lions Are (Live): returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.27 - pizzicato-Music: addItemsAfter: inserted item after id=89, url=http://192.168.0.138:8080/audio/flac/67c92e72e18e489dee64f769588cb1ce, metadata=- object.item.audioItem.musicTrackWondering Where the Lions Are (Live)Bruce CockburnBruce CockburnRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1997-01-01The Whole Night Sky63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/67c92e72e18e489dee64f769588cb1ce
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.30 - pizzicato-Music: Back Where You Belong: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.55 - pizzicato-Music: addItemsAfter: inserted item after id=90, url=http://192.168.0.138:8080/audio/flac/82dc11173748da450c8bdb1067b00bbb, metadata=- object.item.audioItem.musicTrackBack Where You BelongSinéad O'ConnorSinéad O'ConnorRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2012-01-01How About I Be Me (And You Be You)?63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/82dc11173748da450c8bdb1067b00bbb
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.57 - pizzicato-Music: Listener-supported: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.110 - pizzicato-Music: addItemsAfter: inserted item after id=91, url=http://192.168.0.138:8080/audio/flac/f0b1544d237f5347612a7f7832f8f1ac, metadata=- object.item.audioItem.musicTrackListener-supportedCommercial-freeCommercial-freeRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/f0b1544d237f5347612a7f7832f8f1ac
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.115 - pizzicato-Music: Perfect Circle: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.139 - pizzicato-Music: addItemsAfter: inserted item after id=92, url=http://192.168.0.138:8080/audio/flac/aa7e068ebfa7f443972ab1b72cffc3a8, metadata=- object.item.audioItem.musicTrackPerfect CircleR.E.M.R.E.M.Radio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1983-01-01Murmur63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/aa7e068ebfa7f443972ab1b72cffc3a8
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.145 - pizzicato-Music: Mississippi: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.170 - pizzicato-Music: addItemsAfter: inserted item after id=93, url=http://192.168.0.138:8080/audio/flac/508871fecdd0d94347006d53b427111e, metadata=- object.item.audioItem.musicTrackMississippiThe Cactus BlossomsThe Cactus BlossomsRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2016-01-01You're Dreaming63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/508871fecdd0d94347006d53b427111e
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.176 - pizzicato-Music: Don’t Let Your Deal Go Down: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.203 - pizzicato-Music: addItemsAfter: inserted item after id=94, url=http://192.168.0.138:8080/audio/flac/ca41892cc7c2b2298f6eff806ba2399a, metadata=- object.item.audioItem.musicTrackDon’t Let Your Deal Go DownSierra FerrellSierra FerrellRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2024-01-01Trail of Flowers63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/ca41892cc7c2b2298f6eff806ba2399a
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.209 - pizzicato-Music: Light as a Feather: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.227 - pizzicato-Music: addItemsAfter: inserted item after id=95, url=http://192.168.0.138:8080/audio/flac/c8befc1539c774548f106f2f5ea6c4bf, metadata=- object.item.audioItem.musicTrackLight as a FeatherNorah JonesNorah JonesRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2009-01-01The Fall63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/c8befc1539c774548f106f2f5ea6c4bf
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.235 - pizzicato-Music: Shyer: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.261 - pizzicato-Music: addItemsAfter: inserted item after id=96, url=http://192.168.0.138:8080/audio/flac/43c48c8e99e74c18b5b404eb388dce24, metadata=- object.item.audioItem.musicTrackShyerLondon GrammarLondon GrammarRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2013-01-01If You Wait63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/43c48c8e99e74c18b5b404eb388dce24
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.268 - pizzicato-Music: The Hymn Of Ordinary Motion: returning first supported resource
-[main (2) ] INFO - 0:04:35.271 - pizzicato-Music: processIdArray: ignoring update due to lock
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.291 - pizzicato-Music: addItemsAfter: inserted item after id=97, url=http://192.168.0.138:8080/audio/flac/2dc9f632f96001db6f6e0c714e61ea00, metadata=- object.item.audioItem.musicTrackThe Hymn Of Ordinary MotionMeyer, Douglas & BarenbergMeyer, Douglas & BarenbergRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1993-01-01Skip, Hop & Wobble63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/2dc9f632f96001db6f6e0c714e61ea00
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.299 - pizzicato-Music: The Heart of Saturday Night: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.324 - pizzicato-Music: addItemsAfter: inserted item after id=98, url=http://192.168.0.138:8080/audio/flac/d5b6f3e1ccc8f4828ca2dc0efd69b987, metadata=- object.item.audioItem.musicTrackThe Heart of Saturday NightTom WaitsTom WaitsRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1974-01-01Mainstreet63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/d5b6f3e1ccc8f4828ca2dc0efd69b987
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.330 - pizzicato-Music: Buckets of Rain: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.353 - pizzicato-Music: addItemsAfter: inserted item after id=99, url=http://192.168.0.138:8080/audio/flac/6ea1402e7b33ffb328887cb914d51778, metadata=- object.item.audioItem.musicTrackBuckets of RainNeko CaseNeko CaseRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2005-01-01Sweetheart 200563623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/6ea1402e7b33ffb328887cb914d51778
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.358 - pizzicato-Music: New Beginning: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.390 - pizzicato-Music: addItemsAfter: inserted item after id=100, url=http://192.168.0.138:8080/audio/flac/ffda328ef818229238661ec37ff37956, metadata=- object.item.audioItem.musicTrackNew BeginningTracy ChapmanTracy ChapmanRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1995-01-01New Beginning63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/ffda328ef818229238661ec37ff37956
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.393 - pizzicato-Music: Can't Find My Way Home: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.409 - pizzicato-Music: addItemsAfter: inserted item after id=101, url=http://192.168.0.138:8080/audio/flac/497c78b081943f22c0b7a2861e0bb35f, metadata=- object.item.audioItem.musicTrackCan't Find My Way HomeBlind FaithBlind FaithRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1969-01-01Blind Faith63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/497c78b081943f22c0b7a2861e0bb35f
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.412 - pizzicato-Music: Blue Eyes Crying in the Rain: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.439 - pizzicato-Music: addItemsAfter: inserted item after id=102, url=http://192.168.0.138:8080/audio/flac/e87aa42bc2f5632ebdf983a47b90d4fc, metadata=- object.item.audioItem.musicTrackBlue Eyes Crying in the RainWillie NelsonWillie NelsonRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1975-01-01Red Headed Stranger63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/e87aa42bc2f5632ebdf983a47b90d4fc
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.443 - pizzicato-Music: I Love the Sun: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.460 - pizzicato-Music: addItemsAfter: inserted item after id=103, url=http://192.168.0.138:8080/audio/flac/77d393f256c7d2b397d9af5c8504596c, metadata=- object.item.audioItem.musicTrackI Love the SunJon RedfernJon RedfernRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2007-01-01May Be Some Time63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/77d393f256c7d2b397d9af5c8504596c
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.465 - pizzicato-Music: Time After Time: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.487 - pizzicato-Music: addItemsAfter: inserted item after id=104, url=http://192.168.0.138:8080/audio/flac/069ef589ce1d9621a87afb28e7fa658c, metadata=- object.item.audioItem.musicTrackTime After TimeCyndi LauperCyndi LauperRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1982-01-01She’s So Unusual63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/069ef589ce1d9621a87afb28e7fa658c
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.494 - pizzicato-Music: Walk a Thin Line: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.518 - pizzicato-Music: addItemsAfter: inserted item after id=105, url=http://192.168.0.138:8080/audio/flac/ef96c7fc42def2977a9963e2d4e892ff, metadata=- object.item.audioItem.musicTrackWalk a Thin LineFleetwood MacFleetwood MacRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1979-01-01Tusk63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/ef96c7fc42def2977a9963e2d4e892ff
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.525 - pizzicato-Music: Barefoot Friend: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.551 - pizzicato-Music: addItemsAfter: inserted item after id=106, url=http://192.168.0.138:8080/audio/flac/4d69f84b74a86795a52fcb73c3800af8, metadata=- object.item.audioItem.musicTrackBarefoot FriendElephant RevivalElephant RevivalRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2010-01-01Break In the Clouds63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/4d69f84b74a86795a52fcb73c3800af8
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.558 - pizzicato-Music: The Silent Orchestra: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.579 - pizzicato-Music: addItemsAfter: inserted item after id=107, url=http://192.168.0.138:8080/audio/flac/667f1ebbc85d6440a7ff4afb9a527b89, metadata=- object.item.audioItem.musicTrackThe Silent OrchestraHamilton LeithauserHamilton LeithauserRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2014-01-01Black Hours63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/667f1ebbc85d6440a7ff4afb9a527b89
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.586 - pizzicato-Music: Turn on Me: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.609 - pizzicato-Music: addItemsAfter: inserted item after id=108, url=http://192.168.0.138:8080/audio/flac/d46e57c82ed02a1848e32c0b01f21cb7, metadata=- object.item.audioItem.musicTrackTurn on MeThe ShinsThe ShinsRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2007-01-01Wincing The Night Away63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/d46e57c82ed02a1848e32c0b01f21cb7
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.612 - pizzicato-Music: Wait for Me: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.636 - pizzicato-Music: addItemsAfter: inserted item after id=109, url=http://192.168.0.138:8080/audio/flac/a8f5995175f02b30b884ec3324c831a4, metadata=- object.item.audioItem.musicTrackWait for MeMobyMobyRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2009-01-01Wait for Me63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/a8f5995175f02b30b884ec3324c831a4
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.641 - pizzicato-Music: Servant: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.669 - pizzicato-Music: addItemsAfter: inserted item after id=110, url=http://192.168.0.138:8080/audio/flac/8122ae21da8da1e762a22dabd9817802, metadata=- object.item.audioItem.musicTrackServantCocosumaCocosumaRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2006-01-01Pointing Excitedly To The Sky63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/8122ae21da8da1e762a22dabd9817802
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.673 - pizzicato-Music: Castles Made Of Sand: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.690 - pizzicato-Music: addItemsAfter: inserted item after id=111, url=http://192.168.0.138:8080/audio/flac/b71d978c46b591f2211c5834a0e5b902, metadata=- object.item.audioItem.musicTrackCastles Made Of SandJimi HendrixJimi HendrixRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1967-01-01Electric Guitarland63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/b71d978c46b591f2211c5834a0e5b902
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.693 - pizzicato-Music: I Know What You Are: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.719 - pizzicato-Music: addItemsAfter: inserted item after id=112, url=http://192.168.0.138:8080/audio/flac/079e09407590d3c89234f3433280c3e0, metadata=- object.item.audioItem.musicTrackI Know What You AreOi Va VoiOi Va VoiRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2009-01-01Travelling The Face Of The Globe63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/079e09407590d3c89234f3433280c3e0
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.724 - pizzicato-Music: Sky Blue Sky: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.743 - pizzicato-Music: addItemsAfter: inserted item after id=113, url=http://192.168.0.138:8080/audio/flac/1585bae3666307dd663c6f837492dec7, metadata=- object.item.audioItem.musicTrackSky Blue SkyWilcoWilcoRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2007-01-012005-11-01: Auditorium Theatre, Chicago, IL, USA63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/1585bae3666307dd663c6f837492dec7
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.747 - pizzicato-Music: Capital Karma: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.770 - pizzicato-Music: addItemsAfter: inserted item after id=114, url=http://192.168.0.138:8080/audio/flac/d852d1f210c87200bd68b1429738ca5b, metadata=- object.item.audioItem.musicTrackCapital KarmaManchester OrchestraManchester OrchestraRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2023-01-01The Valley Of Vision63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/d852d1f210c87200bd68b1429738ca5b
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.774 - pizzicato-Music: Loves Me Like A Rock: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.798 - pizzicato-Music: addItemsAfter: inserted item after id=115, url=http://192.168.0.138:8080/audio/flac/ed084a8cd1b7ef2d38d4d8e8e272cc7c, metadata=- object.item.audioItem.musicTrackLoves Me Like A RockPaul SimonPaul SimonRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1973-01-01There Goes Rhymin' Simon63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/ed084a8cd1b7ef2d38d4d8e8e272cc7c
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.804 - pizzicato-Music: Babylon: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.822 - pizzicato-Music: addItemsAfter: inserted item after id=116, url=http://192.168.0.138:8080/audio/flac/f1f31e24b2c730171b8642af0d0bcc04, metadata=- object.item.audioItem.musicTrackBabylonTaminoTaminoRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2025-01-01Every Dawn’s a Mountain63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/f1f31e24b2c730171b8642af0d0bcc04
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.825 - pizzicato-Music: Moe 'Uhane (Dream Slack Key): returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.839 - pizzicato-Music: addItemsAfter: inserted item after id=117, url=http://192.168.0.138:8080/audio/flac/e5bee29a1067b71f8d96ab7bc592eec7, metadata=- object.item.audioItem.musicTrackMoe 'Uhane (Dream Slack Key)Sonny ChillingworthSonny ChillingworthRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1993-01-01Sonny Solo63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/e5bee29a1067b71f8d96ab7bc592eec7
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.842 - pizzicato-Music: The Harder They Come: returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.862 - pizzicato-Music: addItemsAfter: inserted item after id=118, url=http://192.168.0.138:8080/audio/flac/8ee666aeb2de061e86fc6d568b5f2a18, metadata=- object.item.audioItem.musicTrackThe Harder They ComeJimmy CliffJimmy CliffRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)1972-01-01The Harder They Come63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/8ee666aeb2de061e86fc6d568b5f2a18
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.865 - pizzicato-Music: Bring That Thing (live): returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.885 - pizzicato-Music: addItemsAfter: inserted item after id=119, url=http://192.168.0.138:8080/audio/flac/4c33e09beef28347ed88555d69adfa0c, metadata=- object.item.audioItem.musicTrackBring That Thing (live)Harry ManxHarry ManxRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2007-01-01Dog My Cat63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/4c33e09beef28347ed88555d69adfa0c
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.888 - pizzicato-Music: The Charging Sky (w/ The Watson Twins): returning first supported resource
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.904 - pizzicato-Music: addItemsAfter: inserted item after id=120, url=http://192.168.0.138:8080/audio/flac/50314386354bec0fa6062156ab2e50fa, metadata=- object.item.audioItem.musicTrackThe Charging Sky (w/ The Watson Twins)Jenny LewisJenny LewisRadio Paradisetag.Audio_codec_long_name=FLAC (Free Lossless Audio Codec)2005-01-01Live and Unrehearsed63623ff4-ee41-4850-90aa-2d39395df981http://192.168.0.138:8080/audio/flac/50314386354bec0fa6062156ab2e50fa
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.924 - pizzicato-Music: reading 48 new items to insert: [73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120]
-[AbstractPlaylistService-addItemsAfter (3] INFO - 0:04:35.925 - pizzicato-Music: getting [0..48[
-[main (2) ] INFO - 0:04:36.35 - onCreateOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:04:36.36 - onPrepareOptionsMenu()@df8ac1c/ea019b3:5238
-[Main #12 (339) ] INFO - 0:04:36.101 - task: start: extractItemsMetadata
-[MetadataExtract #1 (396) ] INFO - 0:04:36.105 - task: start: Item #0
-[MetadataExtract #2 (397) ] INFO - 0:04:36.105 - task: start: Item #1
-[MetadataExtract #3 (398) ] INFO - 0:04:36.106 - task: start: Item #2
-[MetadataExtract #1: Item #0 (396) ] INFO - 0:04:36.107 - FfmpegMediaMetadataRetriever: hash=-1759650642: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Sinéad O\u0027Connor","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Dancing Lessons","39":"16","9":"249470"}
-[MetadataExtract #6 (401) ] INFO - 0:04:36.107 - task: start: Item #5
-[MetadataExtract #1 (396) ] INFO - 0:04:36.108 - task: end, 3ms: Item #0
-[MetadataExtract #4 (399) ] INFO - 0:04:36.108 - task: start: Item #3
-[MetadataExtract #1 (396) ] INFO - 0:04:36.108 - task: start: Item #8
-[Main #12: extractItemsMetadata (339) ] INFO - 0:04:36.109 - task: executor 'MetadataExtract #%d': waiting for close to complete...
-[MetadataExtract #7 (402) ] INFO - 0:04:36.109 - task: start: Item #6
-[MetadataExtract #5 (400) ] INFO - 0:04:36.109 - task: start: Item #4
-[MetadataExtract #6: Item #5 (401) ] INFO - 0:04:36.109 - FfmpegMediaMetadataRetriever: hash=-1138992005: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Michael Hedges","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Prelude to Cello Suite #1 (JS Bach)","39":"16","9":"139943"}
-[MetadataExtract #6 (401) ] INFO - 0:04:36.109 - task: end, 2ms: Item #5
-[MetadataExtract #8 (403) ] INFO - 0:04:36.109 - task: start: Item #7
-[MetadataExtract #6 (401) ] INFO - 0:04:36.110 - task: start: Item #9
-[MetadataExtract #5: Item #4 (400) ] INFO - 0:04:36.110 - FfmpegMediaMetadataRetriever: hash=-407518392: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Josh Ritter","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"The Curse","39":"16","9":"292250"}
-[MetadataExtract #5 (400) ] INFO - 0:04:36.111 - task: end, 2ms: Item #4
-[MetadataExtract #5 (400) ] INFO - 0:04:36.112 - task: start: Item #10
-[MetadataExtract #2: Item #1 (397) ] INFO - 0:04:36.112 - FfmpegMediaMetadataRetriever: hash=-1913648982: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Aukai","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Slow Sun","39":"16","9":"206810"}
-[MetadataExtract #1: Item #8 (396) ] INFO - 0:04:36.113 - FfmpegMediaMetadataRetriever: hash=724650897: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Peter Gabriel","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"The Book of Love","39":"16","9":"216972"}
-[MetadataExtract #2 (397) ] INFO - 0:04:36.113 - task: end, 8ms: Item #1
-[MetadataExtract #1 (396) ] INFO - 0:04:36.113 - task: end, 5ms: Item #8
-[MetadataExtract #2 (397) ] INFO - 0:04:36.113 - task: start: Item #11
-[MetadataExtract #1 (396) ] INFO - 0:04:36.113 - task: start: Item #12
-[MetadataExtract #4: Item #3 (399) ] INFO - 0:04:36.114 - FfmpegMediaMetadataRetriever: hash=1993842102: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"The Mighty Rootsmen","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"I Won\u0027t Back Down","39":"16","9":"156594"}
-[MetadataExtract #4 (399) ] INFO - 0:04:36.115 - task: end, 7ms: Item #3
-[MetadataExtract #7: Item #6 (402) ] INFO - 0:04:36.115 - FfmpegMediaMetadataRetriever: hash=-962027383: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Ayla Nereo","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Ylva","39":"16","9":"289409"}
-[MetadataExtract #4 (399) ] INFO - 0:04:36.115 - task: start: Item #13
-[MetadataExtract #3: Item #2 (398) ] INFO - 0:04:36.115 - FfmpegMediaMetadataRetriever: hash=-106913403: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Diana Krall","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Fly Me to the Moon","39":"16","9":"328724"}
-[MetadataExtract #3 (398) ] INFO - 0:04:36.116 - task: end, 10ms: Item #2
-[MetadataExtract #3 (398) ] INFO - 0:04:36.116 - task: start: Item #14
-[MetadataExtract #7 (402) ] INFO - 0:04:36.116 - task: end, 7ms: Item #6
-[MetadataExtract #7 (402) ] INFO - 0:04:36.116 - task: start: Item #15
-[MetadataExtract #8: Item #7 (403) ] INFO - 0:04:36.116 - FfmpegMediaMetadataRetriever: hash=42813812: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"I Am Kloot","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Let Them All In","39":"16","9":"231290"}
-[MetadataExtract #8 (403) ] INFO - 0:04:36.117 - task: end, 8ms: Item #7
-[MetadataExtract #8 (403) ] INFO - 0:04:36.117 - task: start: Item #16
-[MetadataExtract #6: Item #9 (401) ] INFO - 0:04:36.117 - FfmpegMediaMetadataRetriever: hash=277540764: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Foo Fighters","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Still","39":"16","9":"310800"}
-[MetadataExtract #6 (401) ] INFO - 0:04:36.117 - task: end, 8ms: Item #9
-[MetadataExtract #6 (401) ] INFO - 0:04:36.117 - task: start: Item #17
-[MetadataExtract #5: Item #10 (400) ] INFO - 0:04:36.118 - FfmpegMediaMetadataRetriever: hash=1612634984: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","100000":"false","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","39":"16","9":"5050"}
-[MetadataExtract #5 (400) ] INFO - 0:04:36.119 - task: end, 7ms: Item #10
-[MetadataExtract #5 (400) ] INFO - 0:04:36.119 - task: start: Item #18
-[MetadataExtract #2: Item #11 (397) ] INFO - 0:04:36.120 - FfmpegMediaMetadataRetriever: hash=1385248911: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Billy Bragg \u0026 Wilco","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"When The Roses Bloom Again","39":"16","9":"246000"}
-[MetadataExtract #2 (397) ] INFO - 0:04:36.121 - task: end, 8ms: Item #11
-[MetadataExtract #1: Item #12 (396) ] INFO - 0:04:36.121 - FfmpegMediaMetadataRetriever: hash=-352088410: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Suzanne Vega","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"12 Mortal Men","39":"16","9":"157000"}
-[MetadataExtract #2 (397) ] INFO - 0:04:36.121 - task: start: Item #19
-[MetadataExtract #1 (396) ] INFO - 0:04:36.121 - task: end, 8ms: Item #12
-[MetadataExtract #1 (396) ] INFO - 0:04:36.121 - task: start: Item #20
-[MetadataExtract #4: Item #13 (399) ] INFO - 0:04:36.122 - FfmpegMediaMetadataRetriever: hash=1891231045: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"The Sundays","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Wild Horses","39":"16","9":"277000"}
-[MetadataExtract #4 (399) ] INFO - 0:04:36.123 - task: end, 8ms: Item #13
-[MetadataExtract #3: Item #14 (398) ] INFO - 0:04:36.123 - FfmpegMediaMetadataRetriever: hash=-1053255835: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Tim Buckley","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Happy Time","39":"16","9":"190000"}
-[MetadataExtract #4 (399) ] INFO - 0:04:36.124 - task: start: Item #21
-[MetadataExtract #3 (398) ] INFO - 0:04:36.124 - task: end, 8ms: Item #14
-[MetadataExtract #7: Item #15 (402) ] INFO - 0:04:36.124 - FfmpegMediaMetadataRetriever: hash=1003137573: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Trespassers William","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Different Stars","39":"16","9":"278647"}
-[MetadataExtract #3 (398) ] INFO - 0:04:36.124 - task: start: Item #22
-[MetadataExtract #7 (402) ] INFO - 0:04:36.124 - task: end, 8ms: Item #15
-[MetadataExtract #7 (402) ] INFO - 0:04:36.125 - task: start: Item #23
-[MetadataExtract #3: Item #22 (398) ] INFO - 0:04:36.125 - FfmpegMediaMetadataRetriever: hash=-395410295: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Sierra Ferrell","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Don’t Let Your Deal Go Down","39":"16","9":"211710"}
-[MetadataExtract #3 (398) ] INFO - 0:04:36.125 - task: end, 1ms: Item #22
-[MetadataExtract #3 (398) ] INFO - 0:04:36.125 - task: start: Item #24
-[MetadataExtract #6: Item #17 (401) ] INFO - 0:04:36.125 - FfmpegMediaMetadataRetriever: hash=1845475776: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Bruce Cockburn","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Wondering Where the Lions Are (Live)","39":"16","9":"320000"}
-[MetadataExtract #6 (401) ] INFO - 0:04:36.126 - task: end, 8ms: Item #17
-[MetadataExtract #6 (401) ] INFO - 0:04:36.126 - task: start: Item #25
-[MetadataExtract #5: Item #18 (400) ] INFO - 0:04:36.126 - FfmpegMediaMetadataRetriever: hash=1710638978: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Sinéad O’Connor","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Back Where You Belong","39":"16","9":"249150"}
-[MetadataExtract #5 (400) ] INFO - 0:04:36.127 - task: end, 7ms: Item #18
-[MetadataExtract #5 (400) ] INFO - 0:04:36.128 - task: start: Item #26
-[MetadataExtract #2: Item #19 (397) ] INFO - 0:04:36.128 - FfmpegMediaMetadataRetriever: hash=-894762509: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","100000":"false","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","39":"16","9":"8516"}
-[MetadataExtract #2 (397) ] INFO - 0:04:36.129 - task: end, 8ms: Item #19
-[MetadataExtract #1: Item #20 (396) ] INFO - 0:04:36.129 - FfmpegMediaMetadataRetriever: hash=-993423853: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"R.E.M.","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Perfect Circle","39":"16","9":"202700"}
-[MetadataExtract #2 (397) ] INFO - 0:04:36.129 - task: start: Item #27
-[MetadataExtract #1 (396) ] INFO - 0:04:36.129 - task: end, 7ms: Item #20
-[MetadataExtract #1 (396) ] INFO - 0:04:36.129 - task: start: Item #28
-[MetadataExtract #4: Item #21 (399) ] INFO - 0:04:36.130 - FfmpegMediaMetadataRetriever: hash=1757379569: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"The Cactus Blossoms","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Mississippi","39":"16","9":"235634"}
-[MetadataExtract #4 (399) ] INFO - 0:04:36.131 - task: end, 7ms: Item #21
-[MetadataExtract #7: Item #23 (402) ] INFO - 0:04:36.131 - FfmpegMediaMetadataRetriever: hash=-2056388036: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Norah Jones","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Light as a Feather","39":"16","9":"231305"}
-[MetadataExtract #4 (399) ] INFO - 0:04:36.131 - task: start: Item #29
-[MetadataExtract #7 (402) ] INFO - 0:04:36.131 - task: end, 6ms: Item #23
-[MetadataExtract #7 (402) ] INFO - 0:04:36.131 - task: start: Item #30
-[MetadataExtract #8: Item #16 (403) ] INFO - 0:04:36.132 - FfmpegMediaMetadataRetriever: hash=-1783977340: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"David Gray","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Babylon","39":"16","9":"260750"}
-[MetadataExtract #8 (403) ] INFO - 0:04:36.132 - task: end, 15ms: Item #16
-[MetadataExtract #8 (403) ] INFO - 0:04:36.132 - task: start: Item #31
-[MetadataExtract #3: Item #24 (398) ] INFO - 0:04:36.132 - FfmpegMediaMetadataRetriever: hash=1899042957: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"London Grammar","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Shyer","39":"16","9":"182000"}
-[MetadataExtract #3 (398) ] INFO - 0:04:36.132 - task: end, 7ms: Item #24
-[MetadataExtract #3 (398) ] INFO - 0:04:36.132 - task: start: Item #32
-[MetadataExtract #6: Item #25 (401) ] INFO - 0:04:36.133 - FfmpegMediaMetadataRetriever: hash=-524282951: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Meyer, Douglas \u0026 Barenberg","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"The Hymn Of Ordinary Motion","39":"16","9":"114000"}
-[MetadataExtract #6 (401) ] INFO - 0:04:36.133 - task: end, 7ms: Item #25
-[MetadataExtract #6 (401) ] INFO - 0:04:36.133 - task: start: Item #33
-[MetadataExtract #5: Item #26 (400) ] INFO - 0:04:36.134 - FfmpegMediaMetadataRetriever: hash=687172484: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Tom Waits","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"The Heart of Saturday Night","39":"16","9":"229000"}
-[MetadataExtract #5 (400) ] INFO - 0:04:36.135 - task: end, 7ms: Item #26
-[MetadataExtract #5 (400) ] INFO - 0:04:36.135 - task: start: Item #34
-[MetadataExtract #2: Item #27 (397) ] INFO - 0:04:36.136 - FfmpegMediaMetadataRetriever: hash=131303568: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Neko Case","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Buckets of Rain","39":"16","9":"199000"}
-[MetadataExtract #2 (397) ] INFO - 0:04:36.137 - task: end, 9ms: Item #27
-[MetadataExtract #1: Item #28 (396) ] INFO - 0:04:36.138 - FfmpegMediaMetadataRetriever: hash=485794117: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Tracy Chapman","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"New Beginning","39":"16","9":"325000"}
-[MetadataExtract #2 (397) ] INFO - 0:04:36.138 - task: start: Item #35
-[MetadataExtract #1 (396) ] INFO - 0:04:36.138 - task: end, 8ms: Item #28
-[MetadataExtract #1 (396) ] INFO - 0:04:36.138 - task: start: Item #36
-[MetadataExtract #2: Item #35 (397) ] INFO - 0:04:36.140 - FfmpegMediaMetadataRetriever: hash=1109877331: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Hamilton Leithauser","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"The Silent Orchestra","39":"16","9":"264060"}
-[MetadataExtract #2 (397) ] INFO - 0:04:36.141 - task: end, 3ms: Item #35
-[MetadataExtract #7: Item #30 (402) ] INFO - 0:04:36.141 - FfmpegMediaMetadataRetriever: hash=-1561902046: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Willie Nelson","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Blue Eyes Crying in the Rain","39":"16","9":"136200"}
-[MetadataExtract #2 (397) ] INFO - 0:04:36.141 - task: start: Item #37
-[MetadataExtract #7 (402) ] INFO - 0:04:36.142 - task: end, 10ms: Item #30
-[MetadataExtract #7 (402) ] INFO - 0:04:36.142 - task: start: Item #38
-[MetadataExtract #8: Item #31 (403) ] INFO - 0:04:36.142 - FfmpegMediaMetadataRetriever: hash=1402956451: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Jon Redfern","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"I Love the Sun","39":"16","9":"300000"}
-[MetadataExtract #8 (403) ] INFO - 0:04:36.142 - task: end, 11ms: Item #31
-[MetadataExtract #8 (403) ] INFO - 0:04:36.143 - task: start: Item #39
-[MetadataExtract #3: Item #32 (398) ] INFO - 0:04:36.143 - FfmpegMediaMetadataRetriever: hash=1984356975: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Cyndi Lauper","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Time After Time","39":"16","9":"232250"}
-[MetadataExtract #3 (398) ] INFO - 0:04:36.143 - task: end, 10ms: Item #32
-[MetadataExtract #3 (398) ] INFO - 0:04:36.143 - task: start: Item #40
-[MetadataExtract #6: Item #33 (401) ] INFO - 0:04:36.143 - FfmpegMediaMetadataRetriever: hash=1977966954: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Fleetwood Mac","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Walk a Thin Line","39":"16","9":"222000"}
-[MetadataExtract #6 (401) ] INFO - 0:04:36.144 - task: end, 11ms: Item #33
-[MetadataExtract #6 (401) ] INFO - 0:04:36.144 - task: start: Item #41
-[MetadataExtract #5: Item #34 (400) ] INFO - 0:04:36.145 - FfmpegMediaMetadataRetriever: hash=1475446356: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Elephant Revival","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Barefoot Friend","39":"16","9":"191000"}
-[MetadataExtract #5 (400) ] INFO - 0:04:36.145 - task: end, 11ms: Item #34
-[MetadataExtract #5 (400) ] INFO - 0:04:36.146 - task: start: Item #42
-[MetadataExtract #4: Item #29 (399) ] INFO - 0:04:36.146 - FfmpegMediaMetadataRetriever: hash=-775299294: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Blind Faith","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Can\u0027t Find My Way Home","39":"16","9":"188500"}
-[MetadataExtract #4 (399) ] INFO - 0:04:36.147 - task: end, 16ms: Item #29
-[MetadataExtract #1: Item #36 (396) ] INFO - 0:04:36.147 - FfmpegMediaMetadataRetriever: hash=-2093135018: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"The Shins","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Turn on Me","39":"16","9":"209500"}
-[MetadataExtract #4 (399) ] INFO - 0:04:36.147 - task: start: Item #43
-[MetadataExtract #1 (396) ] INFO - 0:04:36.148 - task: end, 9ms: Item #36
-[MetadataExtract #1 (396) ] INFO - 0:04:36.148 - task: start: Item #44
-[MetadataExtract #2: Item #37 (397) ] INFO - 0:04:36.148 - FfmpegMediaMetadataRetriever: hash=496599921: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Moby","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Wait for Me","39":"16","9":"204000"}
-[MetadataExtract #2 (397) ] INFO - 0:04:36.149 - task: end, 7ms: Item #37
-[MetadataExtract #7: Item #38 (402) ] INFO - 0:04:36.149 - FfmpegMediaMetadataRetriever: hash=1709432058: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Cocosuma","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Servant","39":"16","9":"289070"}
-[MetadataExtract #2 (397) ] INFO - 0:04:36.149 - task: start: Item #45
-[MetadataExtract #7 (402) ] INFO - 0:04:36.150 - task: end, 8ms: Item #38
-[MetadataExtract #7 (402) ] INFO - 0:04:36.150 - task: start: Item #46
-[MetadataExtract #8: Item #39 (403) ] INFO - 0:04:36.150 - FfmpegMediaMetadataRetriever: hash=-475084519: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Jimi Hendrix","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Castles Made Of Sand","39":"16","9":"164612"}
-[MetadataExtract #8 (403) ] INFO - 0:04:36.150 - task: end, 7ms: Item #39
-[MetadataExtract #8 (403) ] INFO - 0:04:36.150 - task: start: Item #47
-[MetadataExtract #3: Item #40 (398) ] INFO - 0:04:36.150 - FfmpegMediaMetadataRetriever: hash=-238367317: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Oi Va Voi","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"I Know What You Are","39":"16","9":"182000"}
-[MetadataExtract #3 (398) ] INFO - 0:04:36.151 - task: end, 7ms: Item #40
-[MetadataExtract #3 (398) ] INFO - 0:04:36.151 - task: start: Item #48
-[MetadataExtract #6: Item #41 (401) ] INFO - 0:04:36.151 - FfmpegMediaMetadataRetriever: hash=-1032742246: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Wilco","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Sky Blue Sky","39":"16","9":"193957"}
-[MetadataExtract #6 (401) ] INFO - 0:04:36.152 - task: end, 8ms: Item #41
-[MetadataExtract #5: Item #42 (400) ] INFO - 0:04:36.152 - FfmpegMediaMetadataRetriever: hash=2140521498: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Manchester Orchestra","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Capital Karma","39":"16","9":"215108"}
-[MetadataExtract #5 (400) ] INFO - 0:04:36.152 - task: end, 6ms: Item #42
-[MetadataExtract #4: Item #43 (399) ] INFO - 0:04:36.153 - FfmpegMediaMetadataRetriever: hash=-1752918010: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Paul Simon","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Loves Me Like A Rock","39":"16","9":"201000"}
-[MetadataExtract #4 (399) ] INFO - 0:04:36.153 - task: end, 5ms: Item #43
-[MetadataExtract #1: Item #44 (396) ] INFO - 0:04:36.153 - FfmpegMediaMetadataRetriever: hash=152071891: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Tamino","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Babylon","39":"16","9":"336306"}
-[MetadataExtract #1 (396) ] INFO - 0:04:36.154 - task: end, 6ms: Item #44
-[MetadataExtract #2: Item #45 (397) ] INFO - 0:04:36.154 - FfmpegMediaMetadataRetriever: hash=-731586392: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Sonny Chillingworth","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Moe \u0027Uhane (Dream Slack Key)","39":"16","9":"164000"}
-[MetadataExtract #2 (397) ] INFO - 0:04:36.155 - task: end, 5ms: Item #45
-[MetadataExtract #7: Item #46 (402) ] INFO - 0:04:36.155 - FfmpegMediaMetadataRetriever: hash=-174877526: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Jimmy Cliff","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"The Harder They Come","39":"16","9":"180968"}
-[MetadataExtract #7 (402) ] INFO - 0:04:36.155 - task: end, 5ms: Item #46
-[MetadataExtract #8: Item #47 (403) ] INFO - 0:04:36.156 - FfmpegMediaMetadataRetriever: hash=1850019505: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Harry Manx","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Bring That Thing (live)","39":"16","9":"332000"}
-[MetadataExtract #8 (403) ] INFO - 0:04:36.156 - task: end, 5ms: Item #47
-[MetadataExtract #3: Item #48 (398) ] INFO - 0:04:36.158 - FfmpegMediaMetadataRetriever: hash=1096471425: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Jenny Lewis","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"The Charging Sky (w/ The Watson Twins)","39":"16","9":"173476"}
-[MetadataExtract #3 (398) ] INFO - 0:04:36.159 - task: end, 8ms: Item #48
-[Main #12: extractItemsMetadata (339) ] INFO - 0:04:36.159 - task: executor 'MetadataExtract #%d': close took 50 ms
-[Main #12 (339) ] INFO - 0:04:36.159 - task: end, 58ms: extractItemsMetadata
-[main (2) ] INFO - 0:04:37.370 - onPause()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:04:37.370 - removed listener: 2 listeners
-[main (2) ] INFO - 0:04:37.372 - removeListener (context: com.bubblesoft.android.bubbleupnp.MainTabActivity@ea019b3)
-[main (2) ] INFO - 0:04:37.373 - onResume()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:04:37.373 - added listener: 3 listeners
-[main (2) ] INFO - 0:04:37.373 - pizzicato-Music: TimeTask already launched!
-[main (2) ] INFO - 0:04:37.373 - source changed: Playlist
-[main (2) ] INFO - 0:04:37.373 - selected item changed (now playing): Dancing Lessons
-[main (2) ] WARNING - 0:04:37.374 - getBubbleUPnPServerFFmpegDecodeREST: not supported for OpenHome renderers
-[main (2) ] INFO - 0:04:37.375 - setSeekBarDetailsText: FLAC • 44.1 kHz • 16 bit
-[main (2) ] INFO - 0:04:37.375 - setSeekBarDetailsText: FLAC • 44.1 kHz • 16 bit
-[main (2) ] INFO - 0:04:37.376 - onStandbyChange: standby=false, ignore=true
-[main (2) ] INFO - 0:04:37.377 - pizzicato-Music: MainFragmentBase.onVolumeChange: 100
-[main (2) ] INFO - 0:04:37.377 - setSeekBarDetailsText: FLAC • 44.1 kHz • 16 bit
-[main (2) ] INFO - 0:04:37.380 - onCreateOptionsMenu()@914ef69/ea019b3:5238
-[main (2) ] WARNING - 0:04:37.380 - getBubbleUPnPServerFFmpegDecodeREST: not supported for OpenHome renderers
-[main (2) ] INFO - 0:04:37.381 - onPrepareOptionsMenu()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:04:46.605 - onPause()@ea019b3:5238
-[main (2) ] INFO - 0:04:46.607 - onPause()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:04:46.608 - removed listener: 2 listeners
-[main (2) ] INFO - 0:04:46.609 - removed listener: 1 listeners
-[main (2) ] INFO - 0:04:47.173 - onStop()@ea019b3:5238
-[main (2) ] INFO - 0:04:47.173 - onStop()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:04:47.174 - onStop()@b163faf/ea019b3:5238
-[main (2) ] INFO - 0:04:47.174 - onStop()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:04:47.175 - onSaveInstanceState(outState)@ea019b3:5238
-[main (2) ] INFO - 0:04:47.180 - onSaveInstanceState()@b163faf/ea019b3:5238
-[main (2) ] INFO - 0:04:47.183 - onSaveInstanceState()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:04:47.184 - onSaveInstanceState()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:05:34.572 - ACTION_SCREEN_OFF
-[main (2) ] SEVERE - 0:05:34.576 - watchdog: schedule inactivity action in 15 mins
-[main (2) ] SEVERE - 0:05:34.576 - watchdog: enabled
-[cling-53 (Time) (345) ] WARNING - 0:06:08.801 - .h : Client connection was aborted: v5.y: 192.168.0.200:49152 failed to respond: http://192.168.0.200:49152/uuid-2899a4df-39ae-160a-6563-dca6329ead0d/ctl-urn-av-openhome-org-service-Time-1
-[cling-53 (Time) (345) ] WARNING - 0:06:08.805 - .d : Time: Error: Current state of service prevents invoking that action. Connection error or no response received.
-[TimeTask: pizzicato-Music (392) ] WARNING - 0:06:08.807 - TimeTask: pizzicato-Music: is.c: Current state of service prevents invoking that action. Connection error or no response received.
-[main (2) ] INFO - 0:06:22.178 - ACTION_SCREEN_ON
-[main (2) ] SEVERE - 0:06:22.178 - watchdog: cancelled inactivity action
-[main (2) ] SEVERE - 0:06:22.179 - watchdog: disabled
-[main (2) ] INFO - 0:06:23.14 - onRouteRemoved 3d57e3df7b480b761c03a9d89520d61b => MediaRouter.RouteInfo{ uniqueId=com.google.android.gms/.cast.media.CastMediaRoute2ProviderService_Persistent:3d57e3df7b480b761c03a9d89520d61b, name=Glouglou Box, description=JBL Authentics 300, iconUri=null, enabled=true, isSystemRoute=false, connectionState=0, canDisconnect=false, playbackType=1, playbackStream=-1, deviceType=2, volumeHandling=0, volume=0, volumeMax=50, presentationDisplayId=-1, extras=Bundle[{com.google.android.gms.cast.EXTRA_CAST_DEVICE="G10x" (3d57e3df7b480b761c03a9d89520d61b) }], settingsIntent=null, providerPackageName=com.google.android.gms }
-[main (2) ] INFO - 0:06:23.15 - not removing cast device due to recent screen on or off
-[main (2) ] INFO - 0:06:25.170 - onRouteAdded 3d57e3df7b480b761c03a9d89520d61b => MediaRouter.RouteInfo{ uniqueId=com.google.android.gms/.cast.media.CastMediaRoute2ProviderService_Persistent:3d57e3df7b480b761c03a9d89520d61b, name=Glouglou Box, description=JBL Authentics 300, iconUri=null, enabled=true, isSystemRoute=false, connectionState=0, canDisconnect=false, playbackType=1, playbackStream=-1, deviceType=2, volumeHandling=0, volume=0, volumeMax=50, presentationDisplayId=-1, extras=Bundle[{com.google.android.gms.cast.EXTRA_CAST_DEVICE="G10x" (3d57e3df7b480b761c03a9d89520d61b) }], settingsIntent=null, providerPackageName=com.google.android.gms }
-[main (2) ] INFO - 0:06:25.171 - not adding already added cast device
-[main (2) ] INFO - 0:07:03.568 - onRestart()@ea019b3:5238
-[main (2) ] INFO - 0:07:03.574 - onStart()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:07:03.577 - onStart()@b163faf/ea019b3:5238
-[main (2) ] INFO - 0:07:03.578 - onStart()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:07:03.580 - onStart()@ea019b3:5238
-[main (2) ] INFO - 0:07:03.587 - onResume()@ea019b3:5238
-[main (2) ] INFO - 0:07:03.587 - added listener: 2 listeners
-[main (2) ] INFO - 0:07:03.595 - sorted 2 items took: 5 ms
-[main (2) ] INFO - 0:07:03.598 - onResume()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:07:03.598 - added listener: 3 listeners
-[main (2) ] INFO - 0:07:03.598 - pizzicato-Music: TimeTask already launched!
-[main (2) ] INFO - 0:07:03.599 - source changed: Playlist
-[main (2) ] INFO - 0:07:03.599 - selected item changed (now playing): Dancing Lessons
-[main (2) ] WARNING - 0:07:03.599 - getBubbleUPnPServerFFmpegDecodeREST: not supported for OpenHome renderers
-[main (2) ] INFO - 0:07:03.600 - setSeekBarDetailsText: FLAC • 44.1 kHz • 16 bit
-[main (2) ] INFO - 0:07:03.600 - setSeekBarDetailsText: FLAC • 44.1 kHz • 16 bit
-[main (2) ] INFO - 0:07:03.601 - onStandbyChange: standby=false, ignore=true
-[main (2) ] INFO - 0:07:03.601 - pizzicato-Music: MainFragmentBase.onVolumeChange: 100
-[main (2) ] INFO - 0:07:03.602 - setSeekBarDetailsText: FLAC • 44.1 kHz • 16 bit
-[main (2) ] INFO - 0:07:03.603 - onCreateOptionsMenu()@914ef69/ea019b3:5238
-[main (2) ] WARNING - 0:07:03.604 - getBubbleUPnPServerFFmpegDecodeREST: not supported for OpenHome renderers
-[main (2) ] INFO - 0:07:03.605 - onPrepareOptionsMenu()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:07:06.544 - setVolume: main thread
-[PlaybackAction: idle (323) ] INFO - 0:07:06.545 - setVolume: worker thread enter
-[PlaybackAction:setVolume (323) ] INFO - 0:07:06.546 - pizzicato-Music: setVolume: 95
-[PlaybackAction:setVolume (323) ] INFO - 0:07:06.565 - setVolume worker thread took: 19 ms
-[main (2) ] INFO - 0:07:06.583 - pizzicato-Music: AbstractRenderer.onVolumeChange: 95
-[main (2) ] INFO - 0:07:06.584 - VolumeProvider: onVolumeChanged: 95
-[main (2) ] INFO - 0:07:06.598 - pizzicato-Music: MainFragmentBase.onVolumeChange: 95
-[main (2) ] INFO - 0:07:06.598 - pizzicato-Music: MainFragmentBase.onVolumeChange: 95
-[main (2) ] INFO - 0:07:06.599 - setSeekBarDetailsText: FLAC • 44.1 kHz • 16 bit
-[main (2) ] INFO - 0:07:09.493 - seek: main thread
-[PlaybackAction: idle (323) ] INFO - 0:07:09.494 - seek: worker thread enter
-[cling-62 (SeekSecondAbsolute) (354) ] WARNING - 0:07:09.514 - .d : SeekSecondAbsolute: Error: Action Failed (HTTP response was: 500 Internal Server Error)
-[PlaybackAction:seek (323) ] WARNING - 0:07:09.516 - is.c: Action Failed
- at zs.h.s(SourceFile:152)
- at zs.h.c(SourceFile:21)
- at zs.j.c(SourceFile:4)
- at vs.g.d(SourceFile:20)
- at vs.g.b(SourceFile:124)
- at ts.h.a(SourceFile:1)
- at ts.g.run(SourceFile:1)
- at gs.a.run(SourceFile:93)
- at t7.d.run(SourceFile:58)
- at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1156)
- at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:651)
- at java.lang.Thread.run(Thread.java:1119)
-
-[PlaybackAction:seek (323) ] INFO - 0:07:09.517 - seek worker thread took: 22 ms
-[main (2) ] INFO - 0:07:09.523 - toast: Action Failed (code: 501)
-[main (2) ] INFO - 0:07:13.571 - onPause()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:07:13.572 - removed listener: 2 listeners
-[main (2) ] INFO - 0:07:13.573 - onResume()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:07:13.574 - added listener: 3 listeners
-[main (2) ] INFO - 0:07:13.574 - refreshLocalMediaServerLibraryList: removed: fenice
-[main (2) ] INFO - 0:07:13.575 - refreshLocalMediaServerLibraryList: removed: Freebox Server
-[main (2) ] INFO - 0:07:13.575 - refreshLocalMediaServerLibraryList: removed: pizzicato-Music-mediaserver
-[main (2) ] INFO - 0:07:13.575 - refreshLocalMediaServerLibraryList: removed: PMOMusic Media Server
-[main (2) ] INFO - 0:07:13.576 - refreshLocalMediaServerLibraryList: added: fenice
-[main (2) ] INFO - 0:07:13.576 - refreshLocalMediaServerLibraryList: added: Freebox Server
-[main (2) ] INFO - 0:07:13.576 - refreshLocalMediaServerLibraryList: added: pizzicato-Music-mediaserver
-[main (2) ] INFO - 0:07:13.576 - refreshLocalMediaServerLibraryList: added: PMOMusic Media Server
-[main (2) ] INFO - 0:07:13.577 - pizzicato-Music: TimeTask already launched!
-[main (2) ] INFO - 0:07:13.577 - addListener (context: com.bubblesoft.android.bubbleupnp.MainTabActivity@ea019b3)
-[main (2) ] INFO - 0:07:13.579 - onStandbyChange: standby=false, ignore=true
-[main (2) ] INFO - 0:07:13.579 - pizzicato-Music: MainFragmentBase.onVolumeChange: 95
-[main (2) ] INFO - 0:07:13.596 - onCreateOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:07:13.597 - onPrepareOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:07:19.840 - onSaveInstanceState()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:07:19.840 - saveMediaServerState: PMOMusic Media Server
-[main (2) ] INFO - 0:07:19.840 - positionStack: [3, 3, 3, 0, 0]
-[main (2) ] INFO - 0:07:19.841 - itemList: Bundle[{firstVisiblePosition=0}]
-[main (2) ] INFO - 0:07:19.841 - containerPath: [radio-paradise:channel:mellow]
-[main (2) ] INFO - 0:07:19.844 - onCreateOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:07:19.845 - onPrepareOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:07:21.107 - onSaveInstanceState()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:07:21.107 - saveMediaServerState: PMOMusic Media Server
-[main (2) ] INFO - 0:07:21.107 - positionStack: [3, 3, 3, 0]
-[main (2) ] INFO - 0:07:21.108 - itemList: Bundle[{firstVisiblePosition=0}]
-[main (2) ] INFO - 0:07:21.108 - containerPath: []
-[main (2) ] INFO - 0:07:21.113 - onCreateOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:07:21.114 - onPrepareOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:07:26.853 - path = [radio-paradise:channel:eclectic]
-[main (2) ] INFO - 0:07:26.855 - onSaveInstanceState()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:07:26.855 - saveMediaServerState: PMOMusic Media Server
-[main (2) ] INFO - 0:07:26.856 - positionStack: [3, 3, 3, 0]
-[main (2) ] INFO - 0:07:26.856 - itemList: Bundle[{firstVisiblePosition=0}]
-[main (2) ] INFO - 0:07:26.856 - containerPath: [radio-paradise:channel:eclectic]
-[AsyncTask #1 (187) ] INFO - 0:07:26.858 - BrowseTask.doInBackground(): enter
-[AsyncTask #1 (187) ] INFO - 0:07:26.859 - BrowseTask.doInBackground(): loading container 'Eclectic Mix'
-[main (2) ] INFO - 0:07:26.862 - onCreateOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:07:26.864 - onPrepareOptionsMenu()@df8ac1c/ea019b3:5238
-[Main #14 (405) ] INFO - 0:07:26.940 - task: start: extractItemsMetadata
-[AsyncTask #1 (187) ] INFO - 0:07:26.940 - finished browsing: got 2 objects
-[AsyncTask #1 (187) ] INFO - 0:07:26.941 - BrowseTask.doInBackground(): no item
-[Main #14: extractItemsMetadata (405) ] INFO - 0:07:26.942 - task: executor 'MetadataExtract #%d': waiting for close to complete...
-[MetadataExtract #1 (406) ] INFO - 0:07:26.942 - task: start: Item #0
-[main (2) ] INFO - 0:07:26.945 - onCreateOptionsMenu()@df8ac1c/ea019b3:5238
-[MetadataExtract #1: Item #0 (406) ] INFO - 0:07:26.946 - FfmpegMediaMetadataRetriever: hash=396690447: expensive op: retrieveMetadata
-[MetadataExtract #1: Item #0 (406) ] INFO - 0:07:26.946 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/667f1ebbc85d6440a7ff4afb9a527b89_null_
-[MetadataExtract #1: Item #0 (406) ] INFO - 0:07:26.946 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/ffda328ef818229238661ec37ff37956_null_
-[MetadataExtract #1: Item #0 (406) ] INFO - 0:07:26.946 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/2ad68dd550b16313027271cb63d9153b_null_
-[main (2) ] INFO - 0:07:26.947 - onPrepareOptionsMenu()@df8ac1c/ea019b3:5238
-[MetadataExtract #1: Item #0 (406) ] INFO - 0:07:26.947 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/f1f31e24b2c730171b8642af0d0bcc04_null_
-[MetadataExtract #1: Item #0 (406) ] INFO - 0:07:26.947 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/67c92e72e18e489dee64f769588cb1ce_null_
-[MetadataExtract #1: Item #0 (406) ] INFO - 0:07:26.947 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/50314386354bec0fa6062156ab2e50fa_null_
-[MetadataExtract #1: Item #0 (406) ] INFO - 0:07:26.947 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/8122ae21da8da1e762a22dabd9817802_null_
-[MetadataExtract #1: Item #0 (406) ] INFO - 0:07:26.948 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/4c33e09beef28347ed88555d69adfa0c_null_
-[MetadataExtract #1: Item #0 (406) ] INFO - 0:07:26.950 - removed expired cached probe info for http://192.168.0.138:8080/audio/flac/77d393f256c7d2b397d9af5c8504596c_null_
-[MetadataExtract #1: Item #0 (406) ] INFO - 0:07:26.971 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 0 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/radioparadise/stream/eclectic/flac
-[MetadataExtract #1: Item #0 (406) ] INFO - 0:07:29.214 - ffprobe finished
-[MetadataExtract #1: Item #0 (406) ] INFO - 0:07:29.215 - ffprobe took: 2247 ms
-[MetadataExtract #1: Item #0 (406) ] INFO - 0:07:29.215 - added cached probe info for http://192.168.0.138:8080/radioparadise/stream/eclectic/flac_null_, expires in 1800 seconds
-[MetadataExtract #1: Item #0 (406) ] INFO - 0:07:29.215 - FfmpegMediaMetadataRetriever: hash=396690447: retrieveMetadata took: 2269 ms
-[MetadataExtract #1: Item #0 (406) ] INFO - 0:07:29.216 - FfmpegMediaMetadataRetriever: hash=396690447: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Miss Perfumado","100000":"false","2":"Cesária Évora","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Sodade","39":"16","8":"1992"}
-[MetadataExtract #1 (406) ] INFO - 0:07:29.217 - task: end, 2275ms: Item #0
-[Main #14: extractItemsMetadata (405) ] INFO - 0:07:29.218 - task: executor 'MetadataExtract #%d': close took 2276 ms
-[Main #14 (405) ] INFO - 0:07:29.218 - task: end, 2278ms: extractItemsMetadata
-[main (2) ] INFO - 0:07:32.513 - onSaveInstanceState()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:07:32.514 - saveMediaServerState: PMOMusic Media Server
-[main (2) ] INFO - 0:07:32.514 - positionStack: [3, 3, 3, 0]
-[main (2) ] INFO - 0:07:32.514 - itemList: Bundle[{firstVisiblePosition=0}]
-[main (2) ] INFO - 0:07:32.514 - containerPath: []
-[main (2) ] INFO - 0:07:32.526 - onCreateOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:07:32.527 - onPrepareOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:07:34.955 - path = [radio-paradise:channel:main]
-[main (2) ] INFO - 0:07:34.957 - onSaveInstanceState()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:07:34.957 - saveMediaServerState: PMOMusic Media Server
-[main (2) ] INFO - 0:07:34.958 - positionStack: [3, 3, 3, 0]
-[main (2) ] INFO - 0:07:34.958 - itemList: Bundle[{firstVisiblePosition=0}]
-[main (2) ] INFO - 0:07:34.958 - containerPath: [radio-paradise:channel:main]
-[AsyncTask #1 (187) ] INFO - 0:07:34.961 - BrowseTask.doInBackground(): enter
-[AsyncTask #1 (187) ] INFO - 0:07:34.962 - BrowseTask.doInBackground(): loading container 'Main Mix'
-[main (2) ] INFO - 0:07:34.965 - onCreateOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:07:34.967 - onPrepareOptionsMenu()@df8ac1c/ea019b3:5238
-[Main #14 (405) ] INFO - 0:07:34.983 - task: start: extractItemsMetadata
-[AsyncTask #1 (187) ] INFO - 0:07:34.983 - finished browsing: got 2 objects
-[Main #14: extractItemsMetadata (405) ] INFO - 0:07:34.984 - task: executor 'MetadataExtract #%d': waiting for close to complete...
-[AsyncTask #1 (187) ] INFO - 0:07:34.984 - BrowseTask.doInBackground(): no item
-[MetadataExtract #1 (412) ] INFO - 0:07:34.985 - task: start: Item #0
-[MetadataExtract #1: Item #0 (412) ] INFO - 0:07:34.989 - FfmpegMediaMetadataRetriever: hash=-961650152: expensive op: retrieveMetadata
-[main (2) ] INFO - 0:07:34.998 - onCreateOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:07:35.0 - onPrepareOptionsMenu()@df8ac1c/ea019b3:5238
-[MetadataExtract #1: Item #0 (412) ] INFO - 0:07:35.12 - ffprobe process started, timeout: 20000 ms: --ffprobe -show_format -show_streams -seekable 0 -headers User-Agent: Lavf/ffprobe
- -i http://192.168.0.138:8080/radioparadise/stream/main/flac
-[MetadataExtract #1: Item #0 (412) ] INFO - 0:07:37.280 - ffprobe finished
-[MetadataExtract #1: Item #0 (412) ] INFO - 0:07:37.281 - ffprobe took: 2273 ms
-[MetadataExtract #1: Item #0 (412) ] INFO - 0:07:37.281 - added cached probe info for http://192.168.0.138:8080/radioparadise/stream/main/flac_null_, expires in 1800 seconds
-[MetadataExtract #1: Item #0 (412) ] INFO - 0:07:37.282 - FfmpegMediaMetadataRetriever: hash=-961650152: retrieveMetadata took: 2293 ms
-[MetadataExtract #1: Item #0 (412) ] INFO - 0:07:37.284 - FfmpegMediaMetadataRetriever: hash=-961650152: saveFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Dancing in the Dragon\u0027s Jaws","100000":"false","2":"Bruce Cockburn","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Creation Dream","39":"16","8":"1979"}
-[MetadataExtract #1 (412) ] INFO - 0:07:37.285 - task: end, 2300ms: Item #0
-[Main #14: extractItemsMetadata (405) ] INFO - 0:07:37.286 - task: executor 'MetadataExtract #%d': close took 2302 ms
-[Main #14 (405) ] INFO - 0:07:37.286 - task: end, 2302ms: extractItemsMetadata
-[main (2) ] INFO - 0:07:41.519 - path = [radio-paradise:channel:main, radio-paradise:channel:main:history]
-[main (2) ] INFO - 0:07:41.520 - onSaveInstanceState()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:07:41.521 - saveMediaServerState: PMOMusic Media Server
-[main (2) ] INFO - 0:07:41.521 - positionStack: [3, 3, 3, 0, 0]
-[main (2) ] INFO - 0:07:41.521 - itemList: Bundle[{firstVisiblePosition=0}]
-[main (2) ] INFO - 0:07:41.522 - containerPath: [radio-paradise:channel:main, radio-paradise:channel:main:history]
-[AsyncTask #1 (187) ] INFO - 0:07:41.524 - BrowseTask.doInBackground(): enter
-[AsyncTask #1 (187) ] INFO - 0:07:41.525 - BrowseTask.doInBackground(): loading container 'Main Mix - History'
-[main (2) ] INFO - 0:07:41.529 - onCreateOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:07:41.530 - onPrepareOptionsMenu()@df8ac1c/ea019b3:5238
-[AsyncTask #1 (187) ] WARNING - 0:07:41.546 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/172d6ba8e1d0169e1d84320a5e50767e/256
-[AsyncTask #1 (187) ] WARNING - 0:07:41.547 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/bfe30f44862ff716159155b224da4d35/256
-[AsyncTask #1 (187) ] WARNING - 0:07:41.548 - handleTag: invalid URL: java.net.MalformedURLException: no protocol: /covers/jpeg/4e3d1afd0b1079d2e4908e530e4fa07a/256
-[Main #14 (405) ] INFO - 0:07:41.551 - task: start: extractItemsMetadata
-[AsyncTask #1 (187) ] INFO - 0:07:41.551 - finished browsing: got 3 objects
-[AsyncTask #1 (187) ] INFO - 0:07:41.552 - BrowseTask.doInBackground(): no item
-[MetadataExtract #1 (414) ] INFO - 0:07:41.553 - task: start: Item #0
-[Main #14: extractItemsMetadata (405) ] INFO - 0:07:41.553 - task: executor 'MetadataExtract #%d': waiting for close to complete...
-[MetadataExtract #2 (415) ] INFO - 0:07:41.553 - task: start: Item #1
-[MetadataExtract #3 (416) ] INFO - 0:07:41.554 - task: start: Item #2
-[MetadataExtract #1: Item #0 (414) ] INFO - 0:07:41.556 - FfmpegMediaMetadataRetriever: hash=308158566: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","100000":"false","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","39":"16","9":"6951"}
-[MetadataExtract #1 (414) ] INFO - 0:07:41.557 - task: end, 4ms: Item #0
-[MetadataExtract #2: Item #1 (415) ] INFO - 0:07:41.558 - FfmpegMediaMetadataRetriever: hash=1562327667: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"John Martyn","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"Bless The Weather","39":"16","9":"259601"}
-[MetadataExtract #2 (415) ] INFO - 0:07:41.559 - task: end, 6ms: Item #1
-[MetadataExtract #3: Item #2 (416) ] INFO - 0:07:41.560 - FfmpegMediaMetadataRetriever: hash=-139052036: loadFileCacheMetadata: {"-1":"FfmpegMediaMetadataRetriever","10000":"2","-2":"2","1":"Radio Paradise","100000":"false","2":"Florence + The Machine","10100":"FLAC (Free Lossless Audio Codec)","38":"44100","7":"What the Water Gave Me (unplugged)","39":"16","9":"285000"}
-[MetadataExtract #3 (416) ] INFO - 0:07:41.560 - task: end, 6ms: Item #2
-[Main #14: extractItemsMetadata (405) ] INFO - 0:07:41.561 - task: executor 'MetadataExtract #%d': close took 8 ms
-[Main #14 (405) ] INFO - 0:07:41.561 - task: end, 10ms: extractItemsMetadata
-[main (2) ] INFO - 0:07:41.562 - onCreateOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:07:41.564 - onPrepareOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:08:11.996 - onPause()@ea019b3:5238
-[main (2) ] INFO - 0:08:11.998 - onPause()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:08:11.998 - removed listener: 2 listeners
-[main (2) ] INFO - 0:08:12.16 - removeListener (context: com.bubblesoft.android.bubbleupnp.MainTabActivity@ea019b3)
-[main (2) ] INFO - 0:08:12.17 - removed listener: 1 listeners
-[main (2) ] INFO - 0:08:12.105 - onStop()@ea019b3:5238
-[main (2) ] INFO - 0:08:12.116 - onStop()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:08:12.120 - onStop()@b163faf/ea019b3:5238
-[main (2) ] INFO - 0:08:12.121 - onStop()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:08:12.122 - onSaveInstanceState(outState)@ea019b3:5238
-[main (2) ] INFO - 0:08:12.124 - onSaveInstanceState()@b163faf/ea019b3:5238
-[main (2) ] INFO - 0:08:12.126 - onSaveInstanceState()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:08:12.127 - onSaveInstanceState()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:08:12.575 - ACTION_SCREEN_OFF
-[main (2) ] SEVERE - 0:08:12.578 - watchdog: schedule inactivity action in 15 mins
-[main (2) ] SEVERE - 0:08:12.580 - watchdog: enabled
-[main (2) ] INFO - 0:08:15.206 - onRestart()@ea019b3:5238
-[main (2) ] INFO - 0:08:15.208 - onStart()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:08:15.225 - onStart()@b163faf/ea019b3:5238
-[main (2) ] INFO - 0:08:15.231 - onStart()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:08:15.234 - onStart()@ea019b3:5238
-[main (2) ] INFO - 0:08:15.243 - onResume()@ea019b3:5238
-[main (2) ] INFO - 0:08:15.245 - added listener: 2 listeners
-[main (2) ] INFO - 0:08:15.247 - sorted 2 items took: 0 ms
-[main (2) ] INFO - 0:08:15.249 - onResume()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:08:15.250 - added listener: 3 listeners
-[main (2) ] INFO - 0:08:15.250 - refreshLocalMediaServerLibraryList: removed: fenice
-[main (2) ] INFO - 0:08:15.251 - refreshLocalMediaServerLibraryList: removed: Freebox Server
-[main (2) ] INFO - 0:08:15.251 - refreshLocalMediaServerLibraryList: removed: pizzicato-Music-mediaserver
-[main (2) ] INFO - 0:08:15.252 - refreshLocalMediaServerLibraryList: removed: PMOMusic Media Server
-[main (2) ] INFO - 0:08:15.252 - refreshLocalMediaServerLibraryList: added: fenice
-[main (2) ] INFO - 0:08:15.253 - refreshLocalMediaServerLibraryList: added: Freebox Server
-[main (2) ] INFO - 0:08:15.253 - refreshLocalMediaServerLibraryList: added: pizzicato-Music-mediaserver
-[main (2) ] INFO - 0:08:15.253 - refreshLocalMediaServerLibraryList: added: PMOMusic Media Server
-[main (2) ] INFO - 0:08:15.254 - pizzicato-Music: TimeTask already launched!
-[main (2) ] INFO - 0:08:15.255 - addListener (context: com.bubblesoft.android.bubbleupnp.MainTabActivity@ea019b3)
-[main (2) ] INFO - 0:08:15.257 - onStandbyChange: standby=false, ignore=true
-[main (2) ] INFO - 0:08:15.257 - pizzicato-Music: MainFragmentBase.onVolumeChange: 95
-[main (2) ] INFO - 0:08:15.266 - onCreateOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:08:15.270 - onPrepareOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:08:15.294 - Insets: Insets{left=0, top=88, right=0, bottom=0}
-[main (2) ] INFO - 0:08:15.332 - ACTION_SCREEN_ON
-[main (2) ] SEVERE - 0:08:15.332 - watchdog: cancelled inactivity action
-[main (2) ] SEVERE - 0:08:15.332 - watchdog: disabled
-[main (2) ] INFO - 0:08:15.433 - Insets: Insets{left=0, top=88, right=0, bottom=45}
-[main (2) ] INFO - 0:08:16.515 - onRouteRemoved 3d57e3df7b480b761c03a9d89520d61b => MediaRouter.RouteInfo{ uniqueId=com.google.android.gms/.cast.media.CastMediaRoute2ProviderService_Persistent:3d57e3df7b480b761c03a9d89520d61b, name=Glouglou Box, description=JBL Authentics 300, iconUri=null, enabled=true, isSystemRoute=false, connectionState=0, canDisconnect=false, playbackType=1, playbackStream=-1, deviceType=2, volumeHandling=0, volume=0, volumeMax=50, presentationDisplayId=-1, extras=Bundle[{com.google.android.gms.cast.EXTRA_CAST_DEVICE="G10x" (3d57e3df7b480b761c03a9d89520d61b) }], settingsIntent=null, providerPackageName=com.google.android.gms }
-[main (2) ] INFO - 0:08:16.517 - not removing cast device due to recent screen on or off
-[main (2) ] INFO - 0:08:16.802 - onRouteAdded 3d57e3df7b480b761c03a9d89520d61b => MediaRouter.RouteInfo{ uniqueId=com.google.android.gms/.cast.media.CastMediaRoute2ProviderService_Persistent:3d57e3df7b480b761c03a9d89520d61b, name=Glouglou Box, description=JBL Authentics 300, iconUri=null, enabled=true, isSystemRoute=false, connectionState=0, canDisconnect=false, playbackType=1, playbackStream=-1, deviceType=2, volumeHandling=0, volume=0, volumeMax=50, presentationDisplayId=-1, extras=Bundle[{com.google.android.gms.cast.EXTRA_CAST_DEVICE="G10x" (3d57e3df7b480b761c03a9d89520d61b) }], settingsIntent=null, providerPackageName=com.google.android.gms }
-[main (2) ] INFO - 0:08:16.803 - not adding already added cast device
-[main (2) ] INFO - 0:08:19.371 - onPause()@ea019b3:5238
-[main (2) ] INFO - 0:08:19.372 - onPause()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:08:19.372 - removed listener: 2 listeners
-[main (2) ] INFO - 0:08:19.374 - removeListener (context: com.bubblesoft.android.bubbleupnp.MainTabActivity@ea019b3)
-[main (2) ] INFO - 0:08:19.379 - removed listener: 1 listeners
-[main (2) ] INFO - 0:08:19.725 - onStop()@ea019b3:5238
-[main (2) ] INFO - 0:08:19.729 - onStop()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:08:19.731 - onStop()@b163faf/ea019b3:5238
-[main (2) ] INFO - 0:08:19.734 - onStop()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:08:19.735 - onSaveInstanceState(outState)@ea019b3:5238
-[main (2) ] INFO - 0:08:19.741 - onSaveInstanceState()@b163faf/ea019b3:5238
-[main (2) ] INFO - 0:08:19.755 - onSaveInstanceState()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:08:19.769 - onSaveInstanceState()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:08:43.95 - pizzicato-Music: notify fake TransportState=Stopped on auto track change
-[main (2) ] INFO - 0:08:43.96 - stopping task TimeTask: pizzicato-Music
-[main (2) ] INFO - 0:08:43.97 - ignoreTransportStateChangeForTrackAdvance: false, allowTrackAdvance: true
-[main (2) ] INFO - 0:08:43.98 - SETACTIVE: onTransportStateChanged: post STOP callback
-[main (2) ] INFO - 0:08:43.151 - .b : selected item (track id): Slow Sun
-[main (2) ] INFO - 0:08:43.152 - selected item changed (service): Slow Sun
-[main (2) ] INFO - 0:08:43.203 - pizzicato-Music: notify fake TransportState=Playing on auto track change
-[main (2) ] INFO - 0:08:43.204 - started task TimeTask: pizzicato-Music
-[main (2) ] INFO - 0:08:43.210 - ignoreTransportStateChangeForTrackAdvance: false, allowTrackAdvance: true
-[main (2) ] INFO - 0:08:43.211 - dynamic shortcuts: added 'pizzicato-Music'
-[main (2) ] INFO - 0:08:43.215 - renderer chooser target: saved 1 targets
-[Main #16 (419) ] INFO - 0:08:43.221 - task: start: publishRendererChooserTargets
-[Main #16 (419) ] INFO - 0:08:43.246 - task: end, 25ms: publishRendererChooserTargets
-[AsyncTask #5 (418) ] INFO - 0:08:43.247 - saved file /storage/emulated/0/Android/data/com.bubblesoft.android.bubbleupnp/files/playlists/recent.dpl ok: 100 items
-[main (2) ] INFO - 0:09:24.644 - ACTION_SCREEN_OFF
-[main (2) ] SEVERE - 0:09:24.647 - watchdog: schedule inactivity action in 15 mins
-[main (2) ] SEVERE - 0:09:24.648 - watchdog: enabled
-[main (2) ] INFO - 0:09:26.698 - ACTION_SCREEN_ON
-[main (2) ] SEVERE - 0:09:26.699 - watchdog: cancelled inactivity action
-[main (2) ] SEVERE - 0:09:26.699 - watchdog: disabled
-[main (2) ] INFO - 0:09:27.583 - onRouteRemoved 3d57e3df7b480b761c03a9d89520d61b => MediaRouter.RouteInfo{ uniqueId=com.google.android.gms/.cast.media.CastMediaRoute2ProviderService_Persistent:3d57e3df7b480b761c03a9d89520d61b, name=Glouglou Box, description=JBL Authentics 300, iconUri=null, enabled=true, isSystemRoute=false, connectionState=0, canDisconnect=false, playbackType=1, playbackStream=-1, deviceType=2, volumeHandling=0, volume=0, volumeMax=50, presentationDisplayId=-1, extras=Bundle[{com.google.android.gms.cast.EXTRA_CAST_DEVICE="G10x" (3d57e3df7b480b761c03a9d89520d61b) }], settingsIntent=null, providerPackageName=com.google.android.gms }
-[main (2) ] INFO - 0:09:27.585 - not removing cast device due to recent screen on or off
-[main (2) ] INFO - 0:09:29.814 - onRouteAdded 3d57e3df7b480b761c03a9d89520d61b => MediaRouter.RouteInfo{ uniqueId=com.google.android.gms/.cast.media.CastMediaRoute2ProviderService_Persistent:3d57e3df7b480b761c03a9d89520d61b, name=Glouglou Box, description=JBL Authentics 300, iconUri=null, enabled=true, isSystemRoute=false, connectionState=0, canDisconnect=false, playbackType=1, playbackStream=-1, deviceType=2, volumeHandling=0, volume=0, volumeMax=50, presentationDisplayId=-1, extras=Bundle[{com.google.android.gms.cast.EXTRA_CAST_DEVICE="G10x" (3d57e3df7b480b761c03a9d89520d61b) }], settingsIntent=null, providerPackageName=com.google.android.gms }
-[main (2) ] INFO - 0:09:29.815 - not adding already added cast device
-[main (2) ] INFO - 0:09:54.448 - onRestart()@ea019b3:5238
-[main (2) ] INFO - 0:09:54.450 - onStart()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:09:54.452 - onStart()@b163faf/ea019b3:5238
-[main (2) ] INFO - 0:09:54.454 - onStart()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:09:54.459 - onStart()@ea019b3:5238
-[main (2) ] INFO - 0:09:54.466 - onResume()@ea019b3:5238
-[main (2) ] INFO - 0:09:54.467 - added listener: 2 listeners
-[main (2) ] INFO - 0:09:54.468 - sorted 2 items took: 0 ms
-[main (2) ] INFO - 0:09:54.469 - onResume()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:09:54.470 - added listener: 3 listeners
-[main (2) ] INFO - 0:09:54.470 - refreshLocalMediaServerLibraryList: removed: fenice
-[main (2) ] INFO - 0:09:54.470 - refreshLocalMediaServerLibraryList: removed: Freebox Server
-[main (2) ] INFO - 0:09:54.470 - refreshLocalMediaServerLibraryList: removed: pizzicato-Music-mediaserver
-[main (2) ] INFO - 0:09:54.470 - refreshLocalMediaServerLibraryList: removed: PMOMusic Media Server
-[main (2) ] INFO - 0:09:54.471 - refreshLocalMediaServerLibraryList: added: fenice
-[main (2) ] INFO - 0:09:54.471 - refreshLocalMediaServerLibraryList: added: Freebox Server
-[main (2) ] INFO - 0:09:54.471 - refreshLocalMediaServerLibraryList: added: pizzicato-Music-mediaserver
-[main (2) ] INFO - 0:09:54.474 - refreshLocalMediaServerLibraryList: added: PMOMusic Media Server
-[main (2) ] INFO - 0:09:54.474 - pizzicato-Music: TimeTask already launched!
-[main (2) ] INFO - 0:09:54.475 - addListener (context: com.bubblesoft.android.bubbleupnp.MainTabActivity@ea019b3)
-[main (2) ] INFO - 0:09:54.475 - onStandbyChange: standby=false, ignore=true
-[main (2) ] INFO - 0:09:54.476 - pizzicato-Music: MainFragmentBase.onVolumeChange: 95
-[main (2) ] INFO - 0:09:54.478 - onCreateOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:09:54.479 - onPrepareOptionsMenu()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:09:54.512 - Insets: Insets{left=0, top=88, right=0, bottom=45}
-[main (2) ] INFO - 0:09:54.706 - Insets: Insets{left=0, top=88, right=0, bottom=45}
-[main (2) ] INFO - 0:09:57.314 - onPause()@ea019b3:5238
-[main (2) ] INFO - 0:09:57.315 - onPause()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:09:57.316 - removed listener: 2 listeners
-[main (2) ] INFO - 0:09:57.318 - removeListener (context: com.bubblesoft.android.bubbleupnp.MainTabActivity@ea019b3)
-[main (2) ] INFO - 0:09:57.318 - removed listener: 1 listeners
-[main (2) ] INFO - 0:09:57.554 - onStop()@ea019b3:5238
-[main (2) ] INFO - 0:09:57.560 - onStop()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:09:57.575 - onStop()@b163faf/ea019b3:5238
-[main (2) ] INFO - 0:09:57.577 - onStop()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:09:57.586 - onSaveInstanceState(outState)@ea019b3:5238
-[main (2) ] INFO - 0:09:57.591 - onSaveInstanceState()@b163faf/ea019b3:5238
-[main (2) ] INFO - 0:09:57.594 - onSaveInstanceState()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:09:57.601 - onSaveInstanceState()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:09:58.152 - onDestroy()@ea019b3:5238
-[main (2) ] INFO - 0:09:58.154 - onDestroyView()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:09:58.157 - onDestroy()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:09:58.160 - onDetach()@914ef69/ea019b3:5238
-[main (2) ] INFO - 0:09:58.161 - onDestroyView()@b163faf/ea019b3:5238
-[main (2) ] INFO - 0:09:58.163 - onDestroy()@b163faf/ea019b3:5238
-[main (2) ] INFO - 0:09:58.164 - removed listener: 0 listeners
-[main (2) ] INFO - 0:09:58.166 - onDetach()@b163faf/ea019b3:5238
-[main (2) ] INFO - 0:09:58.168 - onDestroyView()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:09:58.169 - removeListener (context: com.bubblesoft.android.bubbleupnp.MainTabActivity@ea019b3)
-[main (2) ] INFO - 0:09:58.170 - onSaveInstanceState()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:09:58.171 - saveMediaServerState: PMOMusic Media Server
-[main (2) ] INFO - 0:09:58.172 - positionStack: [3, 3, 3, 0, 0]
-[main (2) ] INFO - 0:09:58.173 - itemList: Bundle[{firstVisiblePosition=0}]
-[main (2) ] INFO - 0:09:58.173 - containerPath: [radio-paradise:channel:main, radio-paradise:channel:main:history]
-[main (2) ] INFO - 0:09:58.174 - refreshLocalMediaServerLibraryList: removed: fenice
-[main (2) ] INFO - 0:09:58.175 - refreshLocalMediaServerLibraryList: removed: Freebox Server
-[main (2) ] INFO - 0:09:58.175 - refreshLocalMediaServerLibraryList: removed: pizzicato-Music-mediaserver
-[main (2) ] INFO - 0:09:58.175 - refreshLocalMediaServerLibraryList: removed: PMOMusic Media Server
-[main (2) ] INFO - 0:09:58.177 - onDestroy()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:09:58.179 - onDetach()@df8ac1c/ea019b3:5238
-[main (2) ] INFO - 0:09:58.202 - onTaskRemoved: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 xflg=0x4 cmp=com.bubblesoft.android.bubbleupnp/.MainActivity }, mode: 2
-[main (2) ] INFO - 0:09:58.203 - onTaskRemoved: stopping service
-[main (2) ] INFO - 0:09:58.211 - onDestroy: start
-[main (2) ] INFO - 0:09:58.267 - pizzicato-Music: stopped subscription callback for service (n) ServiceId: urn:av-openhome-org:serviceId:Product
-[main (2) ] INFO - 0:09:58.268 - pizzicato-Music: stopped subscription callback for service (n) ServiceId: urn:av-openhome-org:serviceId:Playlist
-[main (2) ] INFO - 0:09:58.268 - pizzicato-Music: stopped subscription callback for service (n) ServiceId: urn:av-openhome-org:serviceId:Info
-[main (2) ] INFO - 0:09:58.269 - pizzicato-Music: stopped subscription callback for service (n) ServiceId: urn:av-openhome-org:serviceId:Credentials
-[main (2) ] INFO - 0:09:58.270 - pizzicato-Music: stopped subscription callback for service (n) ServiceId: urn:av-openhome-org:serviceId:Volume
-[main (2) ] INFO - 0:09:58.271 - stopping task TimeTask: pizzicato-Music
-[main (2) ] INFO - 0:09:58.273 - task: executor 'PlaybackActions': shutdown, wait for running tasks completion
-[main (2) ] INFO - 0:09:58.274 - qobuz: user auth token: unset
-[main (2) ] INFO - 0:09:58.275 - qobuz: cleared credentials
-[main (2) ] INFO - 0:09:58.275 - qobuz: username: set
-[main (2) ] INFO - 0:09:58.276 - tidal: session: unset
-[main (2) ] INFO - 0:09:58.276 - tidal: reset
-[main (2) ] INFO - 0:09:58.277 - active renderer: none
-[main (2) ] INFO - 0:09:58.281 - VolumeProvider: ignoring: null renderer
-[main (2) ] INFO - 0:09:58.284 - audio cast (tid: 2): not aborting audio cast (not busy)
-[main (2) ] INFO - 0:09:58.286 - task: waiting for completion (timeout: 3000 ms)...: Jetty-Stop
-[Main #17 (424) ] INFO - 0:09:58.287 - task: start: Jetty-Stop
-[Main #17: Jetty-Stop (424) ] INFO - 0:09:58.292 - stopped {}
-[Main #17: Jetty-Stop (424) ] INFO - 0:09:58.293 - stopped {}
-[Main #17: Jetty-Stop (424) ] INFO - 0:09:58.294 - stopped {}
-[Main #17: Jetty-Stop (424) ] INFO - 0:09:58.295 - stopped {}
-[Main #17: Jetty-Stop (424) ] INFO - 0:09:58.295 - stopped {}
-[Main #17: Jetty-Stop (424) ] INFO - 0:09:58.296 - stopped {}
-[Main #17: Jetty-Stop (424) ] INFO - 0:09:58.296 - stopped {}
-[Main #17: Jetty-Stop (424) ] INFO - 0:09:58.297 - stopped {}
-[Main #17: Jetty-Stop (424) ] INFO - 0:09:58.303 - stopped {}
-[Main #17: Jetty-Stop (424) ] INFO - 0:09:58.305 - task: executor 'Jetty #%d': shutdown now, cancelling running tasks
-[Main #17 (424) ] INFO - 0:09:58.312 - task: end, 24ms: Jetty-Stop
-[main (2) ] INFO - 0:09:58.315 - removed local media server
-[main (2) ] INFO - 0:09:58.316 - MediaPlayerRenderer.stop()
-[Main #2: MediaRenderer-LastChange (199) ] INFO - 0:09:58.317 - MediaRenderer LastChange thread: interrupted
-[Main #2 (199) ] INFO - 0:09:58.318 - task: end, 597574ms: MediaRenderer-LastChange
-[main (2) ] INFO - 0:09:58.318 - Current state is: STOPPED, changing to new state: STOPPED
-[main (2) ] INFO - 0:09:58.323 - MediaPlayerRenderer shutdown
-[main (2) ] INFO - 0:09:58.325 - removed local renderer
-[main (2) ] WARNING - 0:09:58.328 - discovery maintenance: executor already stopped
-[main (2) ] INFO - 0:09:58.329 - task: waiting for completion (timeout: 3000 ms)...: AndroidUpnpService-Shutdown
-[Main #2 (199) ] INFO - 0:09:58.329 - task: start: AndroidUpnpService-Shutdown
-[Main #2: AndroidUpnpService-Shutdown (19] INFO - 0:09:58.330 - .d : >>> Shutting down UPnP service...
-[Main #1 (179) ] INFO - 0:09:58.330 - task: end, 597630ms: DownloadManager
-[Main #2: AndroidUpnpService-Shutdown (19] INFO - 0:09:58.845 - .b : WiFi multicast lock released
-[Main #2: AndroidUpnpService-Shutdown (19] INFO - 0:09:58.847 - .b : WiFi lock released
-[Main #2: AndroidUpnpService-Shutdown (19] INFO - 0:09:58.850 - .a : Shutting down network services
-[Main #2: AndroidUpnpService-Shutdown (19] INFO - 0:09:58.850 - .a : Stopping stream client connection management/pool
-[Main #2: AndroidUpnpService-Shutdown (19] INFO - 0:09:58.855 - .a : Stopping stream server on address: /127.0.0.1
-[Main #2: AndroidUpnpService-Shutdown (19] INFO - 0:09:58.855 - .a : Stopping stream server on address: /192.168.0.98
-[Main #2: AndroidUpnpService-Shutdown (19] INFO - 0:09:58.857 - .a : Stopping multicast receiver on interface: wlan0
-[Main #2: AndroidUpnpService-Shutdown (19] INFO - 0:09:58.858 - .a : Stopping multicast receiver on interface: lo
-[Main #2: AndroidUpnpService-Shutdown (19] INFO - 0:09:58.859 - .a : Stopping datagram I/O on address: /127.0.0.1
-[Main #2: AndroidUpnpService-Shutdown (19] INFO - 0:09:58.861 - .a : Stopping datagram I/O on address: /192.168.0.98
-[Main #2: AndroidUpnpService-Shutdown (19] INFO - 0:09:58.866 - .d : <<< UPnP service shutdown completed
-[Main #2 (199) ] INFO - 0:09:58.869 - task: end, 540ms: AndroidUpnpService-Shutdown
-[main (2) ] INFO - 0:09:58.870 - removed LAN BubbleUPnP Server
-[main (2) ] INFO - 0:09:58.871 - wake lock released
-[main (2) ] INFO - 0:09:58.901 - App shutdown
-[main (2) ] INFO - 0:09:58.903 - task: shutting down executor 'Main #%d', cancelling tasks
-[main (2) ] INFO - 0:09:58.904 - task: executor 'Main #%d': shutdown now, cancelling running tasks
-[main (2) ] INFO - 0:09:58.904 - AndroidUpnpService.onDestroy() took: 693 ms
-[main (2) ] INFO - 0:09:58.937 - System.exit()
diff --git a/pmocontrol/examples/event_demo.rs b/pmocontrol/examples/event_demo.rs
index d9875ad1..bf3e7ac5 100644
--- a/pmocontrol/examples/event_demo.rs
+++ b/pmocontrol/examples/event_demo.rs
@@ -23,6 +23,7 @@ use pmocontrol::{
ControlPoint, DeviceRegistryRead, PlaybackPositionInfo, PlaybackState, RendererEvent,
RendererId, RendererInfo,
};
+use pmocontrol::openhome_renderer::{format_seconds, map_openhome_state};
fn main() -> io::Result<()> {
// Logging simple (tracing_subscriber est déjà utilisé dans les autres exemples)
@@ -53,6 +54,7 @@ fn main() -> io::Result<()> {
" [{}] {} | model={} | udn={} | location={} | online={}",
idx, info.friendly_name, info.model_name, info.udn, info.location, info.online
);
+ print_openhome_summary(" ", info, &cp);
}
// 3. Optionnel : sélection d'un renderer par index (filtrage des événements)
@@ -126,6 +128,7 @@ fn event_matches_id(event: &RendererEvent, id: &RendererId) -> bool {
RendererEvent::MuteChanged { id: eid, .. } => eid == id,
RendererEvent::MetadataChanged { id: eid, .. } => eid == id,
RendererEvent::QueueUpdated { id: eid, .. } => eid == id,
+ RendererEvent::BindingChanged { id: eid, .. } => eid == id,
}
}
@@ -165,6 +168,60 @@ fn format_position(pos: &PlaybackPositionInfo) -> String {
format!("track={} rel_time={} duration={}", track, rel, dur)
}
+fn print_openhome_summary(prefix: &str, info: &RendererInfo, cp: &ControlPoint) {
+ if !info.capabilities.has_oh_playlist
+ && !info.capabilities.has_oh_info
+ && !info.capabilities.has_oh_time
+ {
+ return;
+ }
+
+ let registry = cp.registry();
+ let reg = registry.read().unwrap();
+ let playlist_client = reg.oh_playlist_client_for_renderer(&info.id);
+ let info_client = reg.oh_info_client_for_renderer(&info.id);
+ let time_client = reg.oh_time_client_for_renderer(&info.id);
+ drop(reg);
+
+ if playlist_client.is_none() && info_client.is_none() && time_client.is_none() {
+ return;
+ }
+
+ println!("{prefix}OpenHome:");
+
+ if let Some(client) = playlist_client {
+ match client.id_array() {
+ Ok(ids) => println!("{prefix} Playlist tracks : {}", ids.len()),
+ Err(err) => println!("{prefix} Playlist tracks : "),
+ }
+ }
+
+ if let Some(client) = info_client {
+ match client.transport_state() {
+ Ok(state) => {
+ let logical = map_openhome_state(&state);
+ println!(
+ "{prefix} Transport state : {} ({:?})",
+ state, logical
+ );
+ }
+ Err(err) => println!("{prefix} Transport state : "),
+ }
+ }
+
+ if let Some(client) = time_client {
+ match client.position() {
+ Ok(pos) => println!(
+ "{prefix} Position : {}/{} (tracks={})",
+ format_seconds(pos.elapsed_secs),
+ format_seconds(pos.duration_secs),
+ pos.track_count
+ ),
+ Err(err) => println!("{prefix} Position : "),
+ }
+ }
+}
+
/// Affiche un RendererEvent avec horodatage.
fn print_event(event: &RendererEvent) {
let ts = now_hms();
diff --git a/pmocontrol/examples/live_pmomusic_demo.rs b/pmocontrol/examples/live_pmomusic_demo.rs
index f9fdafec..be7f02de 100644
--- a/pmocontrol/examples/live_pmomusic_demo.rs
+++ b/pmocontrol/examples/live_pmomusic_demo.rs
@@ -329,13 +329,7 @@ impl CliConfig {
}
fn pick_renderer(renderers: Vec) -> Option {
- let mut candidates: Vec = renderers
- .into_iter()
- .filter(|info| match info.protocol {
- RendererProtocol::OpenHomeOnly => false,
- RendererProtocol::UpnpAvOnly | RendererProtocol::Hybrid => true,
- })
- .collect();
+ let mut candidates: Vec = renderers;
if candidates.is_empty() {
return None;
diff --git a/pmocontrol/examples/queue_pmomusic_demo.rs b/pmocontrol/examples/queue_pmomusic_demo.rs
index e6bf56a0..5a6f9196 100644
--- a/pmocontrol/examples/queue_pmomusic_demo.rs
+++ b/pmocontrol/examples/queue_pmomusic_demo.rs
@@ -302,13 +302,7 @@ impl CliConfig {
}
fn pick_renderer(renderers: Vec) -> Option {
- let mut candidates: Vec = renderers
- .into_iter()
- .filter(|info| match info.protocol {
- RendererProtocol::OpenHomeOnly => false,
- RendererProtocol::UpnpAvOnly | RendererProtocol::Hybrid => true,
- })
- .collect();
+ let mut candidates: Vec = renderers;
if candidates.is_empty() {
return None;
diff --git a/pmocontrol/examples/renderer_demo.rs b/pmocontrol/examples/renderer_demo.rs
index edd8aa92..d1741b34 100644
--- a/pmocontrol/examples/renderer_demo.rs
+++ b/pmocontrol/examples/renderer_demo.rs
@@ -18,6 +18,8 @@ use pmocontrol::{
ControlPoint, MusicRenderer, PlaybackState, PlaybackStatus, RendererCapabilities,
RendererProtocol, TransportControl, VolumeControl,
};
+use pmocontrol::model::RendererInfo;
+use pmocontrol::openhome_renderer::{format_seconds, map_openhome_state};
use std::env;
use std::thread;
use std::time::Duration;
@@ -83,6 +85,7 @@ fn main() -> Result<()> {
);
print_backend(" ", r);
print_capabilities(" ", &info.capabilities, &info.protocol);
+ print_openhome_details(" ", info, &cp);
}
// 5. Select renderer
@@ -98,6 +101,7 @@ fn main() -> Result<()> {
println!(" Protocol : {:?}", info.protocol);
print_backend(" ", renderer);
print_capabilities(" ", &info.capabilities, &info.protocol);
+ print_openhome_details(" ", info, &cp);
if let Some(upnp) = renderer.as_upnp() {
println!(
@@ -224,6 +228,60 @@ fn print_capabilities(prefix: &str, caps: &RendererCapabilities, proto: &Rendere
println!("{prefix} OH Radio : {}", caps.has_oh_radio);
}
+fn print_openhome_details(prefix: &str, info: &RendererInfo, cp: &ControlPoint) {
+ if !info.capabilities.has_oh_playlist
+ && !info.capabilities.has_oh_info
+ && !info.capabilities.has_oh_time
+ {
+ return;
+ }
+
+ let registry = cp.registry();
+ let reg = registry.read().unwrap();
+ let playlist_client = reg.oh_playlist_client_for_renderer(&info.id);
+ let info_client = reg.oh_info_client_for_renderer(&info.id);
+ let time_client = reg.oh_time_client_for_renderer(&info.id);
+ drop(reg);
+
+ if playlist_client.is_none() && info_client.is_none() && time_client.is_none() {
+ return;
+ }
+
+ println!("{prefix}OpenHome:");
+
+ if let Some(client) = playlist_client {
+ match client.id_array() {
+ Ok(ids) => println!("{prefix} Playlist tracks : {}", ids.len()),
+ Err(err) => println!("{prefix} Playlist tracks : "),
+ }
+ }
+
+ if let Some(client) = info_client {
+ match client.transport_state() {
+ Ok(state) => {
+ let logical = map_openhome_state(&state);
+ println!(
+ "{prefix} Transport state : {} ({:?})",
+ state, logical
+ );
+ }
+ Err(err) => println!("{prefix} Transport state : "),
+ }
+ }
+
+ if let Some(client) = time_client {
+ match client.position() {
+ Ok(pos) => println!(
+ "{prefix} Position : {}/{} (tracks={})",
+ format_seconds(pos.elapsed_secs),
+ format_seconds(pos.duration_secs),
+ pos.track_count
+ ),
+ Err(err) => println!("{prefix} Position : "),
+ }
+ }
+}
+
fn print_backend(prefix: &str, renderer: &MusicRenderer) {
let backend = match renderer {
MusicRenderer::Upnp(_) => "UpnpRenderer (UPnP AV / DLNA)",
diff --git a/pmocontrol/src/control_point.rs b/pmocontrol/src/control_point.rs
index 1f7b2bd0..6476795b 100644
--- a/pmocontrol/src/control_point.rs
+++ b/pmocontrol/src/control_point.rs
@@ -1,13 +1,17 @@
-use std::collections::HashMap;
-use std::io;
+use std::collections::{HashMap, HashSet};
+use std::hash::{DefaultHasher, Hash, Hasher};
+use std::io::{self, BufRead, BufReader, Read, Write};
+use std::net::{IpAddr, TcpListener, TcpStream, UdpSocket};
use std::sync::{Arc, Mutex, RwLock};
use std::thread;
-use std::time::Duration;
+use std::time::{Duration, Instant};
-use anyhow::anyhow;
-use crossbeam_channel::Receiver;
+use anyhow::{anyhow, Context};
+use crossbeam_channel::{Receiver, Sender, unbounded};
use pmoupnp::ssdp::SsdpClient;
use tracing::{debug, error, info, warn};
+use ureq::{Agent, http};
+use xmltree::{Element, XMLNode};
use crate::MusicRenderer;
use crate::capabilities::{
@@ -21,8 +25,9 @@ use crate::media_server::{
};
use crate::media_server_events::spawn_media_server_event_runtime;
use crate::model::TrackMetadata;
-use crate::model::{MediaServerEvent, RendererEvent, RendererId, RendererProtocol};
-use crate::music_renderer::op_not_supported;
+use crate::model::{MediaServerEvent, RendererEvent, RendererId, RendererInfo};
+use crate::openhome_client::{OhPlaylistClient, OhTrackEntry, parse_track_metadata_from_didl};
+use crate::openhome_renderer::{format_seconds, map_openhome_state};
use crate::playback_queue::{PlaybackItem, PlaybackQueue};
use crate::provider::HttpXmlDescriptionProvider;
use crate::registry::{DeviceRegistry, DeviceRegistryRead, DeviceUpdate};
@@ -152,9 +157,30 @@ impl ControlPoint {
continue;
}
- match info.protocol {
- RendererProtocol::UpnpAvOnly | RendererProtocol::Hybrid => {}
- RendererProtocol::OpenHomeOnly => continue,
+ let backend = if info.capabilities.has_oh_playlist {
+ PlaylistBackend::OpenHome
+ } else {
+ PlaylistBackend::PMOQueue
+ };
+ let previous_backend = runtime_cp.runtime.playlist_backend(&info.id);
+ if previous_backend != backend {
+ runtime_cp
+ .runtime
+ .set_playlist_backend(&info.id, backend);
+ if matches!(backend, PlaylistBackend::OpenHome) {
+ if let Err(err) = sync_openhome_playlist(
+ &runtime_cp.registry,
+ &runtime_cp.runtime,
+ &runtime_cp.event_bus,
+ &info.id,
+ ) {
+ debug!(
+ renderer = info.id.0.as_str(),
+ error = %err,
+ "Initial OpenHome playlist sync failed"
+ );
+ }
+ }
}
let renderer_id = info.id.clone();
@@ -278,6 +304,30 @@ impl ControlPoint {
timeout_secs,
)?;
+ let (oh_event_tx, oh_event_rx) = unbounded::();
+ let event_forwarder_cp = ControlPoint {
+ registry: Arc::clone(®istry),
+ event_bus: event_bus.clone(),
+ media_event_bus: media_event_bus.clone(),
+ runtime: Arc::clone(&runtime),
+ playlist_bindings: Arc::clone(&playlist_bindings),
+ };
+
+ thread::Builder::new()
+ .name("cp-openhome-event-forwarder".into())
+ .spawn(move || {
+ while let Ok(event) = oh_event_rx.recv() {
+ event_forwarder_cp.emit_renderer_event(event);
+ }
+ })?;
+
+ spawn_openhome_event_runtime(
+ Arc::clone(®istry),
+ Arc::clone(&runtime),
+ event_bus.clone(),
+ oh_event_tx,
+ )?;
+
// Worker thread to process MediaServerEvent and trigger queue refreshes
// for renderers bound to updated playlist containers
let registry_for_media_worker = Arc::clone(®istry);
@@ -458,10 +508,6 @@ impl ControlPoint {
}
/// Snapshot list of music renderers (protocol-agnostic view).
- ///
- /// For now, only UPnP AV / hybrid renderers are wrapped as
- /// [`MusicRenderer::Upnp`]. OpenHome-only devices will be
- /// ignored until an OpenHome backend is implemented.
pub fn list_music_renderers(&self) -> Vec {
let infos = {
let reg = self.registry.read().unwrap();
@@ -521,6 +567,17 @@ impl ControlPoint {
// User-driven mutation: detach any playlist binding
self.detach_binding_on_user_mutation(renderer_id, "clear_queue");
+ if self.runtime.uses_openhome_playlist(renderer_id) {
+ let client = self.openhome_playlist_client(renderer_id)?;
+ client.delete_all()?;
+ self.sync_openhome_playlist_for(renderer_id)?;
+ debug!(
+ renderer = renderer_id.0.as_str(),
+ "Cleared OpenHome playlist"
+ );
+ return Ok(());
+ }
+
let removed = self
.runtime
.with_queue_mut(renderer_id, |queue| {
@@ -563,6 +620,11 @@ impl ControlPoint {
// User-driven mutation: detach any playlist binding
self.detach_binding_on_user_mutation(renderer_id, "enqueue_items");
+ if self.runtime.uses_openhome_playlist(renderer_id) {
+ self.enqueue_items_openhome(renderer_id, items)?;
+ return Ok(());
+ }
+
let item_count = items.len();
let new_len = self
.runtime
@@ -625,6 +687,14 @@ impl ControlPoint {
.ok_or_else(|| Self::runtime_entry_missing(renderer_id))
}
+ /// Force a resynchronization of the OpenHome playlist cache for a renderer.
+ ///
+ /// This is used by external APIs after mutating the native playlist so that
+ /// the local queue mirrors the renderer state.
+ pub fn refresh_openhome_playlist(&self, renderer_id: &RendererId) -> anyhow::Result<()> {
+ self.sync_openhome_playlist_for(renderer_id)
+ }
+
/// Play the current item from the queue without advancing the index.
///
/// This is useful after a Stop operation to resume playback from the current
@@ -639,6 +709,10 @@ impl ControlPoint {
return Err(err);
}
+ if self.runtime.uses_openhome_playlist(renderer_id) {
+ return self.play_current_openhome(renderer_id);
+ }
+
let Some((item, remaining)) = self.runtime.peek_current(renderer_id) else {
debug!(
renderer = renderer_id.0.as_str(),
@@ -664,15 +738,6 @@ impl ControlPoint {
anyhow!("Renderer {} not found", renderer_id.0)
})?;
- if matches!(renderer.info().protocol, RendererProtocol::OpenHomeOnly) {
- self.runtime
- .set_playback_source(renderer_id, PlaybackSource::None);
- return Err(op_not_supported(
- "play_current_from_queue",
- "OpenHomeOnly renderer",
- ));
- }
-
let playback = (|| -> anyhow::Result<()> {
let didl_metadata = item.to_didl_metadata();
renderer.play_uri(&item.uri, &didl_metadata)?;
@@ -713,6 +778,11 @@ impl ControlPoint {
return Err(err);
}
+ if self.runtime.uses_openhome_playlist(renderer_id) {
+ self.play_next_openhome(renderer_id)?;
+ return Ok(());
+ }
+
let Some((item, remaining_after)) = self.runtime.dequeue_next(renderer_id) else {
debug!(
renderer = renderer_id.0.as_str(),
@@ -740,18 +810,6 @@ impl ControlPoint {
anyhow!("Renderer {} not found", renderer_id.0)
})?;
- if matches!(renderer.info().protocol, RendererProtocol::OpenHomeOnly) {
- self.runtime
- .with_queue_mut(renderer_id, |queue| queue.enqueue_front(item))
- .ok_or_else(|| Self::runtime_entry_missing(renderer_id))?;
- self.runtime
- .set_playback_source(renderer_id, PlaybackSource::None);
- return Err(op_not_supported(
- "play_next_from_queue",
- "OpenHomeOnly renderer",
- ));
- }
-
let playback = (|| -> anyhow::Result<()> {
let didl_metadata = item.to_didl_metadata();
renderer.play_uri(&item.uri, &didl_metadata)?;
@@ -1082,6 +1140,83 @@ impl ControlPoint {
renderer_id.0
)
}
+
+ fn sync_openhome_playlist_for(&self, renderer_id: &RendererId) -> anyhow::Result<()> {
+ sync_openhome_playlist(&self.registry, &self.runtime, &self.event_bus, renderer_id)
+ }
+
+ fn openhome_playlist_client(
+ &self,
+ renderer_id: &RendererId,
+ ) -> anyhow::Result {
+ let reg = self.registry.read().unwrap();
+ reg.oh_playlist_client_for_renderer(renderer_id)
+ .ok_or_else(|| anyhow!("Renderer {} has no OpenHome playlist", renderer_id.0))
+ }
+
+ fn enqueue_items_openhome(
+ &self,
+ renderer_id: &RendererId,
+ items: Vec,
+ ) -> anyhow::Result<()> {
+ if items.is_empty() {
+ return Ok(());
+ }
+
+ let client = self.openhome_playlist_client(renderer_id)?;
+ let mut after_id = self
+ .runtime
+ .queue_full_snapshot(renderer_id)
+ .and_then(|(queue, _)| queue.last().and_then(openhome_track_id_from_item))
+ .unwrap_or(0);
+
+ for item in items.iter() {
+ let metadata = item.to_didl_metadata();
+ after_id = client.insert(after_id, &item.uri, &metadata)?;
+ }
+
+ self.sync_openhome_playlist_for(renderer_id)?;
+ Ok(())
+ }
+
+ fn play_current_openhome(&self, renderer_id: &RendererId) -> anyhow::Result<()> {
+ let Some((item, _)) = self.runtime.peek_current(renderer_id) else {
+ debug!(
+ renderer = renderer_id.0.as_str(),
+ "OpenHome playlist is empty or no current item"
+ );
+ self.runtime
+ .set_playback_source(renderer_id, PlaybackSource::None);
+ return Ok(());
+ };
+
+ let track_id = openhome_track_id_from_item(&item)
+ .ok_or_else(|| anyhow!("Current OpenHome item has no track id"))?;
+ let client = self.openhome_playlist_client(renderer_id)?;
+ client.play_id(track_id)?;
+ self.runtime
+ .set_playback_source(renderer_id, PlaybackSource::FromQueue);
+ self.sync_openhome_playlist_for(renderer_id)?;
+ info!(
+ renderer = renderer_id.0.as_str(),
+ track_id,
+ "Started OpenHome playlist playback (current item)"
+ );
+ Ok(())
+ }
+
+ fn play_next_openhome(&self, renderer_id: &RendererId) -> anyhow::Result<()> {
+ let client = self.openhome_playlist_client(renderer_id)?;
+ client.next()?;
+ self.runtime
+ .set_playback_source(renderer_id, PlaybackSource::FromQueue);
+ self.sync_openhome_playlist_for(renderer_id)?;
+ info!(
+ renderer = renderer_id.0.as_str(),
+ "Advanced OpenHome playlist to next track"
+ );
+ Ok(())
+ }
}
#[derive(Clone, Default)]
@@ -1101,12 +1236,30 @@ enum PlaybackSource {
External,
}
-#[derive(Default)]
+#[derive(Clone, Copy, Debug, PartialEq, Eq)]
+enum PlaylistBackend {
+ PMOQueue,
+ OpenHome,
+}
+
struct RendererRuntimeEntry {
snapshot: RendererRuntimeSnapshot,
queue: PlaybackQueue,
playback_source: PlaybackSource,
user_stop_requested: bool,
+ playlist_backend: PlaylistBackend,
+}
+
+impl Default for RendererRuntimeEntry {
+ fn default() -> Self {
+ Self {
+ snapshot: RendererRuntimeSnapshot::default(),
+ queue: PlaybackQueue::default(),
+ playback_source: PlaybackSource::None,
+ user_stop_requested: false,
+ playlist_backend: PlaylistBackend::PMOQueue,
+ }
+ }
}
struct RuntimeState {
@@ -1134,6 +1287,15 @@ impl RuntimeState {
});
}
+ fn update_snapshot_with(&self, id: &RendererId, f: F)
+ where
+ F: FnOnce(&mut RendererRuntimeSnapshot),
+ {
+ self.with_entry(id, |entry| {
+ f(&mut entry.snapshot);
+ });
+ }
+
fn has_entry(&self, id: &RendererId) -> bool {
let entries = self.entries.lock().unwrap();
entries.contains_key(id)
@@ -1212,6 +1374,27 @@ impl RuntimeState {
f(entry)
}
+ fn set_playlist_backend(&self, id: &RendererId, backend: PlaylistBackend) {
+ self.with_entry(id, |entry| {
+ entry.playlist_backend = backend;
+ });
+ }
+
+ fn playlist_backend(&self, id: &RendererId) -> PlaylistBackend {
+ let entries = self.entries.lock().unwrap();
+ entries
+ .get(id)
+ .map(|entry| entry.playlist_backend)
+ .unwrap_or(PlaylistBackend::PMOQueue)
+ }
+
+ fn uses_openhome_playlist(&self, id: &RendererId) -> bool {
+ matches!(
+ self.playlist_backend(id),
+ PlaylistBackend::OpenHome
+ )
+ }
+
fn mark_user_stop_requested(&self, id: &RendererId) {
let mut entries = self.entries.lock().unwrap();
if let Some(entry) = entries.get_mut(id) {
@@ -1503,6 +1686,946 @@ fn playback_item_from_entry(server: &MusicServer, entry: &MediaEntry) -> Option<
Some(item)
}
+const OPENHOME_TRACK_PREFIX: &str = "openhome:";
+
+fn playback_item_from_openhome_entry(entry: &OhTrackEntry) -> PlaybackItem {
+ let mut item = PlaybackItem::new(entry.uri.clone());
+ item.object_id = Some(format!("{}{}", OPENHOME_TRACK_PREFIX, entry.id));
+
+ if let Some(metadata) = parse_track_metadata_from_didl(&entry.metadata_xml) {
+ item.title = metadata.title;
+ item.artist = metadata.artist;
+ item.album = metadata.album;
+ item.genre = metadata.genre;
+ item.album_art_uri = metadata.album_art_uri;
+ item.date = metadata.date;
+ item.track_number = metadata.track_number;
+ item.creator = metadata.creator;
+ }
+
+ item
+}
+
+fn openhome_track_id_from_item(item: &PlaybackItem) -> Option {
+ let object_id = item.object_id.as_ref()?;
+ let raw = object_id.strip_prefix(OPENHOME_TRACK_PREFIX)?;
+ raw.parse::().ok()
+}
+
+fn sync_openhome_playlist(
+ registry: &Arc>,
+ runtime: &Arc,
+ event_bus: &RendererEventBus,
+ renderer_id: &RendererId,
+) -> anyhow::Result<()> {
+ let (playlist_client, info_client) = {
+ let reg = registry.read().unwrap();
+ let playlist = reg
+ .oh_playlist_client_for_renderer(renderer_id)
+ .ok_or_else(|| anyhow!("Renderer has no OpenHome playlist service"))?;
+ let info = reg.oh_info_client_for_renderer(renderer_id);
+ (playlist, info)
+ };
+
+ let track_entries = playlist_client.read_all_tracks()?;
+ let playback_items: Vec = track_entries
+ .iter()
+ .map(playback_item_from_openhome_entry)
+ .collect();
+
+ let current_id = info_client
+ .and_then(|client| client.id().ok());
+
+ let current_index = current_id.and_then(|id| {
+ playback_items
+ .iter()
+ .position(|item| openhome_track_id_from_item(item) == Some(id))
+ });
+
+ let queue_len = runtime
+ .with_queue_mut(renderer_id, |queue| {
+ queue.clear();
+ queue.enqueue_many(playback_items.iter().cloned());
+ queue.set_current_index(current_index);
+ queue.len()
+ })
+ .unwrap_or(0);
+
+ event_bus.broadcast(RendererEvent::QueueUpdated {
+ id: renderer_id.clone(),
+ queue_length: queue_len,
+ });
+
+ Ok(())
+}
+
+const OPENHOME_SUBSCRIPTION_TIMEOUT_SECS: u64 = 300;
+const OPENHOME_RENEWAL_MARGIN_SECS: u64 = 60;
+
+fn spawn_openhome_event_runtime(
+ registry: Arc>,
+ runtime: Arc,
+ event_bus: RendererEventBus,
+ event_tx: Sender,
+) -> io::Result<()> {
+ let listener = TcpListener::bind("0.0.0.0:0")?;
+ let listener_addr = listener
+ .local_addr()
+ .map_err(|err| io::Error::new(io::ErrorKind::Other, err))?;
+
+ info!("OpenHome event listener bound on {}", listener_addr);
+
+ let (notify_tx, notify_rx) = unbounded::();
+ thread::Builder::new()
+ .name("openhome-event-http".into())
+ .spawn(move || run_openhome_http_listener(listener, notify_tx))?;
+
+ let worker = OpenHomeEventRuntime::new(
+ registry,
+ runtime,
+ event_bus,
+ notify_rx,
+ event_tx,
+ listener_addr.port(),
+ );
+
+ thread::Builder::new()
+ .name("openhome-event-worker".into())
+ .spawn(move || worker.run())
+ .map(|_| ())
+}
+
+struct OpenHomeEventRuntime {
+ registry: Arc>,
+ runtime: Arc,
+ event_bus: RendererEventBus,
+ notify_rx: Receiver,
+ event_tx: Sender,
+ listener_port: u16,
+ http_timeout: Duration,
+ subscriptions: HashMap,
+ path_index: HashMap,
+}
+
+impl OpenHomeEventRuntime {
+ fn new(
+ registry: Arc>,
+ runtime: Arc,
+ event_bus: RendererEventBus,
+ notify_rx: Receiver,
+ event_tx: Sender,
+ listener_port: u16,
+ ) -> Self {
+ Self {
+ registry,
+ runtime,
+ event_bus,
+ notify_rx,
+ event_tx,
+ listener_port,
+ http_timeout: Duration::from_secs(5),
+ subscriptions: HashMap::new(),
+ path_index: HashMap::new(),
+ }
+ }
+
+ fn run(mut self) {
+ loop {
+ self.drain_notifications();
+ self.refresh_renderers();
+ self.renew_expiring();
+ thread::sleep(Duration::from_millis(250));
+ }
+ }
+
+ fn drain_notifications(&mut self) {
+ while let Ok(notify) = self.notify_rx.try_recv() {
+ self.handle_notification(notify);
+ }
+ }
+
+ fn refresh_renderers(&mut self) {
+ let renderer_infos = {
+ let reg = self.registry.read().unwrap();
+ reg.list_renderers()
+ };
+
+ let mut active: HashSet = HashSet::new();
+
+ for info in renderer_infos {
+ if !info.online {
+ continue;
+ }
+
+ if let Some(url) = info.oh_playlist_event_sub_url.clone() {
+ let key = OpenHomeSubscriptionKey::new(&info.id, OpenHomeServiceKind::Playlist);
+ active.insert(key.clone());
+ self.ensure_subscription(key, info.clone(), url);
+ }
+
+ if let Some(url) = info.oh_info_event_sub_url.clone() {
+ let key = OpenHomeSubscriptionKey::new(&info.id, OpenHomeServiceKind::Info);
+ active.insert(key.clone());
+ self.ensure_subscription(key, info.clone(), url);
+ }
+
+ if let Some(url) = info.oh_time_event_sub_url.clone() {
+ let key = OpenHomeSubscriptionKey::new(&info.id, OpenHomeServiceKind::Time);
+ active.insert(key.clone());
+ self.ensure_subscription(key, info.clone(), url);
+ }
+ }
+
+ let stale: Vec = self
+ .subscriptions
+ .keys()
+ .filter(|key| !active.contains(*key))
+ .cloned()
+ .collect();
+
+ for key in stale {
+ if let Some(mut entry) = self.subscriptions.remove(&key) {
+ self.path_index.remove(&entry.callback_path);
+ if let Err(err) = Self::unsubscribe_entry(self.http_timeout, &mut entry) {
+ warn!(
+ renderer = entry.renderer.friendly_name.as_str(),
+ service = entry.service.as_str(),
+ error = %err,
+ "Failed to unsubscribe from OpenHome events"
+ );
+ }
+ }
+ }
+ }
+
+ fn ensure_subscription(
+ &mut self,
+ key: OpenHomeSubscriptionKey,
+ info: RendererInfo,
+ event_url: String,
+ ) {
+ let entry = self
+ .subscriptions
+ .entry(key.clone())
+ .or_insert_with(|| OpenHomeSubscriptionState::new(info.clone(), key.service, event_url.clone()));
+
+ entry.update(info, event_url);
+ self.path_index
+ .insert(entry.callback_path.clone(), key.clone());
+
+ if entry.sid.is_none() && entry.should_retry() {
+ if let Err(err) =
+ Self::subscribe_entry(self.listener_port, self.http_timeout, entry)
+ {
+ warn!(
+ renderer = entry.renderer.friendly_name.as_str(),
+ service = entry.service.as_str(),
+ error = %err,
+ "OpenHome SUBSCRIBE failed"
+ );
+ entry.defer_retry();
+ }
+ }
+ }
+
+ fn renew_expiring(&mut self) {
+ let now = Instant::now();
+ let mut to_renew = Vec::new();
+ for (key, entry) in self.subscriptions.iter() {
+ if let Some(exp) = entry.expires_at {
+ if exp <= now + Duration::from_secs(OPENHOME_RENEWAL_MARGIN_SECS) {
+ to_renew.push(key.clone());
+ }
+ }
+ }
+
+ for key in to_renew {
+ if let Some(entry) = self.subscriptions.get_mut(&key) {
+ if let Err(err) = Self::renew_entry(self.http_timeout, entry) {
+ warn!(
+ renderer = entry.renderer.friendly_name.as_str(),
+ service = entry.service.as_str(),
+ error = %err,
+ "Failed to renew OpenHome subscription"
+ );
+ entry.reset_subscription();
+ }
+ }
+ }
+ }
+
+ fn handle_notification(&mut self, notify: OpenHomeIncomingNotify) {
+ let Some(key) = self.path_index.get(¬ify.path).cloned() else {
+ debug!("Dropping OpenHome notify for unknown path {}", notify.path);
+ return;
+ };
+
+ let Some(entry) = self.subscriptions.get(&key) else {
+ return;
+ };
+
+ if let (Some(expected), Some(received)) = (&entry.sid, ¬ify.sid) {
+ if !expected.eq_ignore_ascii_case(received) {
+ debug!(
+ renderer = entry.renderer.friendly_name.as_str(),
+ service = entry.service.as_str(),
+ expected_sid = expected.as_str(),
+ received_sid = received.as_str(),
+ "Ignoring OpenHome notify with mismatched SID"
+ );
+ return;
+ }
+ }
+
+ let properties = parse_openhome_propertyset(&entry.renderer.id, &entry.service, ¬ify.body);
+ if properties.is_empty() {
+ return;
+ }
+
+ match entry.service {
+ OpenHomeServiceKind::Playlist => {
+ if properties.iter().any(|(name, _)| is_id_array_property(name)) {
+ if self
+ .runtime
+ .uses_openhome_playlist(&entry.renderer.id)
+ {
+ if let Err(err) = sync_openhome_playlist(
+ &self.registry,
+ &self.runtime,
+ &self.event_bus,
+ &entry.renderer.id,
+ ) {
+ warn!(
+ renderer = entry.renderer.friendly_name.as_str(),
+ error = %err,
+ "Failed to sync OpenHome playlist after IdArray event"
+ );
+ }
+ }
+ }
+ }
+ OpenHomeServiceKind::Info => {
+ self.handle_info_properties(&entry.renderer.id, properties);
+ }
+ OpenHomeServiceKind::Time => {
+ self.handle_time_properties(&entry.renderer.id, properties);
+ }
+ }
+ }
+
+ fn handle_info_properties(
+ &self,
+ renderer_id: &RendererId,
+ properties: Vec<(String, String)>,
+ ) {
+ let mut metadata_xml: Option = None;
+ let mut transport_state: Option = None;
+ let mut track_id: Option = None;
+ let mut track_uri: Option = None;
+
+ for (name, value) in properties {
+ match name.as_str() {
+ "Metadata" | "TrackMetadata" => {
+ if !value.trim().is_empty() {
+ metadata_xml = Some(value);
+ }
+ }
+ "TransportState" => {
+ transport_state = Some(value);
+ }
+ "Id" | "TrackId" => {
+ if let Ok(id) = value.trim().parse::() {
+ track_id = Some(id);
+ }
+ }
+ "Uri" | "TrackUri" => {
+ if !value.trim().is_empty() {
+ track_uri = Some(value);
+ }
+ }
+ _ => {}
+ }
+ }
+
+ if let Some(xml) = metadata_xml {
+ if let Some(metadata) = parse_track_metadata_from_didl(&xml) {
+ self.runtime.update_snapshot_with(renderer_id, |snapshot| {
+ snapshot.last_metadata = Some(metadata.clone());
+ let mut position = snapshot
+ .position
+ .clone()
+ .unwrap_or_else(|| empty_playback_position());
+ position.track_metadata = Some(xml.clone());
+ snapshot.position = Some(position);
+ });
+ let _ = self.event_tx.send(RendererEvent::MetadataChanged {
+ id: renderer_id.clone(),
+ metadata,
+ });
+ }
+ }
+
+ if track_id.is_some() || track_uri.is_some() {
+ self.runtime.update_snapshot_with(renderer_id, |snapshot| {
+ let mut position = snapshot
+ .position
+ .clone()
+ .unwrap_or_else(|| empty_playback_position());
+ if let Some(id) = track_id {
+ position.track = Some(id);
+ }
+ if let Some(uri) = track_uri.clone() {
+ position.track_uri = Some(uri);
+ }
+ snapshot.position = Some(position);
+ });
+ }
+
+ if let Some(state_str) = transport_state {
+ let playback_state = map_openhome_state(&state_str);
+ let _ = self.event_tx.send(RendererEvent::StateChanged {
+ id: renderer_id.clone(),
+ state: playback_state,
+ });
+ }
+ }
+
+ fn handle_time_properties(
+ &self,
+ renderer_id: &RendererId,
+ properties: Vec<(String, String)>,
+ ) {
+ let mut duration: Option = None;
+ let mut seconds: Option = None;
+
+ for (name, value) in properties {
+ match name.as_str() {
+ "Duration" => {
+ duration = value.trim().parse::().ok();
+ }
+ "Seconds" => {
+ seconds = value.trim().parse::().ok();
+ }
+ _ => {}
+ }
+ }
+
+ if duration.is_none() && seconds.is_none() {
+ return;
+ }
+
+ let position = self.runtime.snapshot_for(renderer_id).position;
+ let mut new_position = position.unwrap_or_else(|| empty_playback_position());
+ if let Some(d) = duration {
+ new_position.track_duration = Some(format_seconds(d));
+ }
+ if let Some(s) = seconds {
+ new_position.rel_time = Some(format_seconds(s));
+ }
+
+ self.runtime
+ .update_snapshot_with(renderer_id, |snapshot| {
+ snapshot.position = Some(new_position.clone());
+ });
+
+ let _ = self.event_tx.send(RendererEvent::PositionChanged {
+ id: renderer_id.clone(),
+ position: new_position,
+ });
+ }
+
+ fn subscribe_entry(
+ listener_port: u16,
+ http_timeout: Duration,
+ entry: &mut OpenHomeSubscriptionState,
+ ) -> anyhow::Result<()> {
+ let event_url = entry.event_sub_url.clone();
+ let (remote_host, remote_port) =
+ parse_host_port(&event_url).context("Cannot extract host for SUBSCRIBE")?;
+ let local_ip = determine_local_ip(&remote_host, remote_port)
+ .context("Cannot determine local IP for callback")?;
+
+ let callback_url = format!(
+ "http://{}:{}{}",
+ format_ip(&local_ip),
+ listener_port,
+ entry.callback_path
+ );
+
+ debug!(
+ renderer = entry.renderer.friendly_name.as_str(),
+ service = entry.service.as_str(),
+ callback = callback_url.as_str(),
+ "Subscribing to OpenHome events"
+ );
+
+ let host_header = format!("{}:{}", remote_host, remote_port);
+ let timeout_header = format!("Second-{}", OPENHOME_SUBSCRIPTION_TIMEOUT_SECS);
+ let callback_header = format!("<{}>", callback_url);
+
+ let request = http::Request::builder()
+ .method("SUBSCRIBE")
+ .uri(&event_url)
+ .header("HOST", host_header)
+ .header("CALLBACK", callback_header)
+ .header("NT", "upnp:event")
+ .header("TIMEOUT", timeout_header)
+ .body(())
+ .map_err(anyhow::Error::new)?;
+
+ let response = build_agent(http_timeout).run(request)?;
+ if !response.status().is_success() {
+ anyhow::bail!(
+ "SUBSCRIBE returned HTTP {}",
+ response.status()
+ );
+ }
+
+ let sid = response
+ .headers()
+ .get("SID")
+ .and_then(|value| value.to_str().ok())
+ .map(|s| s.to_string())
+ .ok_or_else(|| anyhow::anyhow!("SUBSCRIBE response missing SID"))?;
+ let timeout = parse_timeout(
+ response
+ .headers()
+ .get("TIMEOUT")
+ .and_then(|value| value.to_str().ok()),
+ )
+ .unwrap_or(Duration::from_secs(OPENHOME_SUBSCRIPTION_TIMEOUT_SECS));
+
+ entry.sid = Some(sid);
+ entry.expires_at = Some(Instant::now() + timeout);
+ entry.retry_after = Instant::now() + Duration::from_secs(5);
+
+ info!(
+ renderer = entry.renderer.friendly_name.as_str(),
+ service = entry.service.as_str(),
+ "Subscribed to OpenHome events (timeout {}s)",
+ timeout.as_secs()
+ );
+
+ Ok(())
+ }
+
+ fn renew_entry(
+ http_timeout: Duration,
+ entry: &mut OpenHomeSubscriptionState,
+ ) -> anyhow::Result<()> {
+ let sid = entry.sid.clone().context("Cannot renew without SID")?;
+ let request = http::Request::builder()
+ .method("SUBSCRIBE")
+ .uri(&entry.event_sub_url)
+ .header("SID", sid)
+ .header(
+ "TIMEOUT",
+ format!("Second-{}", OPENHOME_SUBSCRIPTION_TIMEOUT_SECS),
+ )
+ .body(())
+ .map_err(anyhow::Error::new)?;
+ let response = build_agent(http_timeout).run(request)?;
+ if !response.status().is_success() {
+ anyhow::bail!(
+ "SUBSCRIBE renewal failed with {}",
+ response.status()
+ );
+ }
+ let timeout = parse_timeout(
+ response
+ .headers()
+ .get("TIMEOUT")
+ .and_then(|value| value.to_str().ok()),
+ )
+ .unwrap_or(Duration::from_secs(OPENHOME_SUBSCRIPTION_TIMEOUT_SECS));
+ entry.expires_at = Some(Instant::now() + timeout);
+ info!(
+ renderer = entry.renderer.friendly_name.as_str(),
+ service = entry.service.as_str(),
+ "Renewed OpenHome subscription (timeout {}s)",
+ timeout.as_secs()
+ );
+ Ok(())
+ }
+
+ fn unsubscribe_entry(
+ http_timeout: Duration,
+ entry: &mut OpenHomeSubscriptionState,
+ ) -> anyhow::Result<()> {
+ let sid = match entry.sid.take() {
+ Some(sid) => sid,
+ None => return Ok(()),
+ };
+
+ let request = http::Request::builder()
+ .method("UNSUBSCRIBE")
+ .uri(&entry.event_sub_url)
+ .header("SID", sid)
+ .body(())
+ .map_err(anyhow::Error::new)?;
+ let response = build_agent(http_timeout).run(request)?;
+ if !response.status().is_success() {
+ warn!(
+ renderer = entry.renderer.friendly_name.as_str(),
+ service = entry.service.as_str(),
+ status = response.status().as_u16(),
+ "UNSUBSCRIBE returned non-success status"
+ );
+ }
+ Ok(())
+ }
+}
+
+#[derive(Clone, Debug, PartialEq, Eq, Hash)]
+struct OpenHomeSubscriptionKey {
+ renderer_id: RendererId,
+ service: OpenHomeServiceKind,
+}
+
+impl OpenHomeSubscriptionKey {
+ fn new(renderer_id: &RendererId, service: OpenHomeServiceKind) -> Self {
+ Self {
+ renderer_id: renderer_id.clone(),
+ service,
+ }
+ }
+}
+
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
+enum OpenHomeServiceKind {
+ Playlist,
+ Info,
+ Time,
+}
+
+impl OpenHomeServiceKind {
+ fn as_str(&self) -> &'static str {
+ match self {
+ OpenHomeServiceKind::Playlist => "playlist",
+ OpenHomeServiceKind::Info => "info",
+ OpenHomeServiceKind::Time => "time",
+ }
+ }
+}
+
+struct OpenHomeSubscriptionState {
+ renderer: RendererInfo,
+ service: OpenHomeServiceKind,
+ event_sub_url: String,
+ callback_path: String,
+ sid: Option,
+ expires_at: Option,
+ retry_after: Instant,
+}
+
+impl OpenHomeSubscriptionState {
+ fn new(renderer: RendererInfo, service: OpenHomeServiceKind, event_sub_url: String) -> Self {
+ Self {
+ callback_path: build_openhome_callback_path(&renderer.id, service),
+ renderer,
+ service,
+ event_sub_url,
+ sid: None,
+ expires_at: None,
+ retry_after: Instant::now(),
+ }
+ }
+
+ fn update(&mut self, renderer: RendererInfo, event_url: String) {
+ if self.renderer.location != renderer.location
+ || self.event_sub_url != event_url
+ {
+ self.event_sub_url = event_url;
+ self.sid = None;
+ self.expires_at = None;
+ self.retry_after = Instant::now();
+ }
+ self.renderer = renderer;
+ }
+
+ fn should_retry(&self) -> bool {
+ Instant::now() >= self.retry_after
+ }
+
+ fn defer_retry(&mut self) {
+ self.retry_after = Instant::now() + Duration::from_secs(15);
+ }
+
+ fn reset_subscription(&mut self) {
+ self.sid = None;
+ self.expires_at = None;
+ self.retry_after = Instant::now() + Duration::from_secs(5);
+ }
+}
+
+struct OpenHomeIncomingNotify {
+ path: String,
+ sid: Option,
+ body: Vec,
+}
+
+fn run_openhome_http_listener(
+ listener: TcpListener,
+ notify_tx: Sender,
+) {
+ for stream in listener.incoming() {
+ match stream {
+ Ok(mut stream) => {
+ if let Err(err) = stream.set_read_timeout(Some(Duration::from_secs(5))) {
+ warn!("Failed to set read timeout on OpenHome notify connection: {}", err);
+ }
+
+ match read_openhome_http_request(&mut stream) {
+ Ok(request) => {
+ if request.method != "NOTIFY" {
+ let _ = write_openhome_http_response(
+ &mut stream,
+ 405,
+ "Method Not Allowed",
+ );
+ continue;
+ }
+
+ let notify = OpenHomeIncomingNotify {
+ path: request.path,
+ sid: request.headers.get("sid").cloned(),
+ body: request.body,
+ };
+
+ if notify_tx.send(notify).is_err() {
+ warn!("Dropping OpenHome notify because worker channel is closed");
+ }
+ let _ = write_openhome_http_response(&mut stream, 200, "OK");
+ }
+ Err(err) => {
+ warn!("Failed to parse OpenHome notify request: {}", err);
+ let _ = write_openhome_http_response(&mut stream, 400, "Bad Request");
+ }
+ }
+ }
+ Err(err) => {
+ warn!("Incoming OpenHome notify connection failed: {}", err);
+ }
+ }
+ }
+}
+
+struct OpenHomeHttpRequest {
+ method: String,
+ path: String,
+ headers: HashMap,
+ body: Vec,
+}
+
+fn read_openhome_http_request(stream: &mut TcpStream) -> io::Result {
+ let mut reader = BufReader::new(stream.try_clone()?);
+ let mut request_line = String::new();
+ if reader.read_line(&mut request_line)? == 0 {
+ return Err(io::Error::new(
+ io::ErrorKind::UnexpectedEof,
+ "missing request line",
+ ));
+ }
+
+ let request_line = request_line.trim_end_matches(&['\r', '\n'][..]);
+ let mut parts = request_line.split_whitespace();
+ let method = parts
+ .next()
+ .ok_or_else(|| io::Error::new(io::ErrorKind::InvalidData, "missing method"))?
+ .to_ascii_uppercase();
+ let path = parts
+ .next()
+ .ok_or_else(|| io::Error::new(io::ErrorKind::InvalidData, "missing path"))?
+ .to_string();
+
+ let mut headers = HashMap::new();
+ loop {
+ let mut line = String::new();
+ let len = reader.read_line(&mut line)?;
+ if len == 0 {
+ break;
+ }
+ let trimmed = line.trim_end_matches(&['\r', '\n'][..]);
+ if trimmed.is_empty() {
+ break;
+ }
+ if let Some((name, value)) = trimmed.split_once(':') {
+ headers.insert(name.trim().to_ascii_lowercase(), value.trim().to_string());
+ }
+ }
+
+ let content_length: usize = headers
+ .get("content-length")
+ .and_then(|v| v.parse().ok())
+ .unwrap_or(0);
+
+ let mut body = vec![0u8; content_length];
+ reader.read_exact(&mut body)?;
+
+ Ok(OpenHomeHttpRequest {
+ method,
+ path,
+ headers,
+ body,
+ })
+}
+
+fn write_openhome_http_response(
+ stream: &mut TcpStream,
+ status: u16,
+ message: &str,
+) -> io::Result<()> {
+ let response = format!(
+ "HTTP/1.1 {} {}\r\nContent-Length: 0\r\nConnection: close\r\n\r\n",
+ status, message
+ );
+ stream.write_all(response.as_bytes())
+}
+
+fn build_openhome_callback_path(id: &RendererId, service: OpenHomeServiceKind) -> String {
+ let mut sanitized = String::new();
+ for ch in id.0.chars() {
+ if ch.is_ascii_alphanumeric() {
+ sanitized.push(ch);
+ } else {
+ sanitized.push('_');
+ }
+ }
+ let mut hasher = DefaultHasher::new();
+ id.hash(&mut hasher);
+ service.hash(&mut hasher);
+ let suffix = hasher.finish();
+ format!(
+ "/openhome-events/{}/{:x}",
+ service.as_str(),
+ suffix
+ )
+}
+
+fn parse_openhome_propertyset(
+ renderer_id: &RendererId,
+ service: &OpenHomeServiceKind,
+ body: &[u8],
+) -> Vec<(String, String)> {
+ let mut properties = Vec::new();
+ let reader = std::io::Cursor::new(body);
+ let Ok(root) = Element::parse(reader) else {
+ warn!(
+ renderer = renderer_id.0.as_str(),
+ service = service.as_str(),
+ "Failed to parse OpenHome notify payload"
+ );
+ return properties;
+ };
+
+ for property in root.children.iter().filter_map(|node| match node {
+ XMLNode::Element(elem) => Some(elem),
+ _ => None,
+ }) {
+ for child in property.children.iter().filter_map(|node| match node {
+ XMLNode::Element(elem) => Some(elem),
+ _ => None,
+ }) {
+ if let Some(text) = child.get_text() {
+ properties.push((child.name.clone(), text.into_owned()));
+ }
+ }
+ }
+
+ properties
+}
+
+fn is_id_array_property(name: &str) -> bool {
+ name.trim()
+ .to_ascii_lowercase()
+ .ends_with("idarray")
+}
+
+fn empty_playback_position() -> PlaybackPositionInfo {
+ PlaybackPositionInfo {
+ track: None,
+ rel_time: None,
+ abs_time: None,
+ track_duration: None,
+ track_metadata: None,
+ track_uri: None,
+ }
+}
+
+fn parse_timeout(raw: Option<&str>) -> Option {
+ let value = raw?;
+ let lower = value.trim().to_ascii_lowercase();
+ if lower == "second-infinite" {
+ return Some(Duration::from_secs(OPENHOME_SUBSCRIPTION_TIMEOUT_SECS));
+ }
+ if let Some(idx) = lower.find("second-") {
+ let number = &lower[idx + 7..];
+ if let Ok(seconds) = number.parse::() {
+ return Some(Duration::from_secs(seconds));
+ }
+ }
+ None
+}
+
+fn parse_host_port(url: &str) -> Option<(String, u16)> {
+ let default_port = if url.to_ascii_lowercase().starts_with("https://") {
+ 443
+ } else {
+ 80
+ };
+ let (_, rest) = url.split_once("://")?;
+ let mut parts = rest.splitn(2, '/');
+ let authority = parts.next()?.trim();
+ if authority.starts_with('[') {
+ let end = authority.find(']')?;
+ let host = &authority[1..end];
+ let remainder = authority.get(end + 1..).unwrap_or("");
+ let port = if let Some(stripped) = remainder.strip_prefix(':') {
+ stripped.parse().unwrap_or(default_port)
+ } else {
+ default_port
+ };
+ Some((host.to_string(), port))
+ } else if let Some((host, port)) = authority.split_once(':') {
+ Some((host.to_string(), port.parse().ok()?))
+ } else {
+ Some((authority.to_string(), default_port))
+ }
+}
+
+fn determine_local_ip(remote_host: &str, remote_port: u16) -> io::Result {
+ let is_ipv6 = remote_host.contains(':') && !remote_host.contains('.');
+ let target = if is_ipv6 {
+ format!(
+ "[{}]:{}",
+ remote_host.trim_matches(|c| c == '[' || c == ']'),
+ remote_port
+ )
+ } else {
+ format!("{}:{}", remote_host, remote_port)
+ };
+ let bind_addr = if is_ipv6 { "[::]:0" } else { "0.0.0.0:0" };
+ let socket = UdpSocket::bind(bind_addr)?;
+ socket.connect(&target)?;
+ Ok(socket.local_addr()?.ip())
+}
+
+fn format_ip(ip: &IpAddr) -> String {
+ match ip {
+ IpAddr::V4(v4) => v4.to_string(),
+ IpAddr::V6(v6) => format!("[{}]", v6),
+ }
+}
+
+fn build_agent(timeout: Duration) -> Agent {
+ Agent::config_builder()
+ .timeout_global(Some(timeout))
+ .http_status_as_error(false)
+ .allow_non_standard_methods(true)
+ .build()
+ .into()
+}
+
/// Parse "HH:MM:SS" style time strings to seconds.
///
/// Returns None for empty or sentinel values such as "NOT_IMPLEMENTED" or "-:--:--".
diff --git a/pmocontrol/src/lib.rs b/pmocontrol/src/lib.rs
index 9014cdea..a738b196 100644
--- a/pmocontrol/src/lib.rs
+++ b/pmocontrol/src/lib.rs
@@ -11,6 +11,8 @@ pub mod linkplay;
pub mod media_server;
pub mod model;
pub mod music_renderer;
+pub mod openhome_client;
+pub mod openhome_renderer;
pub mod playback_queue;
pub mod provider;
pub mod registry;
@@ -43,6 +45,7 @@ pub use media_server::{
UpnpMediaServer,
};
pub use music_renderer::MusicRenderer;
+pub use openhome_renderer::OpenHomeRenderer;
pub use playback_queue::{PlaybackItem, PlaybackQueue};
pub use rendering_control_client::RenderingControlClient;
pub use upnp_renderer::UpnpRenderer;
diff --git a/pmocontrol/src/model.rs b/pmocontrol/src/model.rs
index 89d4c74e..8b4e5baa 100644
--- a/pmocontrol/src/model.rs
+++ b/pmocontrol/src/model.rs
@@ -72,6 +72,19 @@ pub struct RendererInfo {
pub rendering_control_control_url: Option,
pub connection_manager_service_type: Option,
pub connection_manager_control_url: Option,
+ pub oh_playlist_service_type: Option,
+ pub oh_playlist_control_url: Option,
+ pub oh_playlist_event_sub_url: Option,
+ pub oh_info_service_type: Option,
+ pub oh_info_control_url: Option,
+ pub oh_info_event_sub_url: Option,
+ pub oh_time_service_type: Option,
+ pub oh_time_control_url: Option,
+ pub oh_time_event_sub_url: Option,
+ pub oh_volume_service_type: Option,
+ pub oh_volume_control_url: Option,
+ pub oh_radio_service_type: Option,
+ pub oh_radio_control_url: Option,
}
#[derive(Clone, Debug)]
diff --git a/pmocontrol/src/music_renderer.rs b/pmocontrol/src/music_renderer.rs
index 7b77319c..cd63cdfe 100644
--- a/pmocontrol/src/music_renderer.rs
+++ b/pmocontrol/src/music_renderer.rs
@@ -1,18 +1,18 @@
//! Backend-agnostic music renderer façade for PMOMusic.
//!
-//! `MusicRenderer` wraps every supported backend (UPnP AV/DLNA, LinkPlay HTTP,
-//! Arylic TCP, and the hybrid UPnP + Arylic pairing) behind a single control
-//! surface. Higher layers in PMOMusic must only interact with renderers through
-//! this type so that transport, volume, and state queries stay backend-neutral.
-//! OpenHome-only renderers are intentionally unsupported for now.
+//! `MusicRenderer` wraps every supported backend (UPnP AV/DLNA, OpenHome,
+//! LinkPlay HTTP, Arylic TCP, and the hybrid UPnP + Arylic pairing) behind a
+//! single control surface. Higher layers in PMOMusic must only interact with
+//! renderers through this type so that transport, volume, and state queries
+//! stay backend-neutral.
use std::sync::{Arc, RwLock};
use crate::capabilities::{PlaybackPositionInfo, PlaybackStatus};
use crate::model::{RendererId, RendererInfo, RendererProtocol};
use crate::{
- ArylicTcpRenderer, DeviceRegistry, LinkPlayRenderer, PlaybackPosition, PlaybackState,
- TransportControl, UpnpRenderer, VolumeControl,
+ ArylicTcpRenderer, DeviceRegistry, LinkPlayRenderer, OpenHomeRenderer, PlaybackPosition,
+ PlaybackState, TransportControl, UpnpRenderer, VolumeControl,
};
use anyhow::{Result, anyhow};
use tracing::warn;
@@ -22,6 +22,8 @@ use tracing::warn;
pub enum MusicRenderer {
/// Classic UPnP AV / DLNA renderer (AVTransport + RenderingControl).
Upnp(UpnpRenderer),
+ /// Renderer powered by OpenHome services.
+ OpenHome(OpenHomeRenderer),
/// Renderer controlled via the LinkPlay HTTP API.
LinkPlay(LinkPlayRenderer),
/// Renderer reachable through the Arylic TCP control protocol (port 8899).
@@ -48,6 +50,7 @@ impl MusicRenderer {
pub fn id(&self) -> &RendererId {
match self {
MusicRenderer::HybridUpnpArylic { arylic, .. } => arylic.id(),
+ MusicRenderer::OpenHome(r) => r.id(),
MusicRenderer::Upnp(r) => r.id(),
MusicRenderer::LinkPlay(r) => r.id(),
MusicRenderer::ArylicTcp(r) => r.id(),
@@ -58,6 +61,7 @@ impl MusicRenderer {
pub fn friendly_name(&self) -> &str {
match self {
MusicRenderer::HybridUpnpArylic { arylic, .. } => arylic.friendly_name(),
+ MusicRenderer::OpenHome(r) => r.friendly_name(),
MusicRenderer::Upnp(r) => r.friendly_name(),
MusicRenderer::LinkPlay(r) => r.friendly_name(),
MusicRenderer::ArylicTcp(r) => r.friendly_name(),
@@ -73,6 +77,7 @@ impl MusicRenderer {
pub fn info(&self) -> &RendererInfo {
match self {
MusicRenderer::HybridUpnpArylic { arylic, .. } => &arylic.info,
+ MusicRenderer::OpenHome(r) => &r.info,
MusicRenderer::Upnp(r) => &r.info,
MusicRenderer::LinkPlay(r) => &r.info,
MusicRenderer::ArylicTcp(r) => &r.info,
@@ -96,6 +101,24 @@ impl MusicRenderer {
info: RendererInfo,
registry: &Arc>,
) -> Option {
+ if matches!(info.protocol, RendererProtocol::OpenHomeOnly | RendererProtocol::Hybrid) {
+ if let Some(renderer) = {
+ let reg = registry.read().unwrap();
+ let renderer = OpenHomeRenderer::new(info.clone(), &*reg);
+ renderer.has_any_openhome_service().then_some(renderer)
+ } {
+ return Some(MusicRenderer::OpenHome(renderer));
+ }
+
+ if matches!(info.protocol, RendererProtocol::OpenHomeOnly) {
+ warn!(
+ renderer = info.friendly_name.as_str(),
+ "Renderer advertises OpenHome only but exposes no usable services"
+ );
+ return None;
+ }
+ }
+
match info.protocol {
RendererProtocol::UpnpAvOnly | RendererProtocol::Hybrid => {
let has_arylic = info.capabilities.has_arylic_tcp;
@@ -131,10 +154,7 @@ impl MusicRenderer {
info, registry,
)))
}
- RendererProtocol::OpenHomeOnly => {
- // TODO: OH plus tard
- None
- }
+ RendererProtocol::OpenHomeOnly => None,
}
}
}
@@ -145,6 +165,7 @@ impl TransportControl for MusicRenderer {
fn play_uri(&self, uri: &str, meta: &str) -> Result<()> {
match self {
MusicRenderer::Upnp(upnp) => upnp.play_uri(uri, meta),
+ MusicRenderer::OpenHome(oh) => oh.play_uri(uri, meta),
MusicRenderer::LinkPlay(lp) => lp.play_uri(uri, meta),
MusicRenderer::ArylicTcp(_) => Err(op_not_supported("play_uri", "ArylicTcp")),
MusicRenderer::HybridUpnpArylic { upnp, .. } => upnp.play_uri(uri, meta),
@@ -154,6 +175,7 @@ impl TransportControl for MusicRenderer {
fn play(&self) -> Result<()> {
match self {
MusicRenderer::Upnp(upnp) => upnp.play(),
+ MusicRenderer::OpenHome(oh) => oh.play(),
MusicRenderer::LinkPlay(lp) => lp.play(),
MusicRenderer::ArylicTcp(ary) => ary.play(),
MusicRenderer::HybridUpnpArylic { arylic, .. } => arylic.play(),
@@ -163,6 +185,7 @@ impl TransportControl for MusicRenderer {
fn pause(&self) -> Result<()> {
match self {
MusicRenderer::Upnp(upnp) => upnp.pause(),
+ MusicRenderer::OpenHome(oh) => oh.pause(),
MusicRenderer::LinkPlay(lp) => lp.pause(),
MusicRenderer::ArylicTcp(ary) => ary.pause(),
MusicRenderer::HybridUpnpArylic { arylic, .. } => arylic.pause(),
@@ -172,6 +195,7 @@ impl TransportControl for MusicRenderer {
fn stop(&self) -> Result<()> {
match self {
MusicRenderer::Upnp(upnp) => upnp.stop(),
+ MusicRenderer::OpenHome(oh) => oh.stop(),
MusicRenderer::LinkPlay(lp) => lp.stop(),
MusicRenderer::ArylicTcp(ary) => ary.stop(),
MusicRenderer::HybridUpnpArylic { arylic, .. } => arylic.stop(),
@@ -181,6 +205,7 @@ impl TransportControl for MusicRenderer {
fn seek_rel_time(&self, hhmmss: &str) -> Result<()> {
match self {
MusicRenderer::Upnp(upnp) => upnp.seek_rel_time(hhmmss),
+ MusicRenderer::OpenHome(oh) => oh.seek_rel_time(hhmmss),
MusicRenderer::LinkPlay(lp) => lp.seek_rel_time(hhmmss),
MusicRenderer::ArylicTcp(_) => Err(op_not_supported("seek_rel_time", "ArylicTcp")),
MusicRenderer::HybridUpnpArylic { upnp, .. } => upnp.seek_rel_time(hhmmss),
@@ -197,6 +222,7 @@ impl VolumeControl for MusicRenderer {
match self {
MusicRenderer::HybridUpnpArylic { arylic, .. } => arylic.volume(),
MusicRenderer::ArylicTcp(ary) => ary.volume(),
+ MusicRenderer::OpenHome(oh) => oh.volume(),
MusicRenderer::Upnp(upnp) => upnp.volume(),
MusicRenderer::LinkPlay(lp) => lp.volume(),
}
@@ -206,6 +232,7 @@ impl VolumeControl for MusicRenderer {
match self {
MusicRenderer::HybridUpnpArylic { upnp, .. } => upnp.set_volume(vol),
MusicRenderer::ArylicTcp(ary) => ary.set_volume(vol),
+ MusicRenderer::OpenHome(oh) => oh.set_volume(vol),
MusicRenderer::Upnp(upnp) => upnp.set_volume(vol),
MusicRenderer::LinkPlay(lp) => lp.set_volume(vol),
}
@@ -214,6 +241,7 @@ impl VolumeControl for MusicRenderer {
fn mute(&self) -> Result {
match self {
MusicRenderer::HybridUpnpArylic { arylic, .. } => arylic.mute(),
+ MusicRenderer::OpenHome(r) => r.mute(),
MusicRenderer::Upnp(r) => r.get_master_mute(),
MusicRenderer::LinkPlay(r) => r.mute(),
MusicRenderer::ArylicTcp(r) => r.mute(),
@@ -223,6 +251,7 @@ impl VolumeControl for MusicRenderer {
fn set_mute(&self, m: bool) -> Result<()> {
match self {
MusicRenderer::HybridUpnpArylic { arylic, .. } => arylic.set_mute(m),
+ MusicRenderer::OpenHome(r) => r.set_mute(m),
MusicRenderer::Upnp(r) => r.set_master_mute(m),
MusicRenderer::LinkPlay(r) => r.set_mute(m),
MusicRenderer::ArylicTcp(r) => r.set_mute(m),
@@ -238,6 +267,7 @@ impl PlaybackStatus for MusicRenderer {
fn playback_state(&self) -> Result {
match self {
MusicRenderer::Upnp(r) => PlaybackStatus::playback_state(r),
+ MusicRenderer::OpenHome(r) => PlaybackStatus::playback_state(r),
MusicRenderer::LinkPlay(r) => r.playback_state(),
MusicRenderer::ArylicTcp(r) => r.playback_state(),
MusicRenderer::HybridUpnpArylic { arylic, .. } => arylic.playback_state(),
@@ -251,6 +281,7 @@ impl PlaybackPosition for MusicRenderer {
fn playback_position(&self) -> Result {
match self {
MusicRenderer::Upnp(r) => r.playback_position(),
+ MusicRenderer::OpenHome(r) => r.playback_position(),
MusicRenderer::LinkPlay(r) => r.playback_position(),
MusicRenderer::ArylicTcp(r) => r.playback_position(),
MusicRenderer::HybridUpnpArylic { arylic, .. } => arylic.playback_position(),
diff --git a/pmocontrol/src/openapi.rs b/pmocontrol/src/openapi.rs
index 82c1f6fc..e2dfc3e7 100644
--- a/pmocontrol/src/openapi.rs
+++ b/pmocontrol/src/openapi.rs
@@ -22,12 +22,41 @@ pub struct RendererSummary {
pub friendly_name: String,
/// Modèle du renderer
pub model_name: String,
- /// Protocole (Upnp, Hybrid, etc.)
- pub protocol: String,
+ /// Protocole (UPnP pur, OpenHome pur, hybride)
+ pub protocol: RendererProtocolSummary,
+ /// Capacités détectées
+ pub capabilities: RendererCapabilitiesSummary,
/// Renderer en ligne
pub online: bool,
}
+/// Protocole exposé par le renderer
+#[cfg(feature = "pmoserver")]
+#[derive(Debug, Clone, Serialize, ToSchema)]
+#[serde(rename_all = "snake_case")]
+pub enum RendererProtocolSummary {
+ Upnp,
+ Openhome,
+ Hybrid,
+}
+
+/// Drapeaux de capacités renderer (transport, volume, services OpenHome, etc.)
+#[cfg(feature = "pmoserver")]
+#[derive(Debug, Clone, Serialize, ToSchema)]
+pub struct RendererCapabilitiesSummary {
+ pub has_avtransport: bool,
+ pub has_avtransport_set_next: bool,
+ pub has_rendering_control: bool,
+ pub has_connection_manager: bool,
+ pub has_linkplay_http: bool,
+ pub has_arylic_tcp: bool,
+ pub has_oh_playlist: bool,
+ pub has_oh_volume: bool,
+ pub has_oh_info: bool,
+ pub has_oh_time: bool,
+ pub has_oh_radio: bool,
+}
+
/// État détaillé d'un renderer
#[cfg(feature = "pmoserver")]
#[derive(Debug, Clone, Serialize, ToSchema)]
@@ -100,6 +129,55 @@ pub struct QueueSnapshot {
pub current_index: Option,
}
+// ============================================================================
+// OPENHOME PLAYLIST
+// ============================================================================
+
+/// Snapshot de la playlist native OpenHome
+#[cfg(feature = "pmoserver")]
+#[derive(Debug, Clone, Serialize, ToSchema)]
+pub struct OpenHomePlaylistSnapshot {
+ /// ID du renderer concerné
+ pub renderer_id: String,
+ /// ID courant dans la playlist (si connu)
+ pub current_id: Option,
+ /// Tracks présents dans la playlist native
+ pub tracks: Vec,
+}
+
+/// Track issue de la playlist native OpenHome
+#[cfg(feature = "pmoserver")]
+#[derive(Debug, Clone, Serialize, ToSchema)]
+pub struct OpenHomePlaylistTrack {
+ /// ID interne OpenHome
+ pub id: u32,
+ /// URI du flux
+ pub uri: String,
+ /// Titre
+ pub title: Option,
+ /// Artiste
+ pub artist: Option,
+ /// Album
+ pub album: Option,
+ /// Pochette (si disponible)
+ pub album_art_uri: Option,
+}
+
+/// Requête pour ajouter un track à la playlist OpenHome
+#[cfg(feature = "pmoserver")]
+#[derive(Debug, Clone, Deserialize, ToSchema)]
+pub struct OpenHomePlaylistAddRequest {
+ /// URI du flux à insérer
+ pub uri: String,
+ /// Métadonnées DIDL-Lite complètes
+ pub metadata: String,
+ /// ID devant lequel insérer (None => fin de playlist)
+ pub after_id: Option,
+ /// Si true, démarre immédiatement la lecture du track inséré
+ #[serde(default)]
+ pub play: bool,
+}
+
// ============================================================================
// MEDIA SERVERS
// ============================================================================
@@ -280,6 +358,10 @@ GET /control/servers/{server_id}/containers/{container_id}
crate::pmoserver_ext::get_renderer_state,
crate::pmoserver_ext::get_renderer_queue,
crate::pmoserver_ext::get_renderer_binding,
+ crate::pmoserver_ext::get_openhome_playlist,
+ crate::pmoserver_ext::clear_openhome_playlist,
+ crate::pmoserver_ext::add_openhome_playlist_item,
+ crate::pmoserver_ext::play_openhome_track,
crate::pmoserver_ext::play_renderer,
crate::pmoserver_ext::pause_renderer,
crate::pmoserver_ext::stop_renderer,
@@ -300,10 +382,15 @@ GET /control/servers/{server_id}/containers/{container_id}
),
components(schemas(
RendererSummary,
+ RendererProtocolSummary,
+ RendererCapabilitiesSummary,
RendererState,
AttachedPlaylistInfo,
QueueItem,
QueueSnapshot,
+ OpenHomePlaylistSnapshot,
+ OpenHomePlaylistTrack,
+ OpenHomePlaylistAddRequest,
MediaServerSummary,
ContainerEntry,
BrowseResponse,
diff --git a/pmocontrol/src/openhome_client.rs b/pmocontrol/src/openhome_client.rs
new file mode 100644
index 00000000..bbb0fa45
--- /dev/null
+++ b/pmocontrol/src/openhome_client.rs
@@ -0,0 +1,693 @@
+use anyhow::{Result, anyhow};
+use crate::model::TrackMetadata;
+use crate::soap_client::{SoapCallResult, invoke_upnp_action};
+use pmoupnp::soap::SoapEnvelope;
+use xmltree::{Element, XMLNode};
+
+#[derive(Debug, Clone)]
+pub struct OhTrackEntry {
+ pub id: u32,
+ pub uri: String,
+ pub metadata_xml: String,
+}
+
+#[derive(Debug, Clone)]
+pub struct OhInfoTrack {
+ pub uri: String,
+ pub metadata_xml: Option,
+}
+
+impl OhInfoTrack {
+ pub fn metadata(&self) -> Option {
+ self.metadata_xml
+ .as_deref()
+ .and_then(parse_track_metadata_from_didl)
+ }
+}
+
+#[derive(Debug, Clone)]
+pub struct OhTimePosition {
+ pub track_count: u32,
+ pub duration_secs: u32,
+ pub elapsed_secs: u32,
+}
+
+#[derive(Debug, Clone)]
+pub struct OhRadioChannel {
+ pub uri: String,
+ pub metadata_xml: Option,
+}
+
+#[derive(Debug, Clone)]
+pub struct OhPlaylistClient {
+ pub control_url: String,
+ pub service_type: String,
+}
+
+impl OhPlaylistClient {
+ pub fn new(control_url: String, service_type: String) -> Self {
+ Self {
+ control_url,
+ service_type,
+ }
+ }
+
+ pub fn read_list(&self, id_list: &[u32]) -> Result> {
+ if id_list.is_empty() {
+ return Ok(Vec::new());
+ }
+
+ let id_list_csv = id_list
+ .iter()
+ .map(|id| id.to_string())
+ .collect::>()
+ .join(",");
+ let args = [("aIdList", id_list_csv.as_str())];
+
+ let call_result = invoke_upnp_action(
+ &self.control_url,
+ &self.service_type,
+ "ReadList",
+ &args,
+ )?;
+
+ let envelope = ensure_success("ReadList", &call_result)?;
+ let response = find_child_with_suffix(&envelope.body.content, "ReadListResponse")
+ .ok_or_else(|| anyhow!("Missing ReadListResponse element in SOAP body"))?;
+
+ let track_list_xml = extract_child_text(response, "aTrackList")?;
+ parse_track_list(&track_list_xml)
+ }
+
+ pub fn insert(&self, after_id: u32, uri: &str, metadata: &str) -> Result {
+ let after_id_str = after_id.to_string();
+ let args = [
+ ("aAfterId", after_id_str.as_str()),
+ ("aUri", uri),
+ ("aMetadata", metadata),
+ ];
+
+ let call_result = invoke_upnp_action(
+ &self.control_url,
+ &self.service_type,
+ "Insert",
+ &args,
+ )?;
+
+ let envelope = ensure_success("Insert", &call_result)?;
+ let response = find_child_with_suffix(&envelope.body.content, "InsertResponse")
+ .ok_or_else(|| anyhow!("Missing InsertResponse element in SOAP body"))?;
+ let new_id_text = extract_child_text(response, "aNewId")?;
+ let new_id = new_id_text
+ .parse::()
+ .map_err(|_| anyhow!("Invalid aNewId value: {}", new_id_text))?;
+
+ Ok(new_id)
+ }
+
+ pub fn play_id(&self, id: u32) -> Result<()> {
+ let id_str = id.to_string();
+ let args = [("aId", id_str.as_str())];
+
+ let call_result = invoke_upnp_action(
+ &self.control_url,
+ &self.service_type,
+ "PlayId",
+ &args,
+ )?;
+
+ handle_action_response("PlayId", &call_result)
+ }
+
+ pub fn play(&self) -> Result<()> {
+ let call_result =
+ invoke_upnp_action(&self.control_url, &self.service_type, "Play", &[])?;
+ handle_action_response("Play", &call_result)
+ }
+
+ pub fn pause(&self) -> Result<()> {
+ let call_result =
+ invoke_upnp_action(&self.control_url, &self.service_type, "Pause", &[])?;
+ handle_action_response("Pause", &call_result)
+ }
+
+ pub fn stop(&self) -> Result<()> {
+ let call_result =
+ invoke_upnp_action(&self.control_url, &self.service_type, "Stop", &[])?;
+ handle_action_response("Stop", &call_result)
+ }
+
+ pub fn next(&self) -> Result<()> {
+ let call_result =
+ invoke_upnp_action(&self.control_url, &self.service_type, "Next", &[])?;
+ handle_action_response("Next", &call_result)
+ }
+
+ pub fn previous(&self) -> Result<()> {
+ let call_result =
+ invoke_upnp_action(&self.control_url, &self.service_type, "Previous", &[])?;
+ handle_action_response("Previous", &call_result)
+ }
+
+ pub fn seek_second_absolute(&self, second: u32) -> Result<()> {
+ let second_str = second.to_string();
+ let args = [("aSecond", second_str.as_str())];
+ let call_result = invoke_upnp_action(
+ &self.control_url,
+ &self.service_type,
+ "SeekSecondAbsolute",
+ &args,
+ )?;
+
+ handle_action_response("SeekSecondAbsolute", &call_result)
+ }
+
+ pub fn delete_id(&self, id: u32) -> Result<()> {
+ let id_str = id.to_string();
+ let args = [("aId", id_str.as_str())];
+
+ let call_result = invoke_upnp_action(
+ &self.control_url,
+ &self.service_type,
+ "DeleteId",
+ &args,
+ )?;
+
+ handle_action_response("DeleteId", &call_result)
+ }
+
+ pub fn delete_all(&self) -> Result<()> {
+ let call_result =
+ invoke_upnp_action(&self.control_url, &self.service_type, "DeleteAll", &[])?;
+ handle_action_response("DeleteAll", &call_result)
+ }
+
+ pub fn tracks_max(&self) -> Result {
+ let call_result = invoke_upnp_action(
+ &self.control_url,
+ &self.service_type,
+ "TracksMax",
+ &[],
+ )?;
+
+ let envelope = ensure_success("TracksMax", &call_result)?;
+ let response = find_child_with_suffix(&envelope.body.content, "TracksMaxResponse")
+ .ok_or_else(|| anyhow!("Missing TracksMaxResponse element in SOAP body"))?;
+ let value_text = extract_child_text(response, "aValue")?;
+ let value = value_text
+ .parse::()
+ .map_err(|_| anyhow!("Invalid TracksMax value: {}", value_text))?;
+
+ Ok(value)
+ }
+
+ pub fn id_array(&self) -> Result> {
+ let call_result = invoke_upnp_action(
+ &self.control_url,
+ &self.service_type,
+ "IdArray",
+ &[],
+ )?;
+ let envelope = ensure_success("IdArray", &call_result)?;
+ let response = find_child_with_suffix(&envelope.body.content, "IdArrayResponse")
+ .ok_or_else(|| anyhow!("Missing IdArrayResponse element in SOAP body"))?;
+
+ let array_text = extract_child_text_any(response, &["aArray", "aIdArray"])?;
+ let bytes = decode_base64(&array_text)?;
+ if bytes.len() % 4 != 0 {
+ return Err(anyhow!(
+ "Invalid IdArray payload length {} (expected multiple of 4)",
+ bytes.len()
+ ));
+ }
+
+ let mut ids = Vec::with_capacity(bytes.len() / 4);
+ for chunk in bytes.chunks_exact(4) {
+ ids.push(u32::from_be_bytes([chunk[0], chunk[1], chunk[2], chunk[3]]));
+ }
+ Ok(ids)
+ }
+
+ pub fn read_all_tracks(&self) -> Result> {
+ let ids = self.id_array()?;
+ if ids.is_empty() {
+ return Ok(Vec::new());
+ }
+
+ const MAX_BATCH: usize = 64;
+ let mut entries = Vec::with_capacity(ids.len());
+ for chunk in ids.chunks(MAX_BATCH) {
+ let mut batch = self.read_list(chunk)?;
+ entries.append(&mut batch);
+ }
+ Ok(entries)
+ }
+}
+
+#[derive(Debug, Clone)]
+pub struct OhInfoClient {
+ pub control_url: String,
+ pub service_type: String,
+}
+
+impl OhInfoClient {
+ pub fn new(control_url: String, service_type: String) -> Self {
+ Self {
+ control_url,
+ service_type,
+ }
+ }
+
+ pub fn track(&self) -> Result {
+ let call_result =
+ invoke_upnp_action(&self.control_url, &self.service_type, "Track", &[])?;
+
+ let envelope = ensure_success("Track", &call_result)?;
+ let response = find_child_with_suffix(&envelope.body.content, "TrackResponse")
+ .ok_or_else(|| anyhow!("Missing TrackResponse element in SOAP body"))?;
+
+ let uri = extract_child_text(response, "aUri")?;
+ let metadata_xml = extract_child_text_optional(response, "aMetadata")
+ .unwrap_or(None)
+ .filter(|s| !s.is_empty());
+
+ Ok(OhInfoTrack { uri, metadata_xml })
+ }
+
+ pub fn next(&self) -> Result {
+ let call_result =
+ invoke_upnp_action(&self.control_url, &self.service_type, "Next", &[])?;
+
+ let envelope = ensure_success("Next", &call_result)?;
+ let response = find_child_with_suffix(&envelope.body.content, "NextResponse")
+ .ok_or_else(|| anyhow!("Missing NextResponse element in SOAP body"))?;
+
+ let uri = extract_child_text(response, "aUri")?;
+ let metadata_xml = extract_child_text_optional(response, "aMetadata")
+ .unwrap_or(None)
+ .filter(|s| !s.is_empty());
+
+ Ok(OhInfoTrack { uri, metadata_xml })
+ }
+
+ pub fn id(&self) -> Result {
+ let call_result =
+ invoke_upnp_action(&self.control_url, &self.service_type, "Id", &[])?;
+
+ let envelope = ensure_success("Id", &call_result)?;
+ let response = find_child_with_suffix(&envelope.body.content, "IdResponse")
+ .ok_or_else(|| anyhow!("Missing IdResponse element in SOAP body"))?;
+ let id_text = extract_child_text(response, "aId")?;
+ let id = id_text
+ .parse::()
+ .map_err(|_| anyhow!("Invalid Info.Id value: {}", id_text))?;
+ Ok(id)
+ }
+
+ pub fn transport_state(&self) -> Result {
+ let call_result = invoke_upnp_action(
+ &self.control_url,
+ &self.service_type,
+ "TransportState",
+ &[],
+ )?;
+
+ let envelope = ensure_success("TransportState", &call_result)?;
+ let response =
+ find_child_with_suffix(&envelope.body.content, "TransportStateResponse")
+ .ok_or_else(|| anyhow!("Missing TransportStateResponse element in SOAP body"))?;
+ let state = extract_child_text(response, "aState")?;
+ Ok(state)
+ }
+
+ pub fn read_current_metadata(&self) -> Result