]> www.vanbest.org Git - tv_grab_nl_java/commitdiff
RTL: read end time
authorJan-Pascal van Best <janpascal@vanbest.org>
Tue, 27 Mar 2012 22:00:42 +0000 (00:00 +0200)
committerJan-Pascal van Best <janpascal@vanbest.org>
Tue, 27 Mar 2012 22:00:42 +0000 (00:00 +0200)
src/main/java/org/vanbest/xmltv/Programme.java
src/main/java/org/vanbest/xmltv/RTL.java

index ddbe0b36800d6a70900490932b699f1511a36c9f..2e53b503778bc8344a26b01a0d9d24c2e475a013 100644 (file)
@@ -110,6 +110,7 @@ public class Programme {
 
                writer.writeStartElement("programme");
                if(startTime != null) writer.writeAttribute("start", df.format(startTime));
+               if(endTime != null) writer.writeAttribute("stop", df.format(endTime));
                if(channel != null) writer.writeAttribute("channel", ""+channel.id);
                if(titles != null) {
                        for(Title title: titles) {
index 53f6491bb31b5b95168ea207d4dd7e3b0224ae06..45804a8f5b4f2efff0034222f64f8bccb062fabb 100644 (file)
@@ -13,6 +13,7 @@ import java.util.Calendar;
 import java.util.Date;\r
 import java.util.HashMap;\r
 import java.util.HashSet;\r
+import java.util.LinkedList;\r
 import java.util.List;\r
 import java.util.Map;\r
 import java.util.Set;\r
@@ -46,7 +47,7 @@ public class RTL extends AbstractEPGSource implements EPGSource  {
        private static final String detail_url="http://www.rtl.nl/active/epg_data/uitzending_data/";\r
        private static final String icon_url="http://www.rtl.nl/service/gids/components/vaste_componenten/";\r
        private static final String xmltv_channel_suffix = ".rtl.nl";\r
-       private static final int MAX_PROGRAMMES_PER_DAY = 5;\r
+       private static final int MAX_PROGRAMMES_PER_DAY = 99999;\r
        \r
        class RTLException extends Exception {\r
                public RTLException(String s) {\r
@@ -120,8 +121,9 @@ public class RTL extends AbstractEPGSource implements EPGSource  {
         * </uitzending_data>\r
 \r
         */\r
-       private void fetchDetail(Programme prog, String id) throws Exception {\r
+       private void fetchDetail(Programme prog, Date date, String id) throws Exception {\r
                URL url = detailUrl(id);\r
+               Thread.sleep(config.niceMilliseconds);\r
                Document xml = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(url.openStream());\r
                Element root = xml.getDocumentElement();\r
                if (root.hasAttributes()) {\r
@@ -142,7 +144,7 @@ public class RTL extends AbstractEPGSource implements EPGSource  {
                        NodeList subnodes = n.getChildNodes();\r
                        for( int j=0; j<subnodes.getLength(); j++) {\r
                                try {\r
-                                       handleNode(prog, subnodes.item(j));\r
+                                       handleNode(prog, date, subnodes.item(j));\r
                                } catch (RTLException e) {\r
                                        System.out.println(e.getMessage());\r
                                        Transformer t = TransformerFactory.newInstance().newTransformer();\r
@@ -155,7 +157,7 @@ public class RTL extends AbstractEPGSource implements EPGSource  {
        }\r
 \r
        \r
-       private void handleNode(Programme prog, Node n) throws RTLException {\r
+       private void handleNode(Programme prog, Date date, Node n) throws RTLException {\r
                if (n.getNodeType() != Node.ELEMENT_NODE) {\r
                        throw new RTLException("Ignoring non-element node " + n.getNodeName());\r
                }\r
@@ -164,15 +166,18 @@ public class RTL extends AbstractEPGSource implements EPGSource  {
                case "genre":\r
                        prog.addCategory(config.translateCategory(e.getTextContent()));\r
                        break;\r
+               case "eindtijd":\r
+                       prog.endTime = parseTime(date, e.getTextContent());\r
+                       break;\r
                default:\r
                        throw new RTLException("Ignoring unknown tag " + n.getNodeName() + ", content: \"" + e.getTextContent() + "\"");\r
                }\r
                //prog.endTime = parseTime(date, root.)\r
        }\r
 \r
-       public Set<Programme> getProgrammes1(List<Channel> channels, int day,\r
+       public List<Programme> getProgrammes1(List<Channel> channels, int day,\r
                        boolean fetchDetails) throws Exception {\r
-               Set<Programme> result = new HashSet<Programme>();\r
+               List<Programme> result = new LinkedList<Programme>();\r
                Map<String,Channel> channelMap = new HashMap<String,Channel>();\r
                for(Channel c: channels) {\r
                        if (c.enabled) channelMap.put(c.id, c);\r
@@ -209,7 +214,7 @@ public class RTL extends AbstractEPGSource implements EPGSource  {
                                Date start = parseTime(date, starttime);\r
                                prog.startTime = start;\r
                                prog.channel = channelMap.get(id);\r
-                               fetchDetail(prog, programme_id);\r
+                               fetchDetail(prog, date, programme_id);\r
                                result.add(prog);\r
                        }\r
                }\r
@@ -224,7 +229,7 @@ public class RTL extends AbstractEPGSource implements EPGSource  {
                        \r
                }\r
                int hour = Integer.parseInt(parts[0]);\r
-               if (hour<4) {\r
+               if (hour<5) {\r
                        result.add(Calendar.DAY_OF_MONTH, 1); // early tomorrow morning\r
                }\r
                result.set(Calendar.HOUR_OF_DAY, hour);\r
@@ -257,7 +262,7 @@ public class RTL extends AbstractEPGSource implements EPGSource  {
                        writer.writeCharacters("\n");\r
                        writer.writeStartElement("tv");\r
                        for(Channel c: channels) {c.serialize(writer);}\r
-                       Set<Programme> programmes = rtl.getProgrammes1(channels.subList(0, 3), 0, true);\r
+                       List<Programme> programmes = rtl.getProgrammes1(channels.subList(0, 3), 0, true);\r
                        for(Programme p: programmes) {p.serialize(writer);}\r
                        writer.writeEndElement();\r
                        writer.writeEndDocument();\r