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;
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;
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;
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;
}
} 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;
}
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();
}
}
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();
}
}
db.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
- e.printStackTrace();
+ if (config.logLevel>=Config.LOG_DEBUG) e.printStackTrace();
}
}
}
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
\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
\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
}\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
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
}\r
Element e = (Element)n;\r
String tag = e.getTagName();\r
+\r
if (e.getTextContent().isEmpty()) {\r
return;\r
}\r
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
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
\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
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
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