From 2c5ed41edb9b0aebe1fb6010181b82c30830921e Mon Sep 17 00:00:00 2001
From: Jan-Pascal van Best <janpascal@vanbest.org>
Date: Sat, 10 Mar 2012 14:07:51 +0100
Subject: [PATCH] Implement writing programs to xmltv format

---
 .../src/org/vanbest/xmltv/Main.java           |  1 +
 .../src/org/vanbest/xmltv/Programme.java      |  1 +
 .../src/org/vanbest/xmltv/TvGids.java         |  1 +
 .../src/org/vanbest/xmltv/XmlTvWriter.java    | 49 +++++++++++++++++++
 4 files changed, 52 insertions(+)

diff --git a/tv_grab_nl_java/src/org/vanbest/xmltv/Main.java b/tv_grab_nl_java/src/org/vanbest/xmltv/Main.java
index 105c2d3..281d8ba 100644
--- a/tv_grab_nl_java/src/org/vanbest/xmltv/Main.java
+++ b/tv_grab_nl_java/src/org/vanbest/xmltv/Main.java
@@ -22,6 +22,7 @@ public class Main {
 			
 			XmlTvWriter writer = new XmlTvWriter(System.out);
 			writer.writeChannels(myChannels);
+			writer.writePrograms(programmes);
 			System.out.flush();
 			
 		} catch (Exception e) {
diff --git a/tv_grab_nl_java/src/org/vanbest/xmltv/Programme.java b/tv_grab_nl_java/src/org/vanbest/xmltv/Programme.java
index ea75fd1..bebc3f0 100644
--- a/tv_grab_nl_java/src/org/vanbest/xmltv/Programme.java
+++ b/tv_grab_nl_java/src/org/vanbest/xmltv/Programme.java
@@ -94,6 +94,7 @@ public class Programme {
 	  boolean is_hightlight;
 	  String highlight_afbeelding;
 	  ProgrammeDetails details = null;
+	  Channel channel = null;
 	  
 	  public String toString() {
 		  StringBuffer s = new StringBuffer();
diff --git a/tv_grab_nl_java/src/org/vanbest/xmltv/TvGids.java b/tv_grab_nl_java/src/org/vanbest/xmltv/TvGids.java
index 44d4921..9aca65c 100644
--- a/tv_grab_nl_java/src/org/vanbest/xmltv/TvGids.java
+++ b/tv_grab_nl_java/src/org/vanbest/xmltv/TvGids.java
@@ -114,6 +114,7 @@ public class TvGids {
 				if (fetchDetails) {
 					p.details = getDetails(p.db_id);
 				}
+				p.channel = i;
 				result.add( p );
 			}
 		}
diff --git a/tv_grab_nl_java/src/org/vanbest/xmltv/XmlTvWriter.java b/tv_grab_nl_java/src/org/vanbest/xmltv/XmlTvWriter.java
index a22dfef..80e9f35 100644
--- a/tv_grab_nl_java/src/org/vanbest/xmltv/XmlTvWriter.java
+++ b/tv_grab_nl_java/src/org/vanbest/xmltv/XmlTvWriter.java
@@ -1,6 +1,9 @@
 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;
@@ -56,6 +59,52 @@ public class XmlTvWriter {
 		}
 	}
 	
+	/*
+	 * 
+	 * <programme stop="20120309060000 +0100" start="20120309055200 +0100" channel="609.chello.nl">
+<title lang="nl">
+Mozart - Così fan tutte
+</title>
+<desc lang="nl">
+Opera, opgenomen in 2006 in het Amsterdamse Muziektheater als onderdeel van de
+eigentijdse enscenering van de drie Da Ponte opera's met o.a. Sally Matthews en
+Maite Beaumont.
+</desc>
+<category lang="en">
+Arts/Culture
+</category>
+</programme>
+
+	 */
+
+	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.id);
+				
+				writer.writeStartElement("title");
+					writer.writeAttribute("lang", "nl");
+					writer.writeCharacters(p.titel);
+				writer.writeEndElement();
+
+				writer.writeStartElement("desc");
+					writer.writeAttribute("lang", "nl");
+					writer.writeCharacters(p.details.synop);
+				writer.writeEndElement();
+
+				writer.writeStartElement("category");
+					writer.writeAttribute("lang", "en");
+					writer.writeCharacters(p.genre); // soort? FIXME translation to mythtv categories
+				writer.writeEndElement();
+
+			writer.writeEndElement();
+			writer.writeCharacters("\n");
+		}
+	}
+	
 	public void close() throws XMLStreamException {
 		writer.writeEndElement();
 		writer.writeEndDocument();
-- 
2.39.5