From 33f62933c59ca9e5831acc4fd12a59fbc66f2402 Mon Sep 17 00:00:00 2001 From: Jan-Pascal van Best Date: Tue, 11 Jun 2013 14:33:53 +0200 Subject: [PATCH] Added fetch-channel-logos configuration option (fixes #12) --- src/main/java/org/vanbest/xmltv/Channel.java | 16 ++++++++++------ src/main/java/org/vanbest/xmltv/Config.java | 10 +++++++++- src/main/java/org/vanbest/xmltv/Horizon.java | 20 ++++++++++---------- src/main/java/org/vanbest/xmltv/Main.java | 4 ++-- src/main/java/org/vanbest/xmltv/RTL.java | 5 ++--- src/main/java/org/vanbest/xmltv/TvGids.java | 6 +++--- 6 files changed, 36 insertions(+), 25 deletions(-) diff --git a/src/main/java/org/vanbest/xmltv/Channel.java b/src/main/java/org/vanbest/xmltv/Channel.java index 13638ef..68e600a 100644 --- a/src/main/java/org/vanbest/xmltv/Channel.java +++ b/src/main/java/org/vanbest/xmltv/Channel.java @@ -34,7 +34,9 @@ public class Channel { static Channel getChannel(int source, String id, String name, String iconUrl) { Channel c = new Channel(source, id); c.names.add(name); - c.icons.add(new Icon(iconUrl)); + if (iconUrl != null) { + c.icons.add(new Icon(iconUrl)); + } return c; } @@ -46,7 +48,7 @@ public class Channel { return EPGSourceFactory.newInstance().getChannelSourceName(source); } - public void serialize(XMLStreamWriter writer) throws XMLStreamException { + public void serialize(XMLStreamWriter writer, boolean writeLogos) throws XMLStreamException { writer.writeStartElement("channel"); writer.writeAttribute("id", getXmltvChannelId()); for (String name : names) { @@ -55,9 +57,11 @@ public class Channel { writer.writeCharacters(name); writer.writeEndElement(); } - for (Icon i : icons) { - i.serialize(writer); - } + if (writeLogos) { + for (Icon i : icons) { + i.serialize(writer); + } + } for (String url : urls) { writer.writeStartElement("url"); writer.writeCharacters(url); @@ -79,4 +83,4 @@ public class Channel { public String toString() { return "Channel " + source + "::" + id + " (" + defaultName() + ")"; } -} \ No newline at end of file +} diff --git a/src/main/java/org/vanbest/xmltv/Config.java b/src/main/java/org/vanbest/xmltv/Config.java index 09e5834..1bbd9eb 100644 --- a/src/main/java/org/vanbest/xmltv/Config.java +++ b/src/main/java/org/vanbest/xmltv/Config.java @@ -1,7 +1,7 @@ package org.vanbest.xmltv; /* - Copyright (c) 2012 Jan-Pascal van Best + Copyright (c) 2012,2013 Jan-Pascal van Best This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -45,6 +45,7 @@ public class Config { public String cacheDbHandle; public String cacheDbUser; public String cacheDbPassword; + public boolean fetchLogos; // not stored (yet) public boolean joinKijkwijzerRatings = true; @@ -81,6 +82,7 @@ public class Config { result.setCacheFile(cachefile); result.cacheDbUser = "SA"; result.cacheDbPassword = ""; + result.fetchLogos= true; return result; } @@ -159,6 +161,7 @@ public class Config { out.println("cache-db-handle: " + escape(cacheDbHandle)); out.println("cache-db-user: " + escape(cacheDbUser)); out.println("cache-db-password: " + escape(cacheDbPassword)); + out.println("fetch-channel-logos: " + (fetchLogos?"yes":"no")); out.println("nice-time-milliseconds: " + niceMilliseconds); for (Channel c : channels) { // FIXME: handle multiple channels names, icons and urls @@ -331,6 +334,11 @@ public class Config { result.cacheDbPassword = parts.get(1); } else if (key.equals("nice-time-milliseconds")) { result.niceMilliseconds = Integer.parseInt(parts.get(1)); + } else if (key.equals("fetch-channel-logos")) { + String value = parts.get(1).toLowerCase(); + result.fetchLogos = (value.equals("yes") || + value.equals("true") || + value.equals("1")) ; } else { logger.error("Unknown key " + key + " in config file!"); } diff --git a/src/main/java/org/vanbest/xmltv/Horizon.java b/src/main/java/org/vanbest/xmltv/Horizon.java index 31f49ef..149d406 100644 --- a/src/main/java/org/vanbest/xmltv/Horizon.java +++ b/src/main/java/org/vanbest/xmltv/Horizon.java @@ -125,15 +125,15 @@ public class Horizon extends AbstractEPGSource implements EPGSource { // Use the largest available station logo as icon JSONArray images = station.getJSONArray("images"); String icon = ""; - int maxSize = 0; - for( int j=0; jmaxSize) { - icon = image.getString("url"); - maxSize = image.getInt("width"); - } - } + int maxSize = 0; + for( int j=0; jmaxSize) { + icon = image.getString("url"); + maxSize = image.getInt("width"); + } + } Channel c = Channel.getChannel(getId(), Long.toString(id), name, icon); result.add(c); @@ -325,7 +325,7 @@ public class Horizon extends AbstractEPGSource implements EPGSource { // List my_channels = channels; List my_channels = channels.subList(0, 5); for (Channel c : my_channels) { - c.serialize(writer); + c.serialize(writer, true); } writer.flush(); for(int day=0; day<5; day++) { diff --git a/src/main/java/org/vanbest/xmltv/Main.java b/src/main/java/org/vanbest/xmltv/Main.java index 6f77b7c..d042d93 100644 --- a/src/main/java/org/vanbest/xmltv/Main.java +++ b/src/main/java/org/vanbest/xmltv/Main.java @@ -1,7 +1,7 @@ package org.vanbest.xmltv; /* - Copyright (c) 2012 Jan-Pascal van Best + Copyright (c) 2012,2013 Jan-Pascal van Best This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -119,7 +119,7 @@ public class Main { for (Channel c : config.channels) if (c.enabled) - c.serialize(writer); + c.serialize(writer, config.fetchLogos); for (int day = offset; day < offset + days; day++) { if (!config.quiet) diff --git a/src/main/java/org/vanbest/xmltv/RTL.java b/src/main/java/org/vanbest/xmltv/RTL.java index 5d59a05..ed1e09b 100644 --- a/src/main/java/org/vanbest/xmltv/RTL.java +++ b/src/main/java/org/vanbest/xmltv/RTL.java @@ -166,8 +166,7 @@ public class RTL extends AbstractEPGSource implements EPGSource { JSONArray j = (JSONArray) o.get(k); String id = genericChannelId(k.toString()); String name = (String) j.get(0); - String icon = icon_url + id + ".gif"; - + String icon = icon_url + id + ".gif"; Channel c = Channel.getChannel(getId(), id, name, icon); result.add(c); } @@ -497,7 +496,7 @@ public class RTL extends AbstractEPGSource implements EPGSource { writer.writeCharacters("\n"); writer.writeStartElement("tv"); for (Channel c : channels) { - c.serialize(writer); + c.serialize(writer, true); } writer.flush(); // List programmes = diff --git a/src/main/java/org/vanbest/xmltv/TvGids.java b/src/main/java/org/vanbest/xmltv/TvGids.java index f315089..0c7a6a5 100644 --- a/src/main/java/org/vanbest/xmltv/TvGids.java +++ b/src/main/java/org/vanbest/xmltv/TvGids.java @@ -140,8 +140,8 @@ public class TvGids extends AbstractEPGSource implements EPGSource { int id = zender.getInt("id"); String name = org.apache.commons.lang.StringEscapeUtils .unescapeHtml(zender.getString("name")); - String icon = "http://tvgidsassets.nl/img/channels/53x27/" + id - + ".png"; + String icon = "http://tvgidsassets.nl/img/channels/53x27/" + id + + ".png"; Channel c = Channel.getChannel(getId(), Integer.toString(id), name, icon); result.add(c); @@ -445,7 +445,7 @@ public class TvGids extends AbstractEPGSource implements EPGSource { // List my_channels = channels; List my_channels = channels.subList(0, 15); for (Channel c : my_channels) { - c.serialize(writer); + c.serialize(writer, true); } writer.flush(); List programmes = gids.getProgrammes(my_channels, 2); -- 2.39.5