From 9f01678b00cfe3eaa9690232b0479d9729c4c73f Mon Sep 17 00:00:00 2001 From: Denny Date: Sun, 12 Feb 2017 07:43:51 -0500 Subject: [PATCH] Resolves #189 - add UTF-8 encoding to shoutcast v2 (ultravox) XML metadata update values. --- .../v2/ShoutcastV2AudioBroadcaster.java | 58 +++++++++++-------- .../v2/ultravox/UltravoxMetadata.java | 7 ++- 2 files changed, 38 insertions(+), 27 deletions(-) diff --git a/src/audio/broadcast/shoutcast/v2/ShoutcastV2AudioBroadcaster.java b/src/audio/broadcast/shoutcast/v2/ShoutcastV2AudioBroadcaster.java index 786f6728..cd4cadaf 100644 --- a/src/audio/broadcast/shoutcast/v2/ShoutcastV2AudioBroadcaster.java +++ b/src/audio/broadcast/shoutcast/v2/ShoutcastV2AudioBroadcaster.java @@ -50,6 +50,7 @@ import properties.SystemProperties; import util.ThreadPool; import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.net.ConnectException; import java.net.InetSocketAddress; import java.util.ArrayList; @@ -244,43 +245,50 @@ public class ShoutcastV2AudioBroadcaster extends AudioBroadcaster implements IBr sb.append(""); - sb.append(UltravoxMetadata.ALBUM_TITLE.asXML(getConfiguration().getName())); - - sb.append(UltravoxMetadata.BROADCAST_CLIENT_APPLICATION.asXML(SystemProperties.getInstance().getApplicationName())); - - if(getConfiguration().hasGenre()) + try { - sb.append(UltravoxMetadata.GENRE.asXML(getConfiguration().getGenre())); - } + sb.append(UltravoxMetadata.ALBUM_TITLE.asXML(getConfiguration().getName())); - if(getConfiguration().hasURL()) - { - sb.append(UltravoxMetadata.URL.asXML(getConfiguration().getURL())); - } + sb.append(UltravoxMetadata.BROADCAST_CLIENT_APPLICATION.asXML(SystemProperties.getInstance().getApplicationName())); - if(metadata != null) - { - if(metadata.getPrimaryAddressTo().hasAlias()) + if(getConfiguration().hasGenre()) { - sb.append(UltravoxMetadata.TITLE_2.asXML(metadata.getPrimaryAddressTo().getAlias().getName())); - } - else if(metadata.getPrimaryAddressTo().hasIdentifier()) - { - sb.append(UltravoxMetadata.TITLE_2.asXML(metadata.getPrimaryAddressTo().getIdentifier())); + sb.append(UltravoxMetadata.GENRE.asXML(getConfiguration().getGenre())); } - if(metadata.getPrimaryAddressFrom().hasAlias()) + if(getConfiguration().hasURL()) { - sb.append(UltravoxMetadata.TITLE_3.asXML("From:" + metadata.getPrimaryAddressFrom().getAlias().getName())); + sb.append(UltravoxMetadata.URL.asXML(getConfiguration().getURL())); } - else if(metadata.getPrimaryAddressFrom().hasIdentifier()) + + if(metadata != null) { - sb.append(UltravoxMetadata.TITLE_3.asXML("From:" + metadata.getPrimaryAddressFrom().getIdentifier())); + if(metadata.getPrimaryAddressTo().hasAlias()) + { + sb.append(UltravoxMetadata.TITLE_2.asXML(metadata.getPrimaryAddressTo().getAlias().getName())); + } + else if(metadata.getPrimaryAddressTo().hasIdentifier()) + { + sb.append(UltravoxMetadata.TITLE_2.asXML(metadata.getPrimaryAddressTo().getIdentifier())); + } + + if(metadata.getPrimaryAddressFrom().hasAlias()) + { + sb.append(UltravoxMetadata.TITLE_3.asXML("From:" + metadata.getPrimaryAddressFrom().getAlias().getName())); + } + else if(metadata.getPrimaryAddressFrom().hasIdentifier()) + { + sb.append(UltravoxMetadata.TITLE_3.asXML("From:" + metadata.getPrimaryAddressFrom().getIdentifier())); + } + } + else + { + sb.append(UltravoxMetadata.TITLE_2.asXML("Scanning ...")); } } - else + catch(UnsupportedEncodingException uee) { - sb.append(UltravoxMetadata.TITLE_2.asXML("Scanning ...")); + mLog.error("UTF-8 Encoding is not supported - shoutcast/ultravox metadata will not be updated"); } sb.append(""); diff --git a/src/audio/broadcast/shoutcast/v2/ultravox/UltravoxMetadata.java b/src/audio/broadcast/shoutcast/v2/ultravox/UltravoxMetadata.java index 73d21cb3..6a124355 100644 --- a/src/audio/broadcast/shoutcast/v2/ultravox/UltravoxMetadata.java +++ b/src/audio/broadcast/shoutcast/v2/ultravox/UltravoxMetadata.java @@ -18,6 +18,9 @@ ******************************************************************************/ package audio.broadcast.shoutcast.v2.ultravox; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; + public enum UltravoxMetadata { ALBUM_TITLE("TALB"), @@ -58,11 +61,11 @@ public enum UltravoxMetadata * @param value to enclose in XML tags * @return xml tag wrapped value */ - public String asXML(String value) + public String asXML(String value) throws UnsupportedEncodingException { StringBuilder sb = new StringBuilder(); sb.append("<").append(getXMLTag()).append(">"); - sb.append(value); + sb.append(URLEncoder.encode(value, "UTF-8")); sb.append(""); return sb.toString();