}
private void fillDetails(Programme 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]?");
+ Pattern kijkwijzerPattern = Pattern.compile("<img src=\"http://tvgidsassets.nl/img/kijkwijzer/.*?\" alt=\"(.*?)\" />");
+
p.details = cache.getDetails(p.db_id);
if ( p.details == null ) {
cacheMisses++;
String clob=fetchURL(url);
//System.out.println("clob:");
//System.out.println(clob);
- Pattern progInfoPattern = Pattern.compile("prog-info-content.*prog-info-footer", Pattern.DOTALL);
Matcher m = progInfoPattern.matcher(clob);
if (m.find()) {
String progInfo = m.group();
//System.out.println("progInfo");
//System.out.println(progInfo);
- Pattern infoLinePattern = Pattern.compile("<li><strong>(.*?):</strong>(.*?)</li>");
Matcher m2 = infoLinePattern.matcher(progInfo);
while (m2.find()) {
//System.out.println(" infoLine: " + m2.group());
String value = m2.group(2);
switch(key.toLowerCase()) {
case "bijzonderheden":
- if (value.toLowerCase().contains("subtitle_teletekst")) {
- p.details.subtitle_teletekst = true;
- }
- if (value.toLowerCase().contains("breedbeeld")) {
- p.details.breedbeeld = true;
- }
- if (value.toLowerCase().contains("zwart")) {
- p.details.blacknwhite = true;
- }
- if (value.toLowerCase().contains("stereo")) {
- p.details.stereo = true;
+ String[] list = value.split(",");
+ for( String item: list) {
+ if (item.toLowerCase().contains("teletekst")) {
+ p.details.subtitle_teletekst = true;
+ } else if (item.toLowerCase().contains("breedbeeld")) {
+ p.details.breedbeeld = true;
+ } else if (value.toLowerCase().contains("zwart")) {
+ p.details.blacknwhite = true;
+ } else if (value.toLowerCase().contains("stereo")) {
+ p.details.stereo = true;
+ } else if (value.toLowerCase().contains("herhaling")) {
+ p.details.herhaling = true;
+ } else {
+ Matcher m3 = HDPattern.matcher(value);
+ if (m3.find()) {
+ p.details.quality = m3.group();
+ } else {
+ if (!config.quiet) System.out.println(" Unknown value in 'bijzonderheden': " + item);
+ }
+ }
}
break;
}
- Pattern kijkwijzerPattern = Pattern.compile("<img src=\"http://tvgidsassets.nl/img/kijkwijzer/.*?\" alt=\"(.*?)\" />");
Matcher m3 = kijkwijzerPattern.matcher(progInfo);
boolean first=true;
while (m3.find()) {
if (first) {
- System.out.println(" (kijkwijzer): " + p.details.kijkwijzer);
+ //System.out.println(" (kijkwijzer): " + p.details.kijkwijzer);
first = false;
}
- System.out.println(" kijkwijzer: " + m3.group(1));
+ //System.out.println(" kijkwijzer: " + m3.group(1));
}
}
}
private XMLStreamWriter writer;
private XMLEventFactory eventFactory;
+ private Config config;
- public XmlTvWriter(OutputStream os) throws XMLStreamException, FactoryConfigurationError {
+ public XmlTvWriter(OutputStream os, Config config) throws XMLStreamException, FactoryConfigurationError {
+ this.config = config;
this.writer = XMLOutputFactory.newInstance().createXMLStreamWriter(os);
this.eventFactory = XMLEventFactory.newInstance();
* String highlight_content;
* soort
* artikel_id ???
- * p.details.subtitle_teletekst = true;
- p.details.breedbeeld = true;
- p.details.blacknwhite = true;
- p.details.stereo = true;
-
+ *
*/
public void writePrograms(Collection<Programme> programs) throws XMLStreamException {
DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss Z");
writer.writeCharacters(p.genre);
writer.writeEndElement();
writeln();
+
+ if (p.details.blacknwhite || p.details.breedbeeld) {
+ writer.writeStartElement("video");
+ if (p.details.blacknwhite) {
+ writer.writeStartElement("colour");
+ writer.writeCharacters("no");
+ writer.writeEndElement();
+ }
+ if (p.details.breedbeeld) {
+ writer.writeStartElement("aspect");
+ writer.writeCharacters("16x9");
+ writer.writeEndElement();
+ }
+ if (p.details.quality != null) {
+ writer.writeStartElement("quality");
+ writer.writeCharacters(p.details.quality);
+ writer.writeEndElement();
+ }
+ writer.writeEndElement();
+ writeln();
+ }
+
+ if (p.details.stereo) {
+ writer.writeStartElement("audio");
+ writer.writeStartElement("stereo");
+ writer.writeCharacters("stereo");
+ writer.writeEndElement();
+ writer.writeEndElement();
+ writeln();
+ }
+
+ if (p.details.herhaling) {
+ writer.writeEmptyElement("previously-shown");
+ }
+
+ if (p.details.subtitle_teletekst) {
+ writer.writeStartElement("subtitles");
+ writer.writeAttribute("type", "teletext");
+ writer.writeEndElement();
+ writeln();
+ }
+ /* Icon attribuut gebruiken?
+ * Juiste formaat voor meerdere ratings?
+ */
if (p.details.kijkwijzer != null && !p.details.kijkwijzer.isEmpty()) {
writer.writeStartElement("rating");
writer.writeAttribute("system", "kijkwijzer");
+ writer.writeStartElement("value");
for (int i=0; i<p.details.kijkwijzer.length(); i++) {
+ if (i!=0) writer.writeCharacters(", ");
char c = p.details.kijkwijzer.charAt(i);
- writer.writeStartElement("value");
switch(c) {
case 'a':writer.writeCharacters("Angst"); break;
case 'd':writer.writeCharacters("Discriminatie"); break;
case '9':writer.writeCharacters("Afgeraden voor kinderen jonger dan 9 jaar"); break;
case '3':writer.writeCharacters("Afgeraden voor kinderen jonger dan 12 jaar"); break;
case '4':writer.writeCharacters("Afgeraden voor kinderen jonger dan 16 jaar"); break;
- default: System.out.println("Unknown kijkwijzer character: " + p.details.kijkwijzer);
+ default: if (!config.quiet) System.out.println("Unknown kijkwijzer character: " + p.details.kijkwijzer);
}
- writer.writeEndElement();
}
//writer.writeStartElement("value");
// writer.writeCharacters(p.details.kijkwijzer);
//writer.writeEndElement();
+ writer.writeEndElement();
writer.writeEndElement();
writeln();
}