]> www.vanbest.org Git - tv_grab_nl_java/commitdiff
For analysis, RTL class can now dump CSV file of rtl.nl details
authorJan-Pascal van Best <janpascal@vanbest.org>
Mon, 9 Apr 2012 08:17:33 +0000 (10:17 +0200)
committerJan-Pascal van Best <janpascal@vanbest.org>
Mon, 9 Apr 2012 08:17:33 +0000 (10:17 +0200)
src/main/java/org/vanbest/xmltv/Config.java
src/main/java/org/vanbest/xmltv/ProgrammeCache.java
src/main/java/org/vanbest/xmltv/RTL.java

index 60ef33339b1e84cc375f2445109e95c8077ac4ae..7ed397be233a2bb3036ba1eb898aaf8248c5115f 100644 (file)
@@ -38,6 +38,7 @@ import org.apache.commons.io.FileUtils;
 public class Config {
        //constants
        public static final int LOG_INFO = 0x0001;
+       public static final int LOG_DEBUG = 0x0005;
        public static final int LOG_JSON = 0x0100;
        private final static int LOG_PROGRAMME_INFO = 0x0200;
        private final static int CURRENT_FILE_FORMAT=4;
index 0a32bb0d570ada9be8ffd88a05f2bb4cecc34dff..55272bb57a933ac9dc7d2075ff44d1d4eb93172a 100644 (file)
@@ -64,7 +64,7 @@ public class ProgrammeCache {
                        db = null;
                        if (!config.quiet) {
                                System.out.println("Unable to open cache database, proceeding without cache");
-                               e.printStackTrace();
+                               if (config.logLevel>=Config.LOG_DEBUG) e.printStackTrace();
                        }
         }
         boolean recreateTable = false;
@@ -93,7 +93,7 @@ public class ProgrammeCache {
                                if (!config.quiet) {
                                        System.out.println("Got SQL exception when trying to find current database schema");
                                        System.out.flush();
-                                       e.printStackTrace();
+                                       if (config.logLevel>=Config.LOG_DEBUG) e.printStackTrace();
                                        System.out.flush();
                                }
                                recreateTable = true;
@@ -121,7 +121,7 @@ public class ProgrammeCache {
                                        if (!config.quiet) {
                                                System.out.println("Unable to create cache database, proceeding without cache");
                                                System.out.flush();
-                                               e.printStackTrace();
+                                               if (config.logLevel>=Config.LOG_DEBUG) e.printStackTrace();
                                                System.out.flush();
                                        }
                                        db = null;
@@ -137,7 +137,7 @@ public class ProgrammeCache {
                                if (!config.quiet) {
                                        System.out.println("Unable to prepare statements, proceeding without cache");
                                        System.out.flush();
-                                       e.printStackTrace();
+                                       if (config.logLevel>=Config.LOG_DEBUG) e.printStackTrace();
                                        System.out.flush();
                                }
                                db = null;
@@ -162,7 +162,8 @@ public class ProgrammeCache {
                        }
                } catch (SQLException e) {
                        if (!config.quiet) {
-                               e.printStackTrace();
+                               System.out.println("Error fetching programme ("+source+","+id+") from cache");
+                               if (config.logLevel>=Config.LOG_DEBUG) e.printStackTrace();
                        }
                        return null;
                }
@@ -192,8 +193,8 @@ public class ProgrammeCache {
                                System.out.println("Weird, cache database update statement affected " + count + " rows");
                        }
                } catch (SQLException e) {
-                       // TODO Auto-generated catch block
-                       e.printStackTrace();
+                       System.out.println("Error writing programme ("+source+","+id+") to cache");
+                       if (config.logLevel>=Config.LOG_DEBUG) e.printStackTrace();
                }
        }
 
@@ -221,8 +222,7 @@ public class ProgrammeCache {
                                System.out.println("Cleared " + count + " entries from cache");
                        }
                } catch (SQLException e) {
-                       // TODO Auto-generated catch block
-                       e.printStackTrace();
+                       if (config.logLevel>=Config.LOG_DEBUG) e.printStackTrace();
                }
        }
 
@@ -237,7 +237,7 @@ public class ProgrammeCache {
                                db.close();
                        } catch (SQLException e) {
                                // TODO Auto-generated catch block
-                               e.printStackTrace();
+                               if (config.logLevel>=Config.LOG_DEBUG) e.printStackTrace();
                        }
                }
        }
index 164a1960c755b472a073003776d64d79f78d59d5..0341af6f7998e0bb3eebe7967bc68397e9596091 100644 (file)
@@ -1,12 +1,15 @@
 package org.vanbest.xmltv;\r
 \r
+import java.io.BufferedOutputStream;\r
 import java.io.BufferedReader;\r
 import java.io.FileInputStream;\r
 import java.io.FileNotFoundException;\r
+import java.io.FileOutputStream;\r
 import java.io.FileWriter;\r
 import java.io.IOException;\r
 import java.io.InputStream;\r
 import java.io.InputStreamReader;\r
+import java.io.PrintWriter;\r
 import java.net.MalformedURLException;\r
 import java.net.URL;\r
 import java.sql.Connection;\r
@@ -64,6 +67,10 @@ public class RTL extends AbstractEPGSource implements EPGSource  {
        \r
        String[] xmlKeys = {"zendernr", "pgmsoort", "genre", "bijvnwlanden", "ondertiteling", "begintijd", "titel", \r
                        "site_path", "wwwadres", "presentatie", "omroep", "eindtijd", "inhoud", "tt_inhoud", "alginhoud", "afl_titel", "kijkwijzer" };\r
+       Map<String,Integer> xmlKeyMap = new HashMap<String,Integer>();\r
+       \r
+       static boolean debug = false;\r
+       PrintWriter debugWriter;\r
                \r
        class RTLException extends Exception {\r
                public RTLException(String s) {\r
@@ -73,6 +80,11 @@ public class RTL extends AbstractEPGSource implements EPGSource  {
        \r
        public RTL(int sourceId, Config config) {\r
                super(sourceId, config);\r
+               if(debug) {\r
+                       for(int i=0; i<xmlKeys.length; i++) {\r
+                               xmlKeyMap.put(xmlKeys[i], i);\r
+                       }\r
+               }\r
        }\r
        \r
        public String getName() {\r
@@ -172,8 +184,16 @@ public class RTL extends AbstractEPGSource implements EPGSource  {
                        }\r
                        // we have a uitzending_data_item node\r
                        NodeList subnodes = n.getChildNodes();\r
+                       String[] result = new String[xmlKeys.length];\r
                        for( int j=0; j<subnodes.getLength(); j++) {\r
                                try {\r
+                                       if (debug) {\r
+                                               Node sub = subnodes.item(j);\r
+                                               String key = ((Element)sub).getTagName();\r
+                                               int index = xmlKeyMap.get(key);\r
+                                               String value = "\"" + sub.getTextContent().replaceAll("\\s", " ") + "\"";\r
+                                               result[index] = value;\r
+                                       }\r
                                        handleNode(prog, date, subnodes.item(j));\r
                                } catch (RTLException e) {\r
                                        System.out.println(e.getMessage());\r
@@ -183,6 +203,13 @@ public class RTL extends AbstractEPGSource implements EPGSource  {
                                        continue;\r
                                }\r
                        }\r
+                       if (debug) {\r
+                               for(int k=0; k<result.length; k++) {\r
+                                       debugWriter.print(result[k]);\r
+                                       debugWriter.print(",");\r
+                               }\r
+                               debugWriter.println();\r
+                       }\r
                }\r
        }\r
 \r
@@ -204,6 +231,7 @@ public class RTL extends AbstractEPGSource implements EPGSource  {
                }\r
                Element e = (Element)n;\r
                String tag = e.getTagName();\r
+\r
                if (e.getTextContent().isEmpty()) {\r
                        return;\r
                }\r
@@ -213,7 +241,7 @@ public class RTL extends AbstractEPGSource implements EPGSource  {
                        prog.endTime = parseTime(date, e.getTextContent());\r
                } else if (tag.equals("omroep")) {\r
                } else if (tag.equals("kijkwijzer")) {\r
-                       System.out.println("Kijkwijzer: \"" + e.getTextContent() + "\"");\r
+                       //System.out.println("Kijkwijzer: \"" + e.getTextContent() + "\"");\r
                } else if (tag.equals("presentatie")) {\r
                        // A; A en B; A, B, C en D\r
                        String[] presentatoren = e.getTextContent().split(", | en ");\r
@@ -281,8 +309,9 @@ public class RTL extends AbstractEPGSource implements EPGSource  {
                                String starttime = p.getString(0);\r
                                String title = p.getString(1);\r
                                String programme_id = p.getString(2);\r
-                               String quark1 = p.getString(3);\r
-                               String quark2 = p.getString(4);\r
+                               String genre_id = p.getString(3); // 1 = amusement, etc\r
+                               String quark2 = p.getString(4); // 0 of 1, movie flag?\r
+                               debugWriter.print("\""+id+"\",\""+starttime+"\",\""+title+"\",\""+genre_id+"\",\""+quark2+"\",");\r
                                Programme prog = cache.get(getId(), programme_id);\r
                                if (prog == null) {\r
                                        stats.cacheMisses++;\r
@@ -335,10 +364,25 @@ public class RTL extends AbstractEPGSource implements EPGSource  {
 \r
        /**\r
         * @param args\r
+        * @throws FileNotFoundException \r
         */\r
-       public static void main(String[] args) {\r
+       public static void main(String[] args) throws FileNotFoundException {\r
+               debug = true;\r
                Config config = Config.getDefaultConfig();\r
+               config.niceMilliseconds = 50;\r
                RTL rtl = new RTL(2, config);\r
+               if (debug) {\r
+                       rtl.cache.clear();\r
+                       System.out.println("Writing CSV to rtl.csv");\r
+                       rtl.debugWriter = new PrintWriter( new BufferedOutputStream(new FileOutputStream("rtl.csv")));\r
+                       rtl.debugWriter.print("\"zender\",\"starttime\",\"title\",\"quark1\",\"quark2\",");\r
+                       for(int k=0; k<rtl.xmlKeys.length; k++) {\r
+                               rtl.debugWriter.print(rtl.xmlKeys[k]);\r
+                               rtl.debugWriter.print(",");\r
+                       }\r
+                       rtl.debugWriter.println();\r
+               }\r
+\r
                try {\r
                        List<Channel> channels = rtl.getChannels();\r
                        System.out.println("Channels: " + channels);\r
@@ -350,9 +394,11 @@ public class RTL extends AbstractEPGSource implements EPGSource  {
                        writer.writeStartElement("tv");\r
                        for(Channel c: channels) {c.serialize(writer);}\r
                        writer.flush();\r
-                       List<Programme> programmes = rtl.getProgrammes(channels.subList(6, 9), 0);\r
-                       //List<Programme> programmes = rtl.getProgrammes(channels, 0, true);\r
-                       for(Programme p: programmes) {p.serialize(writer);}\r
+                       //List<Programme> programmes = rtl.getProgrammes(channels.subList(6, 9), 0);\r
+                       for(int day=0; day<10; day++) {\r
+                               List<Programme> programmes = rtl.getProgrammes(channels, day);\r
+                               for(Programme p: programmes) {p.serialize(writer);}\r
+                       }\r
                        writer.writeEndElement();\r
                        writer.writeEndDocument();\r
                        writer.flush();\r
@@ -362,6 +408,8 @@ public class RTL extends AbstractEPGSource implements EPGSource  {
                                System.out.println("Number of programmes fetched: " + stats.cacheMisses);\r
                                System.out.println("Number of fetch errors: " + stats.fetchErrors);\r
                        }\r
+                       rtl.debugWriter.flush();\r
+                       rtl.debugWriter.close();\r
                        rtl.close();\r
                } catch (Exception e) {\r
                        // TODO Auto-generated catch block\r