]> www.vanbest.org Git - tv_grab_nl_java/commitdiff
New config file format, make xmltv id editable, store source provider internal id...
authorJan-Pascal van Best <janpascal@vanbest.org>
Wed, 25 Sep 2013 19:23:21 +0000 (21:23 +0200)
committerJan-Pascal van Best <janpascal@vanbest.org>
Wed, 25 Sep 2013 19:23:21 +0000 (21:23 +0200)
src/main/java/org/vanbest/xmltv/Channel.java
src/main/java/org/vanbest/xmltv/Config.java
src/main/java/org/vanbest/xmltv/Horizon.java

index 6e68b8eb080d13cb14b469e4d445fb1ee8f8af8e..e1dddd42bf4879bb019a86aafd0ba62254c07f9d 100644 (file)
@@ -8,7 +8,8 @@ import javax.xml.stream.XMLStreamWriter;
 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
@@ -16,9 +17,10 @@ public class Channel {
        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
@@ -28,18 +30,20 @@ public class Channel {
                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
@@ -51,13 +55,13 @@ public class Channel {
                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
@@ -100,6 +104,7 @@ public class Channel {
         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
@@ -142,7 +147,7 @@ public class Channel {
                 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
@@ -150,28 +155,64 @@ public class Channel {
                                 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
index 0ecb9a3c1d8f6d25ca012a35efbf71ed8a6ea336..eea32fbcb3f4a864a0ff35f4b2d41933a4ce13da 100644 (file)
@@ -36,7 +36,7 @@ import org.apache.log4j.Logger;
 
 public class Config {
        // constants
-       private final static int CURRENT_FILE_FORMAT = 5;
+       private final static int CURRENT_FILE_FORMAT = 6;
 
        // in config file
        public int niceMilliseconds;
index 7a92e7c95437f81b769efcce73c4a4fd5c9bc683..e7ce5ed771ff8cd15adbde46162f67e8c7d48ce5 100644 (file)
@@ -45,29 +45,6 @@ import net.sf.json.JSONObject;
 
 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";
 
@@ -83,12 +60,11 @@ public class Horizon extends AbstractEPGSource implements EPGSource {
                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);
@@ -157,8 +133,8 @@ public class Horizon extends AbstractEPGSource implements EPGSource {
                                         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);