import org.apache.log4j.Logger;\r
\r
public class Channel {\r
- String id;\r
+ String id; // Internal id, used by EPG provider\r
+ String xmltv; // xmltv id such as '1.tvgids.nl' or 'Nederland1.horizon.tv'\r
List<String> names; // at least one name is obligatory\r
List<Icon> icons;\r
List<String> urls;\r
int source;\r
static Logger logger = Logger.getLogger(Channel.class);\r
\r
- protected Channel(int source, String id) {\r
+ protected Channel(int source, String id, String xmltv) {\r
this.id = id;\r
this.source = source;\r
+ this.xmltv = xmltv;\r
names = new ArrayList<String>();\r
icons = new ArrayList<Icon>();\r
urls = new ArrayList<String>();\r
return names.get(0);\r
}\r
\r
- static Channel getChannel(int source, String id, String name) {\r
- Channel c;\r
- if(EPGSourceFactory.getChannelSourceName(source).equals(Horizon.NAME)) {\r
- long horizonId=Long.parseLong(id);\r
- c = new Horizon.HorizonChannel(source, id, horizonId);\r
- } else {\r
- c = new Channel(source, id);\r
- }\r
+ static Channel getChannel(int source, String id, String xmltv, String name) {\r
+ Channel c = new Channel(source, id, xmltv);\r
c.names.add(name);\r
return c;\r
}\r
\r
+ // Use default xmltvid with id+"."+sourceName\r
+ static Channel getChannel(int source, String id, String name) {\r
+ String xmltv = id + "." + EPGSourceFactory.getChannelSourceName(source);\r
+ Channel c = new Channel(source, id, xmltv);\r
+ c.names.add(name);\r
+ return c;\r
+ }\r
+/*\r
static Channel getChannel(int source, String id, String name, String extraConfig) {\r
Channel c;\r
if(EPGSourceFactory.getChannelSourceName(source).equals(Horizon.NAME)) {\r
c.names.add(name);\r
return c;\r
}\r
-\r
+*/\r
public String getXmltvChannelId() {\r
- return id + "." + getSourceName();\r
+ return xmltv; // id + "." + getSourceName();\r
}\r
\r
public String getSourceName() {\r
- return EPGSourceFactory.newInstance().getChannelSourceName(source);\r
+ return EPGSourceFactory.getChannelSourceName(source);\r
}\r
\r
public void serialize(XMLStreamWriter writer, boolean writeLogos) throws XMLStreamException {\r
public void writeConfig(PrintWriter out) {\r
// FIXME: handle multiple channels names, icons and urls\r
out.print("channel: " + getSourceName() + ": "\r
+ + Config.escape(xmltv) + ": "\r
+ id + ": "\r
+ (enabled ? "enabled" : "disabled") + ": "\r
+ Config.escape(defaultName()) + ": "\r
case 2:\r
case 3:\r
case 4:\r
- case 5:\r
+ case 5: {\r
int source;\r
if (fileformat == 2) {\r
source = Integer.parseInt(parts.get(1));\r
source = EPGSourceFactory.newInstance()\r
.getChannelSourceId(parts.get(1));\r
}\r
+ String id = parts.get(2);\r
+ String enabled = parts.get(3);\r
+ String name = parts.get(4);\r
+ logger.info(" id: " + id);\r
+ logger.info(" enabled: " + enabled);\r
+ logger.info(" name: " + name);\r
if(fileformat<5) {\r
- c = Channel.getChannel(source, parts.get(2),\r
- parts.get(4));\r
+ c = Channel.getChannel(source, id, name);\r
} else {\r
- c = Channel.getChannel(source, parts.get(2),\r
- parts.get(4), parts.get(5));\r
+ String extra = parts.get(5);\r
+ if(extra.isEmpty()) {\r
+ c = Channel.getChannel(source, id, name);\r
+ } else {\r
+ // Horizon channel\r
+ String xmltv=id+"."+EPGSourceFactory.getChannelSourceName(source);\r
+ String horizonId=extra;\r
+ logger.info(" xmltv: " + xmltv );\r
+ logger.info(" horizonI: " + horizonId);\r
+ c = Channel.getChannel(source, horizonId, xmltv, name);\r
+ }\r
}\r
int iconPart = (fileformat<5?5:6);\r
if (parts.size() > iconPart) {\r
c.addIcon(parts.get(iconPart));\r
}\r
- value = parts.get(3);\r
- if (value.equals("enabled")) {\r
+ if (enabled.equals("enabled")) {\r
c.setEnabled(true);\r
- } else if (value.equals("disabled")) {\r
+ } else if (enabled.equals("disabled")) {\r
+ c.setEnabled(false);\r
+ } else {\r
+ logger.error("Error in config file, unknown channel status \""\r
+ + enabled \r
+ + "\", should be enabled or disabled");\r
+ }\r
+ break;\r
+ }\r
+ case 6: {\r
+ int source = EPGSourceFactory.getChannelSourceId(parts.get(1));\r
+ String xmltv = parts.get(2);\r
+ String id = parts.get(3);\r
+ String enabled = parts.get(4);\r
+ String name = parts.get(5);\r
+ String extra = parts.get(6);\r
+ c = Channel.getChannel(source, id, xmltv, name);\r
+ if (parts.size() > 7) {\r
+ c.addIcon(parts.get(7));\r
+ }\r
+ if (enabled.equals("enabled")) {\r
+ c.setEnabled(true);\r
+ } else if (enabled.equals("disabled")) {\r
c.setEnabled(false);\r
} else {\r
logger.error("Error in config file, unknown channel status \""\r
- + parts.get(3)\r
+ + enabled\r
+ "\", should be enabled or disabled");\r
}\r
}\r
+ }\r
return c;\r
}\r
\r
public class Horizon extends AbstractEPGSource implements EPGSource {
- static class HorizonChannel extends Channel {
- long horizonId;
- protected HorizonChannel(int source, String id, long horizonId) {
- super(source,id);
- this.horizonId = horizonId;
- }
- protected HorizonChannel(int source, long horizonId, String name) {
- super(source,sanitise(name));
- this.horizonId = horizonId;
- }
- public String getXmltvChannelId() {
- return sanitise(defaultName()) + "." + getSourceName();
- }
- public static String sanitise(String name) {
- return name.replaceAll("[^a-zA-Z0-9]","");
- }
- @Override
- public String extraConfig() {
- return Long.toString(horizonId);
- }
-
- }
-
static String channels_url = "https://www.horizon.tv/oesp/api/NL/nld/web/channels/";
static String listings_url = "https://www.horizon.tv/oesp/api/NL/nld/web/listings";
return NAME;
}
- public static URL programmeUrl(Channel c, int day)
+ public static URL programmeUrl(Channel channel, int day)
throws Exception {
- HorizonChannel channel = (HorizonChannel) c;
StringBuilder s = new StringBuilder(listings_url);
s.append("?byStationId=");
- s.append(channel.horizonId);
+ s.append(channel.id);
s.append("&sort=startTime&range=1-100");
Calendar startTime=Calendar.getInstance();
startTime.set(Calendar.HOUR_OF_DAY, 0);
maxSize = image.getInt("width");
}
}
- String id = HorizonChannel.sanitise(name);
- Channel c = Channel.getChannel(getId(), id, name, Long.toString(horizonId));
+ String xmltv = name.replaceAll("[^a-zA-Z0-9]", "")+"."+getName();
+ Channel c = Channel.getChannel(getId(), Long.toString(horizonId), xmltv, name);
//Channel c = new HorizonChannel(getId(), horizonId, name);
c.addIcon(icon);
result.add(c);