From: Jan-Pascal van Best Date: Thu, 29 Mar 2012 15:48:33 +0000 (+0200) Subject: Support Java6; various fixes from Rick (thanks\!) X-Git-Tag: 0.9.0~15 X-Git-Url: http://www.vanbest.org/gitweb/?a=commitdiff_plain;h=b08effad025d8ff183ac01e9947c4d70e5bb99d2;p=tv_grab_nl_java Support Java6; various fixes from Rick (thanks\!) --- diff --git a/.classpath b/.classpath index 5910b55..da5037b 100644 --- a/.classpath +++ b/.classpath @@ -1,7 +1,8 @@ - + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 6249222..107056a 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,12 +1,12 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.compliance=1.6 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.source=1.7 +org.eclipse.jdt.core.compiler.source=1.6 diff --git a/README b/README index 09735d5..8fee522 100644 --- a/README +++ b/README @@ -22,7 +22,8 @@ Kenmerken van tv_grab_nl_java: Installatie ----------- -0. Het programma vereist Java7. Onder Debian te installeren met 'apt-get install openjdk-7-jre'. +0. Het programma vereist een Java runtime, versie 6 of hoger. Onder Debian te installeren met + $ apt-get install openjdk-6-jre 1. Download de .zip file (tv_grab_nl_java-VERSIE.zip) en pak 'm uit. Op Github te vinden via de URL https://github.com/janpascal/tv_grab_nl_java/downloads diff --git a/pom.xml b/pom.xml index 48be73d..2a7aa91 100644 --- a/pom.xml +++ b/pom.xml @@ -38,8 +38,8 @@ org.apache.maven.plugins maven-compiler-plugin - 1.7 - 1.7 + 1.6 + 1.6 diff --git a/src/main/java/org/vanbest/xmltv/AbstractEPGSource.java b/src/main/java/org/vanbest/xmltv/AbstractEPGSource.java index fae8e28..09d2437 100644 --- a/src/main/java/org/vanbest/xmltv/AbstractEPGSource.java +++ b/src/main/java/org/vanbest/xmltv/AbstractEPGSource.java @@ -15,6 +15,8 @@ public abstract class AbstractEPGSource implements EPGSource { protected Config config; protected ProgrammeCache cache; protected Stats stats = new Stats(); + + public static final int MAX_FETCH_TRIES=5; public AbstractEPGSource(Config config) { this.config = config; @@ -41,13 +43,24 @@ public abstract class AbstractEPGSource implements EPGSource { protected String fetchURL(URL url) throws Exception { Thread.sleep(config.niceMilliseconds); StringBuffer buf = new StringBuffer(); - try { - BufferedReader reader = new BufferedReader( new InputStreamReader( url.openStream())); - String s; - while ((s = reader.readLine()) != null) buf.append(s); - } catch (IOException e) { + boolean done = false; + IOException finalException = null; + for(int count = 0; count parts = splitLine(s); - switch (parts.get(0).toLowerCase()) { - case "channel": + String key = parts.get(0).toLowerCase(); + if(key.equals("channel")) { Channel c = null; // System.out.println("Adding channel " + parts + " in file format " + fileformat); switch(fileformat) { @@ -208,18 +208,19 @@ public class Config { if (parts.size()>4) { c.addIcon(parts.get(4)); } - switch(parts.get(2)) { - case "enabled": c.setEnabled(true); break; - case "disabled": c.setEnabled(false); break; - default: System.out.println("Error in config file, unknown channel status \"" + parts.get(2) + "\", should be enabled or disabled"); + String value = parts.get(2); + if (value.equals("enabled")) { + c.setEnabled(true); + } else if (value.equals("disabled")) { + c.setEnabled(false); + } else { + System.out.println("Error in config file, unknown channel status \"" + parts.get(2) + "\", should be enabled or disabled"); } } result.channels.add(c); - break; - case "category" : + } else if (key.equals("category")) { result.cattrans.put(parts.get(1), parts.get(2)); - break; - case "config-file-format" : + } else if (key.equals("config-file-format")) { try { fileformat = Integer.parseInt(parts.get(1)); } catch (NumberFormatException e) { @@ -230,12 +231,12 @@ public class Config { System.out.println("Unknown config file format " + parts.get(1)); fileformat = CURRENT_FILE_FORMAT; } - break; - case "cache-file": + } else if (key.equals("cache-file")) { result.cacheFile = new File(parts.get(1)); - break; - case "nice-time-milliseconds": + } else if (key.equals("nice-time-milliseconds")) { result.niceMilliseconds = Integer.parseInt(parts.get(1)); + } else { + System.out.println("Unknown key " + key + " in config file!"); } } } catch (IOException e) { diff --git a/src/main/java/org/vanbest/xmltv/Main.java b/src/main/java/org/vanbest/xmltv/Main.java index f4255b7..76e291b 100644 --- a/src/main/java/org/vanbest/xmltv/Main.java +++ b/src/main/java/org/vanbest/xmltv/Main.java @@ -63,7 +63,7 @@ public class Main { System.out.println("tv_grab_nl_java comes with ABSOLUTELY NO WARRANTY. It is free software, and you are welcome to redistribute it"); System.out.println("under certain conditions; `tv_grab_nl_java --license' for details."); - System.out.println("Fetching programme data for days " + this.offset + "-" + (this.offset+this.days-1)); + System.out.println("Fetching programme data for " + this.days + " starting from day " + this.offset); int enabledCount = 0; for(Channel c: config.channels) { if (c.enabled) enabledCount++; } System.out.println("... from " + enabledCount + " channels"); diff --git a/src/main/java/org/vanbest/xmltv/RTL.java b/src/main/java/org/vanbest/xmltv/RTL.java index 430cd8e..955dc70 100644 --- a/src/main/java/org/vanbest/xmltv/RTL.java +++ b/src/main/java/org/vanbest/xmltv/RTL.java @@ -108,7 +108,7 @@ public class RTL extends AbstractEPGSource implements EPGSource { Document xml = null; try { xml = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(url.openStream()); - } catch (SAXException | IOException | ParserConfigurationException e) { + } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } @@ -227,30 +227,27 @@ public class RTL extends AbstractEPGSource implements EPGSource { } Element e = (Element)n; stat.setString(xmlKeyMap.get(e.getTagName())+1, e.getTextContent()); - switch (e.getTagName()) { - case "genre": + String tag = e.getTagName(); + if (tag.equals("genre")) { prog.addCategory(config.translateCategory(e.getTextContent())); - break; - case "eindtijd": + } else if (tag.equals("eindtijd")) { prog.endTime = parseTime(date, e.getTextContent()); - break; - case "omroep": - case "kijkwijzer": - case "presentatie": - case "wwwadres": - case "alginhoud": - case "inhoud": - case "tt_inhoud": - case "zendernr": - case "titel": - case "bijvnwlanden": - case "afl_titel": - case "site_path": - case "ondertiteling": - case "begintijd": - case "pgmsoort": - break; - default: + } else if (tag.equals("omroep")) { + } else if (tag.equals("kijkwijzer")) { + } else if (tag.equals("presentatie")) { + } else if (tag.equals("wwwadres")) { + } else if (tag.equals("alginhoud")) { + } else if (tag.equals("inhoud")) { + } else if (tag.equals("tt_inhoud")) { + } else if (tag.equals("zendernr")) { + } else if (tag.equals("titel")) { + } else if (tag.equals("bijvnwlanden")) { + } else if (tag.equals("afl_titel")) { + } else if (tag.equals("site_path")) { + } else if (tag.equals("ondertiteling")) { + } else if (tag.equals("begintijd")) { + } else if (tag.equals("pgmsoort")) { + } else { throw new RTLException("Ignoring unknown tag " + n.getNodeName() + ", content: \"" + e.getTextContent() + "\""); } //prog.endTime = parseTime(date, root.) diff --git a/src/main/java/org/vanbest/xmltv/TvGids.java b/src/main/java/org/vanbest/xmltv/TvGids.java index 6dba44a..150cfa3 100644 --- a/src/main/java/org/vanbest/xmltv/TvGids.java +++ b/src/main/java/org/vanbest/xmltv/TvGids.java @@ -240,10 +240,9 @@ public class TvGids extends AbstractEPGSource implements EPGSource { //System.out.println(" infoLine: " + m2.group()); //System.out.println(" key: " + m2.group(1)); //System.out.println(" value: " + m2.group(2)); - String key = m2.group(1); + String key = m2.group(1).toLowerCase(); String value = m2.group(2); - switch(key.toLowerCase()) { - case "bijzonderheden": + if (key.equals("bijzonderheden")) { String[] list = value.split(","); for( String item: list) { if (item.toLowerCase().contains("teletekst")) { @@ -265,7 +264,8 @@ public class TvGids extends AbstractEPGSource implements EPGSource { } } } - break; + } else { + // ignore other keys for now } Matcher m3 = kijkwijzerPattern.matcher(progInfo); List kijkwijzer = new ArrayList(); diff --git a/src/main/java/org/vanbest/xmltv/TvGidsProgramme.java b/src/main/java/org/vanbest/xmltv/TvGidsProgramme.java index 5ec1872..b98568c 100644 --- a/src/main/java/org/vanbest/xmltv/TvGidsProgramme.java +++ b/src/main/java/org/vanbest/xmltv/TvGidsProgramme.java @@ -17,6 +17,7 @@ package org.vanbest.xmltv; */ import java.util.Date; +import org.apache.commons.lang.StringEscapeUtils; public class TvGidsProgramme { public String getDb_id() { @@ -122,10 +123,10 @@ public class TvGidsProgramme { Channel channel = null; public void fixup(Config config) { - this.titel = org.apache.commons.lang.StringEscapeUtils.unescapeHtml(titel); - this.genre = org.apache.commons.lang.StringEscapeUtils.unescapeHtml(genre); - this.soort = org.apache.commons.lang.StringEscapeUtils.unescapeHtml(soort); - this.highlight_content = org.apache.commons.lang.StringEscapeUtils.unescapeHtml(highlight_content); + titel = titel==null?"":StringEscapeUtils.unescapeHtml(titel); + genre = genre==null?"":StringEscapeUtils.unescapeHtml(genre); + soort = soort==null?"":StringEscapeUtils.unescapeHtml(soort); + highlight_content = highlight_content==null?"":StringEscapeUtils.unescapeHtml(highlight_content); genre = config.translateCategory(genre); } diff --git a/src/main/java/org/vanbest/xmltv/TvGidsProgrammeDetails.java b/src/main/java/org/vanbest/xmltv/TvGidsProgrammeDetails.java index 37815a9..cde3751 100644 --- a/src/main/java/org/vanbest/xmltv/TvGidsProgrammeDetails.java +++ b/src/main/java/org/vanbest/xmltv/TvGidsProgrammeDetails.java @@ -18,6 +18,8 @@ package org.vanbest.xmltv; import java.io.Serializable; +import org.apache.commons.lang.StringEscapeUtils; + public class TvGidsProgrammeDetails implements Serializable { String db_id; String titel; @@ -39,10 +41,10 @@ public class TvGidsProgrammeDetails implements Serializable { public boolean herhaling = false; public void fixup(TvGidsProgramme p, boolean quiet) { - this.titel = org.apache.commons.lang.StringEscapeUtils.unescapeHtml(titel); - this.genre = org.apache.commons.lang.StringEscapeUtils.unescapeHtml(genre); - this.synop = org.apache.commons.lang.StringEscapeUtils.unescapeHtml(synop); - this.synop = this.synop.replaceAll("
", " "). + titel = titel==null?"":StringEscapeUtils.unescapeHtml(titel); + genre = genre==null?"":StringEscapeUtils.unescapeHtml(genre); + synop = synop==null?"":StringEscapeUtils.unescapeHtml(synop); + synop = this.synop.replaceAll("
", " "). replaceAll("
", " "). replaceAll("

", " "). replaceAll("

", " "). @@ -51,7 +53,7 @@ public class TvGidsProgrammeDetails implements Serializable { replaceAll("", " "). replaceAll("", " "). trim(); - if ((synop == null || synop.isEmpty()) && ( genre == null || (!genre.toLowerCase().equals("movies") && !genre.toLowerCase().equals("film")))) { + if (synop.isEmpty() && (!genre.toLowerCase().equals("movies") && !genre.toLowerCase().equals("film"))) { String[] parts = p.titel.split("[[:space:]]*:[[:space:]]*", 2); if (parts.length >= 2 ) { if (!quiet) { @@ -62,9 +64,9 @@ public class TvGidsProgrammeDetails implements Serializable { synop = parts[1].trim(); } } - this.presentatie = org.apache.commons.lang.StringEscapeUtils.unescapeHtml(presentatie); - this.acteursnamen_rolverdeling = org.apache.commons.lang.StringEscapeUtils.unescapeHtml(acteursnamen_rolverdeling); - this.regisseur = org.apache.commons.lang.StringEscapeUtils.unescapeHtml(regisseur); + presentatie = presentatie==null?"":StringEscapeUtils.unescapeHtml(presentatie); + acteursnamen_rolverdeling = acteursnamen_rolverdeling==null?"":StringEscapeUtils.unescapeHtml(acteursnamen_rolverdeling); + regisseur = regisseur==null?"":StringEscapeUtils.unescapeHtml(regisseur); } public String getDb_id() { diff --git a/src/main/java/org/vanbest/xmltv/XmlTvWriter.java b/src/main/java/org/vanbest/xmltv/XmlTvWriter.java index 7a0339f..33318bf 100644 --- a/src/main/java/org/vanbest/xmltv/XmlTvWriter.java +++ b/src/main/java/org/vanbest/xmltv/XmlTvWriter.java @@ -57,6 +57,7 @@ public class XmlTvWriter { public void writeChannels(List channels) throws XMLStreamException { for(Channel c: channels) { + if (!c.enabled) continue; c.serialize(writer); writeln(); }