Thread.sleep(config.niceMilliseconds);
StringBuffer buf = new StringBuffer();
boolean done = false;
- IOException finalException = null;
- for(int count = 0; count<MAX_FETCH_TRIES && !done; count++) {
+ for(int count = 0; !done; count++) {
try {
BufferedReader reader = new BufferedReader( new InputStreamReader( url.openStream()));
String s;
if (!config.quiet) {
System.out.println("Error fetching from url " + url + ", count="+count);
}
- finalException = e;
+ if (count>=MAX_FETCH_TRIES) {
+ stats.fetchErrors++;
+ if (config.logLevel>=Config.LOG_DEBUG) e.printStackTrace();
+ throw new Exception("Error getting program data from url " + url, e);
+ }
}
}
- if (!done) {
- stats.fetchErrors++;
- throw new Exception("Error getting program data from url " + url, finalException);
- }
return buf.toString();
}
}
if (line.hasOption("log-level")) {
config.logLevel = Integer.parseInt(line.getOptionValue("log-level"));
+ if (config.quiet) config.logLevel = 0;
}
if (line.hasOption("cache")) {
config.setCacheFile(line.getOptionValue("cache"));
writer.writeEndElement();
writer.writeCharacters(System.getProperty("line.separator"));
}
+
+ public String getFirstTitle() {
+ if (titles==null || titles.isEmpty()) return null;
+ return titles.get(0).title;
+ }
+
+ public String toString() {
+ StringBuilder s = new StringBuilder();
+ s.append("[Programme ").append(getFirstTitle());
+ s.append("@ ").append(startTime.toString());
+ s.append("(").append(channel).append(")]");
+ return s.toString();
+ }
}
String programme_id = p.getString(2);\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
+ if(debug) debugWriter.print("\""+id+"\",\""+starttime+"\",\""+title+"\",\""+genre_id+"\",\""+quark2+"\",");\r
Programme prog = cache.get(getId(), programme_id);\r
if (prog == null) {\r
stats.cacheMisses++;\r
* @throws FileNotFoundException \r
*/\r
public static void main(String[] args) throws FileNotFoundException {\r
+ Calendar result = Calendar.getInstance();\r
+ Calendar d = Calendar.getInstance();\r
+ try {\r
+ d.setTime(new SimpleDateFormat("yyyy-MM-dd").parse("2012-04-16"));\r
+ } catch (ParseException e2) {\r
+ // TODO Auto-generated catch block\r
+ e2.printStackTrace();\r
+ }\r
+\r
+ SimpleDateFormat df = new SimpleDateFormat("HH:mm");\r
+ try {\r
+ result.setTime(df.parse("04:50"));\r
+ result.set(d.get(Calendar.YEAR), d.get(Calendar.MONTH), d.get(Calendar.DAY_OF_MONTH));\r
+ System.out.println(result.getTime());\r
+ System.exit(1);\r
+ } catch (ParseException e1) {\r
+ // TODO Auto-generated catch block\r
+ e1.printStackTrace();\r
+ }\r
debug = true;\r
Config config = Config.getDefaultConfig();\r
config.niceMilliseconds = 50;\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
+ if (debug) {\r
+ rtl.debugWriter.flush();\r
+ rtl.debugWriter.close();\r
+ }\r
rtl.close();\r
} catch (Exception e) {\r
// TODO Auto-generated catch block\r
}
private void fillDetails(String id, Programme result) throws Exception {
- fillJSONDetails(id, result);
- fillScraperDetails(id, result);
+ try {
+ fillJSONDetails(id, result);
+ } catch (Exception e) {
+ if (!config.quiet) System.out.println("Error fetching details for programme " + result.toString() );
+ }
+ try {
+ fillScraperDetails(id, result);
+ } catch (Exception e) {
+ if (!config.quiet) System.out.println("Error fetching details for programme " + result.toString() );
+ }
if ((result.secondaryTitles==null || result.secondaryTitles.isEmpty()) &&
(!result.hasCategory("movies") && !result.hasCategory("film"))) {
for(Programme.Title t: result.titles) {
String[] parts = t.title.split("\\s*:\\s*", 2);
- if (parts.length >= 2 ) {
- if (!config.quiet) {
+ if (parts.length >= 2 && parts[0].length()>=5) {
+ if (config.logLevel >= Config.LOG_DEBUG) {
System.out.println("Splitting title from \"" + t.title + "\" to: \"" + parts[0].trim() + "\"; sub-title: \"" + parts[1].trim() + "\"");
}
t.title = parts[0].trim();
if(key.equals("synop")) {
value = value.replaceAll("<br>", " ").
replaceAll("<br />", " ").
- replaceAll("<p>", " ").
+ replaceAll("<p[^>]*>", " ").
replaceAll("</p>", " ").
replaceAll("<strong>", " ").
replaceAll("</strong>", " ").