From a9c35dec90c02f411a1665aae3a6d96876879e88 Mon Sep 17 00:00:00 2001 From: Dmitry Ilvokhin Date: Tue, 16 Dec 2025 18:06:41 +0000 Subject: Optimize memory usage of epgtrim/epgpruner Do not read entire file into the memory. Instead filter junk on the fly while reading the file. --- epgtrim/epgtrim.go | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 epgtrim/epgtrim.go (limited to 'epgtrim/epgtrim.go') 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 = `` + 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) + } +} -- cgit v1.2.3-70-g09d2