]> www.vanbest.org Git - tv_grab_nl_java/commitdiff
Support Java6; various fixes from Rick (thanks\!)
authorJan-Pascal van Best <janpascal@vanbest.org>
Thu, 29 Mar 2012 15:48:33 +0000 (17:48 +0200)
committerJan-Pascal van Best <janpascal@vanbest.org>
Thu, 29 Mar 2012 15:48:33 +0000 (17:48 +0200)
12 files changed:
.classpath
.settings/org.eclipse.jdt.core.prefs
README
pom.xml
src/main/java/org/vanbest/xmltv/AbstractEPGSource.java
src/main/java/org/vanbest/xmltv/Config.java
src/main/java/org/vanbest/xmltv/Main.java
src/main/java/org/vanbest/xmltv/RTL.java
src/main/java/org/vanbest/xmltv/TvGids.java
src/main/java/org/vanbest/xmltv/TvGidsProgramme.java
src/main/java/org/vanbest/xmltv/TvGidsProgrammeDetails.java
src/main/java/org/vanbest/xmltv/XmlTvWriter.java

index 5910b55c792cc6206265114236fe38fcf6efdddc..da5037b3eb890697660be5b7095ea8aa1ad0bdcb 100644 (file)
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
        <classpathentry kind="src" output="target/classes" path="src/main/java"/>
-       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+       <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
+       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
        <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/>
        <classpathentry kind="output" path="target/classes"/>
 </classpath>
index 62492222ad2ebf5127d7df47d2d3ec1b87694c72..107056a36e4dc4b53aad1c866f7ff7b82068ddbc 100644 (file)
@@ -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 09735d52aa6d24acc2a67631d6198abdc56dbf11..8fee522ea5fc145b2f6e30be2c0787da1695622f 100644 (file)
--- 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 48be73dbc850b9f6b8c978e726aa6e8e4f444e1e..2a7aa91dbf54f9985435851aebcd8c1658228498 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -38,8 +38,8 @@
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-compiler-plugin</artifactId>
                                <configuration>
-                                       <source>1.7</source>
-                                       <target>1.7</target>
+                                       <source>1.6</source>
+                                       <target>1.6</target>
                                </configuration>
                        </plugin>
 
index fae8e280182f37ec6af533d93609ccd056d6aa65..09d243740cac42694f78561bda9ef88f372bc0a0 100644 (file)
@@ -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<MAX_FETCH_TRIES && !done; count++) {
+                       try {
+                               BufferedReader reader = new BufferedReader( new InputStreamReader( url.openStream()));
+                               String s;
+                               while ((s = reader.readLine()) != null) buf.append(s);
+                               done = true;
+                       } catch (IOException e) {
+                               if (!config.quiet) {
+                                       System.out.println("Error fetching from url " + url + ", count="+count);
+                               }
+                               finalException = e;
+                       }
+               }
+               if (!done) {
                        stats.fetchErrors++;
-                       throw new Exception("Error getting program data from url " + url, e);
+                       throw new Exception("Error getting program data from url " + url, finalException);
                }
                return buf.toString();  
        }
index 818f1b84d0f3f0e8889f9cdfac1ccd42f43ebc27..fc9964239beb52c176ab5d5ea69a997b6d4b5b7c 100644 (file)
@@ -192,8 +192,8 @@ public class Config {
                                if (!s.contains(":")) continue;
                                if (s.startsWith("#")) continue;
                                List<String> 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) {
index f4255b7221984500b19159c8c6e5079eb215b75c..76e291b3cda9b587aa610d06fac9513b1c511596 100644 (file)
@@ -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");
index 430cd8ec3860537d976233ae631f19e19728671e..955dc70cf3b48fa5062edc93e4bc1bad4a0ba26b 100644 (file)
@@ -108,7 +108,7 @@ public class RTL extends AbstractEPGSource implements EPGSource  {
                Document xml = null;\r
                try {\r
                        xml = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(url.openStream());\r
-               } catch (SAXException | IOException | ParserConfigurationException e) {\r
+               } catch (Exception e) {\r
                        // TODO Auto-generated catch block\r
                        e.printStackTrace();\r
                }\r
@@ -227,30 +227,27 @@ public class RTL extends AbstractEPGSource implements EPGSource  {
                }\r
                Element e = (Element)n;\r
                stat.setString(xmlKeyMap.get(e.getTagName())+1, e.getTextContent());\r
-               switch (e.getTagName()) {\r
-               case "genre":\r
+               String tag = e.getTagName();\r
+               if (tag.equals("genre")) {\r
                        prog.addCategory(config.translateCategory(e.getTextContent()));\r
-                       break;\r
-               case "eindtijd":\r
+               } else if (tag.equals("eindtijd")) {\r
                        prog.endTime = parseTime(date, e.getTextContent());\r
-                       break;\r
-               case "omroep":\r
-               case "kijkwijzer":\r
-               case "presentatie":\r
-               case "wwwadres":\r
-               case "alginhoud":\r
-               case "inhoud":\r
-               case "tt_inhoud":\r
-               case "zendernr":\r
-               case "titel":\r
-               case "bijvnwlanden":\r
-               case "afl_titel":\r
-               case "site_path":\r
-               case "ondertiteling":\r
-               case "begintijd":\r
-               case "pgmsoort":\r
-                       break;\r
-               default:\r
+               } else if (tag.equals("omroep")) {\r
+               } else if (tag.equals("kijkwijzer")) {\r
+               } else if (tag.equals("presentatie")) {\r
+               } else if (tag.equals("wwwadres")) {\r
+               } else if (tag.equals("alginhoud")) {\r
+               } else if (tag.equals("inhoud")) {\r
+               } else if (tag.equals("tt_inhoud")) {\r
+               } else if (tag.equals("zendernr")) {\r
+               } else if (tag.equals("titel")) {\r
+               } else if (tag.equals("bijvnwlanden")) {\r
+               } else if (tag.equals("afl_titel")) {\r
+               } else if (tag.equals("site_path")) {\r
+               } else if (tag.equals("ondertiteling")) {\r
+               } else if (tag.equals("begintijd")) {\r
+               } else if (tag.equals("pgmsoort")) {\r
+               } else {\r
                        throw new RTLException("Ignoring unknown tag " + n.getNodeName() + ", content: \"" + e.getTextContent() + "\"");\r
                }\r
                //prog.endTime = parseTime(date, root.)\r
index 6dba44a815ce8505f7cf56fb84f702d58ba6202a..150cfa3fddf751dc8c4548e8915b88a212c7c64d 100644 (file)
@@ -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<String> kijkwijzer = new ArrayList<String>();
index 5ec1872b572492731f617c00a8e4f8a892fe8328..b98568cb22273ec36304eaa92c77a0360e962608 100644 (file)
@@ -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);
          }
 
index 37815a9eafd8506c11eadf8f30855bd6e741ce29..cde3751dedb0c5b45761a6a00ce8a298a20b9a20 100644 (file)
@@ -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("<br>", " ").
+               titel = titel==null?"":StringEscapeUtils.unescapeHtml(titel);
+               genre = genre==null?"":StringEscapeUtils.unescapeHtml(genre);
+               synop = synop==null?"":StringEscapeUtils.unescapeHtml(synop);
+               synop = this.synop.replaceAll("<br>", " ").
                                replaceAll("<br />", " ").
                                replaceAll("<p>", " ").
                                replaceAll("</p>", " ").
@@ -51,7 +53,7 @@ public class TvGidsProgrammeDetails implements Serializable {
                                replaceAll("<em>", " ").
                                replaceAll("</em>", " ").
                                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() {
index 7a0339ff62b63cb51f7dcf68a4676dd643e7a882..33318bf31ef48bc2a67475b97b7464b5817c56e7 100644 (file)
@@ -57,6 +57,7 @@ public class XmlTvWriter {
        
        public void writeChannels(List<Channel> channels) throws XMLStreamException {
                for(Channel c: channels) {
+                       if (!c.enabled) continue;
                        c.serialize(writer);
                        writeln();              
                }