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
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
* </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
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
}\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
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
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
\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
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