]> www.vanbest.org Git - tv_grab_nl_java/commitdiff
Merge branch 'master' of nogrod.vanbest.org:/var/lib/git/tv_grab_nl_java
authorJan-Pascal van Best <janpascal@vanbest.org>
Wed, 21 Mar 2012 08:22:13 +0000 (09:22 +0100)
committerJan-Pascal van Best <janpascal@vanbest.org>
Wed, 21 Mar 2012 08:22:13 +0000 (09:22 +0100)
1  2 
src/org/vanbest/xmltv/XmlTvWriter.java

index 483b3c41d027bf1b4d000cac2389d7ca0f856a20,0000000000000000000000000000000000000000..61d211a1f75a999ae6140a448803100aa36b449f
mode 100644,000000..100644
--- /dev/null
@@@ -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("<!DOCTYPE tv SYSTEM \"xmltv.dtd\">");
 +              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<Channel> 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<Programme> 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<p.details.kijkwijzer.length(); i++) {
 +                                                              if (i!=0) writer.writeCharacters(", ");
 +                                                              char c = p.details.kijkwijzer.charAt(i);
 +                                                              switch(c) {
 +                                                              case 'a':writer.writeCharacters("Angst"); break;
 +                                                              case 'd':writer.writeCharacters("Discriminatie"); break;
 +                                                              case 's':writer.writeCharacters("Seks"); break;
++                                                              case 'h':writer.writeCharacters("Drugs/Alcohol"); break;
 +                                                              case 'g':writer.writeCharacters("Geweld"); break;
 +                                                              case 't':writer.writeCharacters("Grof taalgebruik"); break;
 +                                                              case '1':writer.writeCharacters("Voor alle leeftijden"); break;
 +                                                              case '2':writer.writeCharacters("Afgeraden voor kinderen jonger dan 6 jaar"); 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: if (!config.quiet) {
 +                                                                      System.out.println("Unknown kijkwijzer character: " + p.details.kijkwijzer);
 +                                                                      System.out.println("    for show " + p.titel + " at channel " + p.channel.name + " at " + p.datum_start);
 +                                                              }
 +                                                              }
 +                                                      }
 +                                                      //writer.writeStartElement("value");
 +                                                      //      writer.writeCharacters(p.details.kijkwijzer);
 +                                                      //writer.writeEndElement();
 +                                                      writer.writeEndElement();
 +                                              writer.writeEndElement();
 +                                              writeln();
 +                                      }
 +                              }
 +                      writer.writeEndElement();
 +                      writeln();
 +              }
 +      }
 +      
 +      public void close() throws XMLStreamException {
 +              writer.writeEndElement();
 +              writer.writeEndDocument();
 +              writer.flush();
 +      }
 +
 +      public void flush() throws XMLStreamException {
 +              writer.flush();
 +      }
 +}