Merge pull request #192 from DSheirer/189-shoutcast-ultravox-UTF8-encoding

Resolves #189 - add UTF-8 encoding to shoutcast v2
This commit is contained in:
Denny Sheirer
2017-02-12 12:45:10 +00:00
committed by GitHub
2 changed files with 38 additions and 27 deletions

View File

@@ -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("<?xml version=\"1.0\" encoding=\"UTF-8\" ?><metadata>");
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("</metadata>");

View File

@@ -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("</").append(getXMLTag()).append(">");
return sb.toString();