summaryrefslogtreecommitdiff
path: root/epgtrim/epgtrim.go
diff options
context:
space:
mode:
Diffstat (limited to 'epgtrim/epgtrim.go')
-rw-r--r--epgtrim/epgtrim.go61
1 files changed, 61 insertions, 0 deletions
diff --git a/epgtrim/epgtrim.go b/epgtrim/epgtrim.go
new file mode 100644
index 0000000..9fd8d7a
--- /dev/null
+++ b/epgtrim/epgtrim.go
@@ -0,0 +1,61 @@
+package main
+
+import (
+ "bufio"
+ "encoding/xml"
+ "flag"
+ "fmt"
+ "log"
+ "os"
+)
+
+var (
+ docType = `<!DOCTYPE tv SYSTEM "xmltv.dtd">`
+ output = flag.String(
+ "output",
+ "-",
+ "Write output to `file` (stdout by default)",
+ )
+)
+
+func usage() {
+ fmt.Fprintf(os.Stderr, "usage: epgpruner [-output file] URL\n")
+ flag.PrintDefaults()
+ os.Exit(2)
+}
+
+func main() {
+ log.SetPrefix("epgtrim: ")
+ log.SetFlags(0)
+ flag.Usage = usage
+ flag.Parse()
+ if flag.NArg() != 1 {
+ usage()
+ os.Exit(1)
+ }
+ URL := flag.Args()[0]
+
+ playlist, err := NewPlaylist(URL)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ outfile := os.Stdout
+ if *output != "-" {
+ f, err := os.Create(*output)
+ if err != nil {
+ log.Fatal(err)
+ }
+ outfile = f
+ defer f.Close()
+ }
+ wr := bufio.NewWriter(outfile)
+ defer wr.Flush()
+ wr.Write([]byte(xml.Header + docType + "\n"))
+ e := xml.NewEncoder(wr)
+ e.Indent("", " ")
+ err = e.Encode(playlist.Schedule.EPG)
+ if err != nil {
+ log.Fatal(err)
+ }
+}