From: Jan-Pascal van Best Date: Wed, 21 Mar 2012 08:22:13 +0000 (+0100) Subject: Merge branch 'master' of nogrod.vanbest.org:/var/lib/git/tv_grab_nl_java X-Git-Tag: 0.5~3 X-Git-Url: http://www.vanbest.org/gitweb/?a=commitdiff_plain;h=4c2811e144035d6a078122c4c74a46fda198629c;p=tv_grab_nl_java Merge branch 'master' of nogrod.vanbest.org:/var/lib/git/tv_grab_nl_java --- 4c2811e144035d6a078122c4c74a46fda198629c diff --cc src/org/vanbest/xmltv/XmlTvWriter.java index 483b3c4,0000000..61d211a mode 100644,000000..100644 --- a/src/org/vanbest/xmltv/XmlTvWriter.java +++ b/src/org/vanbest/xmltv/XmlTvWriter.java @@@ -1,232 -1,0 +1,233 @@@ +package org.vanbest.xmltv; + +import java.io.OutputStream; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Collection; +import java.util.List; + +import javax.xml.stream.FactoryConfigurationError; +import javax.xml.stream.XMLStreamWriter; +import javax.xml.stream.XMLOutputFactory; +import javax.xml.stream.XMLEventFactory; +import javax.xml.stream.XMLStreamException; + +public class XmlTvWriter { + + private XMLStreamWriter writer; + private XMLEventFactory eventFactory; + private Config config; + + public XmlTvWriter(OutputStream os, Config config) throws XMLStreamException, FactoryConfigurationError { + this.config = config; + this.writer = XMLOutputFactory.newInstance().createXMLStreamWriter(os); + this.eventFactory = XMLEventFactory.newInstance(); + + writer.writeStartDocument(); + writer.writeCharacters("\n"); + writer.writeDTD(""); + writer.writeCharacters("\n"); + writer.writeStartElement("tv"); + writer.writeAttribute("generator-info-url","http://www.vanbest.org/"); + writer.writeAttribute("source-info-url", "http://tvgids.nl/"); + writer.writeAttribute("source-info-name", "TvGids.nl"); + writer.writeAttribute("generator-info-name", "tv_grab_nl_java release 0.4"); + writeln(); + } + + public void writeln() throws XMLStreamException { + writer.writeCharacters(System.getProperty("line.separator")); + } + + public void writeChannels(List channels) throws XMLStreamException { + for(Channel c: channels) { + writer.writeStartElement("channel"); + writer.writeAttribute("id", c.getChannelId()); + writer.writeStartElement("display-name"); + writer.writeAttribute("lang", "nl"); + writer.writeCharacters(c.name); + writer.writeEndElement(); + + if (c.iconUrl != null) { + writer.writeStartElement("icon"); + writer.writeAttribute("src", c.iconUrl); + writer.writeEndElement(); + } + + writer.writeEndElement(); + writeln(); } + } + + /* TODO: + * boolean is_highlight; + * String highlight_afbeelding; + * String highlight_content; + * soort + * artikel_id ??? + * + */ + public void writePrograms(Collection programs) throws XMLStreamException { + DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss Z"); + for(Programme p: programs) { + writer.writeStartElement("programme"); + writer.writeAttribute("start", df.format(p.datum_start)); + writer.writeAttribute("stop", df.format(p.datum_end)); + writer.writeAttribute("channel", ""+p.channel.getChannelId()); + writeln(); + + writer.writeStartElement("title"); + writer.writeAttribute("lang", "nl"); + writer.writeCharacters(p.titel); + writer.writeEndElement(); + writeln(); + + if(p.details.synop != null && ! p.details.synop.isEmpty()) { + writer.writeStartElement("desc"); + writer.writeAttribute("lang", "nl"); + writer.writeCharacters(p.details.synop); + writer.writeEndElement(); + writeln(); + } + + if (p.details != null) { + if ( p.is_highlight) { + //System.out.println("Highlight"); + //System.out.println(" " + p.highlight_afbeelding); + //System.out.println(" " + p.highlight_content); + } else { + if (p.highlight_afbeelding!= null && !p.highlight_afbeelding.isEmpty()) { + //System.out.println("highlight_afbeelding: " + p.highlight_afbeelding); + } + if (p.highlight_content!= null && !p.highlight_content.isEmpty()) { + //System.out.println("highlight_content: " + p.highlight_content); + } + } + if ( (p.details.presentatie != null && !p.details.presentatie.isEmpty()) || + (p.details.regisseur != null && !p.details.regisseur.isEmpty()) || + (p.details.acteursnamen_rolverdeling != null && !p.details.acteursnamen_rolverdeling.isEmpty()) + ) { + writer.writeStartElement("credits"); + if (p.details.regisseur != null && !p.details.regisseur.isEmpty()) { + String[] parts = p.details.regisseur.split(","); + for (String s: parts) { + writer.writeStartElement("director"); + writer.writeCharacters(s.trim()); + writer.writeEndElement(); + } + } + if (p.details.acteursnamen_rolverdeling != null && !p.details.acteursnamen_rolverdeling.isEmpty()) { + String[] parts = p.details.acteursnamen_rolverdeling.split(","); + for (String s: parts) { + writer.writeStartElement("actor"); + writer.writeCharacters(s.trim()); + writer.writeEndElement(); + } + } + if (p.details.presentatie != null && !p.details.presentatie.isEmpty()) { + String[] parts = p.details.presentatie.split(","); + for (String s: parts) { + writer.writeStartElement("presenter"); + writer.writeCharacters(s.trim()); + writer.writeEndElement(); + } + } + writer.writeEndElement(); + writeln(); + } + writer.writeStartElement("category"); + writer.writeAttribute("lang", "en"); + 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(); + } + + /* TODO: Icon attribuut gebruiken? + */ + if (p.details.kijkwijzer != null && !p.details.kijkwijzer.isEmpty()) { + writer.writeStartElement("rating"); + writer.writeAttribute("system", "kijkwijzer"); + writer.writeStartElement("value"); + for (int i=0; i