From dc9c2f3fe8b07d7fa59cd5ded70ebaba2615a706 Mon Sep 17 00:00:00 2001 From: Mark Hilbush Date: Fri, 26 Feb 2021 13:51:58 -0500 Subject: [PATCH] [squeezebox] Fix for Spotify and Tidal favorites (#10244) Signed-off-by: Mark Hilbush --- .../internal/handler/SqueezeBoxServerHandler.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/bundles/org.openhab.binding.squeezebox/src/main/java/org/openhab/binding/squeezebox/internal/handler/SqueezeBoxServerHandler.java b/bundles/org.openhab.binding.squeezebox/src/main/java/org/openhab/binding/squeezebox/internal/handler/SqueezeBoxServerHandler.java index a8e8c1d92657b..1f7cbd6d04923 100644 --- a/bundles/org.openhab.binding.squeezebox/src/main/java/org/openhab/binding/squeezebox/internal/handler/SqueezeBoxServerHandler.java +++ b/bundles/org.openhab.binding.squeezebox/src/main/java/org/openhab/binding/squeezebox/internal/handler/SqueezeBoxServerHandler.java @@ -961,12 +961,14 @@ private void handleFavorites(String message) { List favorites = new ArrayList<>(); Favorite f = null; + boolean isTypePlaylist = false; for (String part : messageParts) { // Favorite ID (in form xxxxxxxxx.n) if (part.startsWith("id%3A")) { String id = part.substring("id%3A".length()); f = new Favorite(id); favorites.add(f); + isTypePlaylist = false; } // Favorite name else if (part.startsWith("name%3A")) { @@ -974,12 +976,15 @@ else if (part.startsWith("name%3A")) { if (f != null) { f.name = name; } + } else if (part.equals("type%3Aplaylist")) { + isTypePlaylist = true; } // When "1", favorite is a submenu with additional favorites else if (part.startsWith("hasitems%3A")) { boolean hasitems = "1".matches(part.substring("hasitems%3A".length())); if (f != null) { - if (hasitems) { + // Except for some favorites (e.g. Spotify) use hasitems:1 and type:playlist + if (hasitems && isTypePlaylist == false) { // Skip subfolders favorites.remove(f); f = null;