]> www.vanbest.org Git - tv_grab_nl_java/commitdiff
More refactoring, renaming programme to tvgidsprogramme to make space
authorJan-Pascal van Best <janpascal@vanbest.org>
Mon, 26 Mar 2012 20:39:37 +0000 (22:39 +0200)
committerJan-Pascal van Best <janpascal@vanbest.org>
Mon, 26 Mar 2012 20:39:37 +0000 (22:39 +0200)
for generic xmltv programme class

src/main/java/org/vanbest/xmltv/AbstractEPGSource.java
src/main/java/org/vanbest/xmltv/EPGSource.java
src/main/java/org/vanbest/xmltv/Main.java
src/main/java/org/vanbest/xmltv/Programme.java [deleted file]
src/main/java/org/vanbest/xmltv/ProgrammeCache.java
src/main/java/org/vanbest/xmltv/ProgrammeDetails.java [deleted file]
src/main/java/org/vanbest/xmltv/RTL.java
src/main/java/org/vanbest/xmltv/TvGids.java
src/main/java/org/vanbest/xmltv/TvGidsProgramme.java [new file with mode: 0644]
src/main/java/org/vanbest/xmltv/TvGidsProgrammeDetails.java [new file with mode: 0644]
src/main/java/org/vanbest/xmltv/XmlTvWriter.java

index 8996becfd387ad4df420591c509c25e5f4a9cfb9..fae8e280182f37ec6af533d93609ccd056d6aa65 100644 (file)
@@ -1,7 +1,10 @@
 package org.vanbest.xmltv;
 
+import java.io.BufferedReader;
 import java.io.FileNotFoundException;
 import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.Set;
 
@@ -18,7 +21,7 @@ public abstract class AbstractEPGSource implements EPGSource {
                cache = new ProgrammeCache(config.cacheFile);
        }
 
-       public Set<Programme> getProgrammes(Channel channel, int day, boolean fetchDetails)
+       public Set<TvGidsProgramme> getProgrammes(Channel channel, int day, boolean fetchDetails)
                        throws Exception {
                                ArrayList<Channel> list = new ArrayList<Channel>(2);
                                list.add(channel);
@@ -35,4 +38,19 @@ public abstract class AbstractEPGSource implements EPGSource {
                cache.close();
        }
 
+       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) {
+                       stats.fetchErrors++;
+                       throw new Exception("Error getting program data from url " + url, e);
+               }
+               return buf.toString();  
+       }
+
+
 }
\ No newline at end of file
index 1697f4502a283d6bb787db28887cabd65a81c188..30443e13cd5be11c9a5331872464e7d9c049d902 100644 (file)
@@ -18,10 +18,10 @@ public interface EPGSource {
        public abstract List<Channel> getChannels();
 
        // Convenience method
-       public abstract Set<Programme> getProgrammes(Channel channel, int day,
+       public abstract Set<TvGidsProgramme> getProgrammes(Channel channel, int day,
                        boolean fetchDetails) throws Exception;
 
-       public abstract Set<Programme> getProgrammes(List<Channel> channels,
+       public abstract Set<TvGidsProgramme> getProgrammes(List<Channel> channels,
                        int day, boolean fetchDetails) throws Exception;
        
        public abstract Stats getStats();
index e94bf4defc18c2ce83b11340cdf759944b9d8ce5..f4255b7221984500b19159c8c6e5079eb215b75c 100644 (file)
@@ -77,11 +77,11 @@ public class Main {
 
                for (int day=offset; day<offset+days; day++) {
                        if (!config.quiet) System.out.print("Fetching information for day " + day);
-                       Set<Programme> programmes = new HashSet<Programme>();
+                       Set<TvGidsProgramme> programmes = new HashSet<TvGidsProgramme>();
                        for(Channel c: config.channels) {
                                if (!c.enabled) continue;
                                if (!config.quiet) System.out.print(".");
-                               Set<Programme> p = gids.getProgrammes(c, day, true);
+                               Set<TvGidsProgramme> p = gids.getProgrammes(c, day, true);
                                writer.writePrograms(p);
                                writer.flush();
                        }
diff --git a/src/main/java/org/vanbest/xmltv/Programme.java b/src/main/java/org/vanbest/xmltv/Programme.java
deleted file mode 100644 (file)
index 21c7e02..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-package org.vanbest.xmltv;
-
-/*
-  Copyright (c) 2012 Jan-Pascal van Best <janpascal@vanbest.org>
-
-  This program is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or
-  (at your option) any later version.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  The full license text can be found in the LICENSE file.
-*/
-
-import java.util.Date;
-
-public class Programme {
-         public String getDb_id() {
-               return db_id;
-       }
-
-       public void setDb_id(String db_id) {
-               this.db_id = db_id;
-       }
-
-       public String getTitel() {
-               return titel;
-       }
-
-       public void setTitel(String titel) {
-               this.titel = titel;
-       }
-
-       public String getGenre() {
-               return genre;
-       }
-
-       public void setGenre(String genre) {
-               this.genre = genre;
-       }
-
-       public String getSoort() {
-               return soort;
-       }
-
-       public void setSoort(String soort) {
-               this.soort = soort;
-       }
-
-       public String getKijkwijzer() {
-               return kijkwijzer;
-       }
-
-       public void setKijkwijzer(String kijkwijzer) {
-               this.kijkwijzer = kijkwijzer;
-       }
-
-       public String getArtikel_id() {
-               return artikel_id;
-       }
-
-       public void setArtikel_id(String artikel_id) {
-               this.artikel_id = artikel_id;
-       }
-
-       public Date getDatum_start() {
-               return datum_start;
-       }
-
-       public void setDatum_start(Date datum_start) {
-               this.datum_start = datum_start;
-       }
-
-       public Date getDatum_end() {
-               return datum_end;
-       }
-
-       public void setDatum_end(Date datum_end) {
-               this.datum_end = datum_end;
-       }
-
-       public boolean isIs_highlight() {
-               return is_highlight;
-       }
-
-       public void setIs_highlight(boolean is_highlight) {
-               this.is_highlight = is_highlight;
-       }
-
-       public String getHighlight_afbeelding() {
-               return highlight_afbeelding;
-       }
-
-       public void setHighlight_afbeelding(String highlight_afbeelding) {
-               this.highlight_afbeelding = highlight_afbeelding;
-       }
-
-       public String getHighlight_content() {
-               return highlight_content;
-       }
-
-       public void setHighlight_content(String highlight_content) {
-               this.highlight_content = highlight_content;
-       }
-
-         String db_id;
-         String titel;
-         String genre;
-         String soort;
-         String kijkwijzer;
-         String artikel_id;
-         Date datum_start;
-         Date datum_end;
-         boolean is_highlight;
-         String highlight_afbeelding;
-         String highlight_content;
-         ProgrammeDetails details = null;
-         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);
-                if(config.getCategories().containsKey(genre.toLowerCase())) {
-                        genre = config.getCategories().get(genre.toLowerCase());
-                }
-         }
-
-         public String toString() {
-                 StringBuffer s = new StringBuffer();
-                 s.append("id: " + db_id + ";");
-                 s.append("titel: " + titel + ";");
-                 s.append("genre: " + genre + ";");
-                 s.append("soort: " + soort + ";");
-                 s.append("kijkwijzer: " + kijkwijzer+ ";");
-                 s.append("artikel_id: " + artikel_id + ";");
-                 s.append("datum_start: " + datum_start + ";");
-                 s.append("datum_end: " + datum_end + ";");
-                 if (details != null) s.append("details:" + details.toString() );
-                 s.append("\n");
-                 
-                 return s.toString();
-         }
-}
index 533a6b7f476d088e25a778fae346cc4d099fc66f..39bf4fa15319042e7375631eaa96dda6e78de644 100644 (file)
@@ -32,41 +32,41 @@ import org.apache.commons.io.FileUtils;
 
 public class ProgrammeCache {
        private File cacheFile;
-       private Map<String,ProgrammeDetails> cache;
+       private Map<String,TvGidsProgrammeDetails> cache;
        
        public ProgrammeCache(File cacheFile) {
                this.cacheFile = cacheFile;
                if (cacheFile.canRead()) {
                        try {
-                               cache = (Map<String,ProgrammeDetails>) new ObjectInputStream( new FileInputStream( cacheFile ) ).readObject();
+                               cache = (Map<String,TvGidsProgrammeDetails>) new ObjectInputStream( new FileInputStream( cacheFile ) ).readObject();
                        } catch (InvalidClassException e) {
                                // TODO Auto-generated catch block
                                
-                               cache = new HashMap<String,ProgrammeDetails>();
+                               cache = new HashMap<String,TvGidsProgrammeDetails>();
                        } catch (ClassNotFoundException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
-                               cache = new HashMap<String,ProgrammeDetails>();
+                               cache = new HashMap<String,TvGidsProgrammeDetails>();
                        } catch (FileNotFoundException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
-                               cache = new HashMap<String,ProgrammeDetails>();
+                               cache = new HashMap<String,TvGidsProgrammeDetails>();
                        } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
-                               cache = new HashMap<String,ProgrammeDetails>();
+                               cache = new HashMap<String,TvGidsProgrammeDetails>();
                        }
                } else {
-                       cache = new HashMap<String,ProgrammeDetails>();
+                       cache = new HashMap<String,TvGidsProgrammeDetails>();
                }
                // FileUtils.forceMkdir(root);
        }
        
-       public ProgrammeDetails getDetails(String id) {
+       public TvGidsProgrammeDetails getDetails(String id) {
                return cache.get(id);
        }
        
-       public void add(String id, ProgrammeDetails d) {
+       public void add(String id, TvGidsProgrammeDetails d) {
                cache.put(id, d);
        }
        
diff --git a/src/main/java/org/vanbest/xmltv/ProgrammeDetails.java b/src/main/java/org/vanbest/xmltv/ProgrammeDetails.java
deleted file mode 100644 (file)
index 976f5cb..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-package org.vanbest.xmltv;
-
-/*
-  Copyright (c) 2012 Jan-Pascal van Best <janpascal@vanbest.org>
-
-  This program is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; either version 2 of the License, or
-  (at your option) any later version.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  The full license text can be found in the LICENSE file.
-*/
-
-import java.io.Serializable;
-
-public class ProgrammeDetails implements Serializable {
-       String db_id;
-       String titel;
-       String datum;
-       String btijd;
-       String etijd;
-       String synop;
-       String kijkwijzer;
-       String genre;
-       String presentatie;
-       String acteursnamen_rolverdeling;
-       String regisseur;
-       String zender_id;
-       public boolean subtitle_teletekst = false;
-       public boolean stereo = false;
-       public boolean blacknwhite = false;
-       public boolean breedbeeld = false;
-       public String quality = null;
-       public boolean herhaling = false;
-       
-       public void fixup(Programme 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>", " ").
-                               replaceAll("<br />", " ").
-                               replaceAll("<p>", " ").
-                               replaceAll("</p>", " ").
-                               replaceAll("<strong>", " ").
-                               replaceAll("</strong>", " ").
-                               replaceAll("<em>", " ").
-                               replaceAll("</em>", " ").
-                               trim();
-               if ((synop == null || synop.isEmpty()) && ( genre == null || (!genre.toLowerCase().equals("movies") && !genre.toLowerCase().equals("film")))) {
-                       String[] parts = p.titel.split("[[:space:]]*:[[:space:]]*", 2);
-                       if (parts.length >= 2 ) {
-                               if (!quiet) {
-                                       System.out.println("Splitting title from \"" + p.titel + "\" to: \"" + parts[0].trim() + "\"; synop: \"" + parts[1].trim() + "\"");
-                               }
-                               titel = parts[0].trim();
-                               p.titel = titel;
-                               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);
-       }
-
-       public String getDb_id() {
-               return db_id;
-       }
-       public void setDb_id(String db_id) {
-               this.db_id = db_id;
-       }
-       public String getTitel() {
-               return titel;
-       }
-       public void setTitel(String titel) {
-               this.titel = titel;
-       }
-       public String getDatum() {
-               return datum;
-       }
-       public void setDatum(String datum) {
-               this.datum = datum;
-       }
-       public String getBtijd() {
-               return btijd;
-       }
-       public void setBtijd(String btijd) {
-               this.btijd = btijd;
-       }
-       public String getEtijd() {
-               return etijd;
-       }
-       public void setEtijd(String etijd) {
-               this.etijd = etijd;
-       }
-       public String getSynop() {
-               return synop;
-       }
-       public void setSynop(String synop) {
-               this.synop = synop;
-       }
-       public String getKijkwijzer() {
-               return kijkwijzer;
-       }
-       public void setKijkwijzer(String kijkwijzer) {
-               this.kijkwijzer = kijkwijzer;
-       }
-       public String getGenre() {
-               return genre;
-       }
-       public void setGenre(String genre) {
-               this.genre = genre;
-       }
-       public String getPresentatie() {
-               return presentatie;
-       }
-       public void setPresentatie(String presentatie) {
-               this.presentatie = presentatie;
-       }
-       public String getActeursnamen_rolverdeling() {
-               return acteursnamen_rolverdeling;
-       }
-       public void setActeursnamen_rolverdeling(String acteursnamen_rolverdeling) {
-               this.acteursnamen_rolverdeling = acteursnamen_rolverdeling;
-       }
-       public String getRegisseur() {
-               return regisseur;
-       }
-       public void setRegisseur(String regisseur) {
-               this.regisseur = regisseur;
-       }
-       public String getZender_id() {
-               return zender_id;
-       }
-       public void setZender_id(String zender_id) {
-               this.zender_id = zender_id;
-       }
-       @Override
-       public String toString() {
-               return "ProgrammeDetails [db_id=" + db_id + ", titel=" + titel
-                               + ", datum=" + datum + ", btijd=" + btijd + ", etijd=" + etijd
-                               + ", synop=" + synop + ", kijkwijzer=" + kijkwijzer
-                               + ", genre=" + genre + ", presentatie=" + presentatie
-                               + ", acteursnamen_rolverdeling=" + acteursnamen_rolverdeling
-                               + ", regisseur=" + regisseur + ", zender_id=" + zender_id + "]";
-       }
-}
index e6241a3b57922bceb896332c8ee951d6bf838ac1..e23e8c205dde97ac10d71aa3d3f99a0fd6a821bc 100644 (file)
@@ -28,7 +28,7 @@ import org.w3c.dom.Document;
 import org.w3c.dom.Element;\r
 import org.xml.sax.SAXException;\r
 \r
-public class RTL implements EPGSource {\r
+public class RTL extends AbstractEPGSource implements EPGSource  {\r
 \r
        static final String programme_url="http://www.rtl.nl/active/epg_data/dag_data/";\r
        static final String detail_url="http://www.rtl.nl/active/epg_data/uitzending_data/";\r
@@ -36,6 +36,10 @@ public class RTL implements EPGSource {
        \r
        Stats stats = new Stats();\r
 \r
+       public RTL(Config config) {\r
+               super(config);\r
+       }\r
+\r
        public List<Channel> getChannels() {\r
                List<Channel> result = new ArrayList<Channel>(10);\r
 \r
@@ -69,20 +73,6 @@ public class RTL implements EPGSource {
                return result;\r
        }\r
        \r
-       protected String fetchURL(URL url) throws Exception {\r
-               StringBuffer buf = new StringBuffer();\r
-               try {\r
-                       BufferedReader reader = new BufferedReader( new InputStreamReader( url.openStream()));\r
-                       String s;\r
-                       while ((s = reader.readLine()) != null) buf.append(s);\r
-               } catch (IOException e) {\r
-                       stats.fetchErrors++;\r
-                       throw new Exception("Error getting program data from url " + url, e);\r
-               }\r
-               return buf.toString();  \r
-       }\r
-\r
-\r
        protected void fetchDay(int day) throws Exception {\r
                URL url = new URL(programme_url+day);\r
                String xmltext = fetchURL(url);\r
@@ -147,22 +137,8 @@ public class RTL implements EPGSource {
                Element root = xml.getDocumentElement();\r
        }\r
 \r
-\r
-       @Override\r
-       public void close() throws FileNotFoundException, IOException {\r
-               // TODO Auto-generated method stub\r
-               \r
-       }\r
-\r
-       @Override\r
-       public Set<Programme> getProgrammes(Channel channel, int day,\r
-                       boolean fetchDetails) throws Exception {\r
-               // TODO Auto-generated method stub\r
-               return null;\r
-       }\r
-\r
        @Override\r
-       public Set<Programme> getProgrammes(List<Channel> channels, int day,\r
+       public Set<TvGidsProgramme> getProgrammes(List<Channel> channels, int day,\r
                        boolean fetchDetails) throws Exception {\r
                // TODO Auto-generated method stub\r
                return null;\r
@@ -191,7 +167,9 @@ public class RTL implements EPGSource {
                        writer.writeCharacters("\n");\r
                        writer.writeStartElement("tv");\r
                        for(Channel c: channels) {c.serialize(writer);}\r
-                       System.out.flush();\r
+                       writer.writeEndElement();\r
+                       writer.writeEndDocument();\r
+                       writer.flush();\r
                } catch (Exception e) {\r
                        // TODO Auto-generated catch block\r
                        e.printStackTrace();\r
index d7899dfa26e4e2317eb25b0ddaa9c80b01f7a8ad..6dba44a815ce8505f7cf56fb84f702d58ba6202a 100644 (file)
@@ -163,8 +163,8 @@ public class TvGids extends AbstractEPGSource implements EPGSource {
         * @see org.vanbest.xmltv.EPGSource#getProgrammes(java.util.List, int, boolean)
         */
        @Override
-       public Set<Programme> getProgrammes(List<Channel> channels, int day, boolean fetchDetails) throws Exception {
-               Set<Programme> result = new HashSet<Programme>();
+       public Set<TvGidsProgramme> getProgrammes(List<Channel> channels, int day, boolean fetchDetails) throws Exception {
+               Set<TvGidsProgramme> result = new HashSet<TvGidsProgramme>();
                URL url = programmeUrl(channels, day);
 
                JSONObject jsonObject = fetchJSON(url);  
@@ -176,7 +176,7 @@ public class TvGids extends AbstractEPGSource implements EPGSource {
                                JSONArray programs = (JSONArray) ps;
                                for( int i=0; i<programs.size(); i++ ) {
                                        JSONObject programme = programs.getJSONObject(i);
-                                       Programme p = programmeFromJSON(programme, fetchDetails);
+                                       TvGidsProgramme p = programmeFromJSON(programme, fetchDetails);
                                        p.channel = c;
                                        result.add( p );
                                }
@@ -184,7 +184,7 @@ public class TvGids extends AbstractEPGSource implements EPGSource {
                                JSONObject programs = (JSONObject) ps;
                                for( Object o: programs.keySet() ) {
                                        JSONObject programme = programs.getJSONObject(o.toString());
-                                       Programme p = programmeFromJSON(programme, fetchDetails);
+                                       TvGidsProgramme p = programmeFromJSON(programme, fetchDetails);
                                        p.channel = c;
                                        result.add( p );
                                }
@@ -194,8 +194,8 @@ public class TvGids extends AbstractEPGSource implements EPGSource {
                return result;
        }
        
-       private Programme programmeFromJSON(JSONObject programme, boolean fetchDetails) throws Exception {
-               Programme p = (Programme) JSONObject.toBean(programme, Programme.class);
+       private TvGidsProgramme programmeFromJSON(JSONObject programme, boolean fetchDetails) throws Exception {
+               TvGidsProgramme p = (TvGidsProgramme) JSONObject.toBean(programme, TvGidsProgramme.class);
                p.fixup(config);
                if (fetchDetails) {
                        fillDetails(p);
@@ -206,27 +206,13 @@ public class TvGids extends AbstractEPGSource implements EPGSource {
                return p;
        }
 
-       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) {
-                       stats.fetchErrors++;
-                       throw new Exception("Error getting program data from url " + url, e);
-               }
-               return buf.toString();  
-       }
-
        private JSONObject fetchJSON(URL url) throws Exception {
                String json = fetchURL(url);
                if (config.logJSON()) System.out.println(json);
                return JSONObject.fromObject( json );  
        }
 
-       private void fillDetails(Programme p) throws Exception {
+       private void fillDetails(TvGidsProgramme p) throws Exception {
                Pattern progInfoPattern = Pattern.compile("prog-info-content.*prog-info-footer", Pattern.DOTALL);
                Pattern infoLinePattern = Pattern.compile("<li><strong>(.*?):</strong>(.*?)</li>");
                Pattern HDPattern = Pattern.compile("HD \\d+[ip]?");
@@ -238,7 +224,7 @@ public class TvGids extends AbstractEPGSource implements EPGSource {
                        
                        URL url = JSONDetailUrl(p.db_id);
                        JSONObject json = fetchJSON(url);
-                       p.details = (ProgrammeDetails) JSONObject.toBean(json, ProgrammeDetails.class);
+                       p.details = (TvGidsProgrammeDetails) JSONObject.toBean(json, TvGidsProgrammeDetails.class);
                        
                        url = HTMLDetailUrl(p.db_id);
                        String clob=fetchURL(url);
diff --git a/src/main/java/org/vanbest/xmltv/TvGidsProgramme.java b/src/main/java/org/vanbest/xmltv/TvGidsProgramme.java
new file mode 100644 (file)
index 0000000..c78fa82
--- /dev/null
@@ -0,0 +1,149 @@
+package org.vanbest.xmltv;
+
+/*
+  Copyright (c) 2012 Jan-Pascal van Best <janpascal@vanbest.org>
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  The full license text can be found in the LICENSE file.
+*/
+
+import java.util.Date;
+
+public class TvGidsProgramme {
+         public String getDb_id() {
+               return db_id;
+       }
+
+       public void setDb_id(String db_id) {
+               this.db_id = db_id;
+       }
+
+       public String getTitel() {
+               return titel;
+       }
+
+       public void setTitel(String titel) {
+               this.titel = titel;
+       }
+
+       public String getGenre() {
+               return genre;
+       }
+
+       public void setGenre(String genre) {
+               this.genre = genre;
+       }
+
+       public String getSoort() {
+               return soort;
+       }
+
+       public void setSoort(String soort) {
+               this.soort = soort;
+       }
+
+       public String getKijkwijzer() {
+               return kijkwijzer;
+       }
+
+       public void setKijkwijzer(String kijkwijzer) {
+               this.kijkwijzer = kijkwijzer;
+       }
+
+       public String getArtikel_id() {
+               return artikel_id;
+       }
+
+       public void setArtikel_id(String artikel_id) {
+               this.artikel_id = artikel_id;
+       }
+
+       public Date getDatum_start() {
+               return datum_start;
+       }
+
+       public void setDatum_start(Date datum_start) {
+               this.datum_start = datum_start;
+       }
+
+       public Date getDatum_end() {
+               return datum_end;
+       }
+
+       public void setDatum_end(Date datum_end) {
+               this.datum_end = datum_end;
+       }
+
+       public boolean isIs_highlight() {
+               return is_highlight;
+       }
+
+       public void setIs_highlight(boolean is_highlight) {
+               this.is_highlight = is_highlight;
+       }
+
+       public String getHighlight_afbeelding() {
+               return highlight_afbeelding;
+       }
+
+       public void setHighlight_afbeelding(String highlight_afbeelding) {
+               this.highlight_afbeelding = highlight_afbeelding;
+       }
+
+       public String getHighlight_content() {
+               return highlight_content;
+       }
+
+       public void setHighlight_content(String highlight_content) {
+               this.highlight_content = highlight_content;
+       }
+
+         String db_id;
+         String titel;
+         String genre;
+         String soort;
+         String kijkwijzer;
+         String artikel_id;
+         Date datum_start;
+         Date datum_end;
+         boolean is_highlight;
+         String highlight_afbeelding;
+         String highlight_content;
+         TvGidsProgrammeDetails details = null;
+         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);
+                if(config.getCategories().containsKey(genre.toLowerCase())) {
+                        genre = config.getCategories().get(genre.toLowerCase());
+                }
+         }
+
+         public String toString() {
+                 StringBuffer s = new StringBuffer();
+                 s.append("id: " + db_id + ";");
+                 s.append("titel: " + titel + ";");
+                 s.append("genre: " + genre + ";");
+                 s.append("soort: " + soort + ";");
+                 s.append("kijkwijzer: " + kijkwijzer+ ";");
+                 s.append("artikel_id: " + artikel_id + ";");
+                 s.append("datum_start: " + datum_start + ";");
+                 s.append("datum_end: " + datum_end + ";");
+                 if (details != null) s.append("details:" + details.toString() );
+                 s.append("\n");
+                 
+                 return s.toString();
+         }
+}
diff --git a/src/main/java/org/vanbest/xmltv/TvGidsProgrammeDetails.java b/src/main/java/org/vanbest/xmltv/TvGidsProgrammeDetails.java
new file mode 100644 (file)
index 0000000..37815a9
--- /dev/null
@@ -0,0 +1,151 @@
+package org.vanbest.xmltv;
+
+/*
+  Copyright (c) 2012 Jan-Pascal van Best <janpascal@vanbest.org>
+
+  This program is free software; you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation; either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  The full license text can be found in the LICENSE file.
+*/
+
+import java.io.Serializable;
+
+public class TvGidsProgrammeDetails implements Serializable {
+       String db_id;
+       String titel;
+       String datum;
+       String btijd;
+       String etijd;
+       String synop;
+       String kijkwijzer;
+       String genre;
+       String presentatie;
+       String acteursnamen_rolverdeling;
+       String regisseur;
+       String zender_id;
+       public boolean subtitle_teletekst = false;
+       public boolean stereo = false;
+       public boolean blacknwhite = false;
+       public boolean breedbeeld = false;
+       public String quality = null;
+       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>", " ").
+                               replaceAll("<br />", " ").
+                               replaceAll("<p>", " ").
+                               replaceAll("</p>", " ").
+                               replaceAll("<strong>", " ").
+                               replaceAll("</strong>", " ").
+                               replaceAll("<em>", " ").
+                               replaceAll("</em>", " ").
+                               trim();
+               if ((synop == null || synop.isEmpty()) && ( genre == null || (!genre.toLowerCase().equals("movies") && !genre.toLowerCase().equals("film")))) {
+                       String[] parts = p.titel.split("[[:space:]]*:[[:space:]]*", 2);
+                       if (parts.length >= 2 ) {
+                               if (!quiet) {
+                                       System.out.println("Splitting title from \"" + p.titel + "\" to: \"" + parts[0].trim() + "\"; synop: \"" + parts[1].trim() + "\"");
+                               }
+                               titel = parts[0].trim();
+                               p.titel = titel;
+                               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);
+       }
+
+       public String getDb_id() {
+               return db_id;
+       }
+       public void setDb_id(String db_id) {
+               this.db_id = db_id;
+       }
+       public String getTitel() {
+               return titel;
+       }
+       public void setTitel(String titel) {
+               this.titel = titel;
+       }
+       public String getDatum() {
+               return datum;
+       }
+       public void setDatum(String datum) {
+               this.datum = datum;
+       }
+       public String getBtijd() {
+               return btijd;
+       }
+       public void setBtijd(String btijd) {
+               this.btijd = btijd;
+       }
+       public String getEtijd() {
+               return etijd;
+       }
+       public void setEtijd(String etijd) {
+               this.etijd = etijd;
+       }
+       public String getSynop() {
+               return synop;
+       }
+       public void setSynop(String synop) {
+               this.synop = synop;
+       }
+       public String getKijkwijzer() {
+               return kijkwijzer;
+       }
+       public void setKijkwijzer(String kijkwijzer) {
+               this.kijkwijzer = kijkwijzer;
+       }
+       public String getGenre() {
+               return genre;
+       }
+       public void setGenre(String genre) {
+               this.genre = genre;
+       }
+       public String getPresentatie() {
+               return presentatie;
+       }
+       public void setPresentatie(String presentatie) {
+               this.presentatie = presentatie;
+       }
+       public String getActeursnamen_rolverdeling() {
+               return acteursnamen_rolverdeling;
+       }
+       public void setActeursnamen_rolverdeling(String acteursnamen_rolverdeling) {
+               this.acteursnamen_rolverdeling = acteursnamen_rolverdeling;
+       }
+       public String getRegisseur() {
+               return regisseur;
+       }
+       public void setRegisseur(String regisseur) {
+               this.regisseur = regisseur;
+       }
+       public String getZender_id() {
+               return zender_id;
+       }
+       public void setZender_id(String zender_id) {
+               this.zender_id = zender_id;
+       }
+       @Override
+       public String toString() {
+               return "ProgrammeDetails [db_id=" + db_id + ", titel=" + titel
+                               + ", datum=" + datum + ", btijd=" + btijd + ", etijd=" + etijd
+                               + ", synop=" + synop + ", kijkwijzer=" + kijkwijzer
+                               + ", genre=" + genre + ", presentatie=" + presentatie
+                               + ", acteursnamen_rolverdeling=" + acteursnamen_rolverdeling
+                               + ", regisseur=" + regisseur + ", zender_id=" + zender_id + "]";
+       }
+}
index 6375b469c14bd2990a52ce69bccca95be5fa769b..7a0339ff62b63cb51f7dcf68a4676dd643e7a882 100644 (file)
@@ -70,9 +70,9 @@ public class XmlTvWriter {
         *    artikel_id ???
         *              
         */
-       public void writePrograms(Collection<Programme> programs) throws XMLStreamException {
+       public void writePrograms(Collection<TvGidsProgramme> programs) throws XMLStreamException {
                DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss Z");
-               for(Programme p: programs) {
+               for(TvGidsProgramme p: programs) {
                        writer.writeStartElement("programme");
                                writer.writeAttribute("start", df.format(p.datum_start));
                                writer.writeAttribute("stop", df.format(p.datum_end));