From 36952413d776cadc487782e6ccc3624fec43d9fd Mon Sep 17 00:00:00 2001
From: Kai Sommerfeld <kai.sommerfeld@gmx.com>
Date: Thu, 24 Sep 2020 16:34:28 +0200
Subject: [filesystem] Shoutcast: Set songtitle and artist from SAM Cast meta
 data.

---
 xbmc/filesystem/ShoutcastFile.cpp | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/xbmc/filesystem/ShoutcastFile.cpp b/xbmc/filesystem/ShoutcastFile.cpp
index cb1d81c319..93ffde7e0b 100644
--- a/xbmc/filesystem/ShoutcastFile.cpp
+++ b/xbmc/filesystem/ShoutcastFile.cpp
@@ -23,6 +23,7 @@
 #include "utils/JSONVariantParser.h"
 #include "utils/RegExp.h"
 #include "utils/StringUtils.h"
+#include "utils/UrlOptions.h"
 
 #include <climits>
 
@@ -220,6 +221,22 @@ bool CShoutcastFile::ExtractTagInfo(const char* buf)
             }
           }
         }
+        else if (StringUtils::StartsWithNoCase(streamUrlData, "&"))
+        {
+          // Check for SAM Cast meta data.
+          // Example: StreamUrl='&artist=RECLAM&title=BOLORDURAN%2017&album=&duration=17894&songtype=S&overlay=no&buycd=&website=&picture='
+
+          CUrlOptions urlOptions(streamUrlData);
+          const CUrlOptions::UrlOptions& options = urlOptions.GetOptions();
+
+          auto it = options.find("artist");
+          if (it != options.end())
+            artistInfo = (*it).second.asString();
+
+          it = options.find("title");
+          if (it != options.end())
+            title = (*it).second.asString();
+        }
       }
 
       if (artistInfo.empty() || title.empty())
-- 
cgit v1.2.3