diff options
Diffstat (limited to 'epgtrim/epgtrim.go')
| -rw-r--r-- | epgtrim/epgtrim.go | 61 |
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) + } +} |