From 5ee60f97c298f7541278762ef4f21df92c8e019f Mon Sep 17 00:00:00 2001 From: lordwelch Date: Thu, 23 May 2019 09:28:35 -0700 Subject: [PATCH] Add program to list SegmentMaps and Playlist durations --- cmd/mpls_map/main.go | 58 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 cmd/mpls_map/main.go diff --git a/cmd/mpls_map/main.go b/cmd/mpls_map/main.go new file mode 100644 index 0000000..538466b --- /dev/null +++ b/cmd/mpls_map/main.go @@ -0,0 +1,58 @@ +package main + +import ( + "flag" + "fmt" + "os" + "path/filepath" + "strings" + "time" + + "timmy.narnian.us/mpls" +) + +func main() { + var ( + err error + dir *os.File + files []string + Seconds int64 + ) + flag.Int64Var(&Seconds, "s", 120, "Minimum duration of playlist") + flag.Int64Var(&Seconds, "seconds", 120, "Minimum duration of playlist") + flag.Parse() + name := filepath.Join(flag.Arg(0), "BDMV", "PLAYLIST") + dir, err = os.Open(name) + if err != nil { + panic(err) + } + files, err = dir.Readdirnames(0) + if err != nil { + panic(err) + } + for _, v := range files { + var ( + file *os.File + playlist mpls.MPLS + duration time.Duration + ) + + file, err = os.Open(filepath.Join(name, v)) + if err != nil { + fmt.Fprintln(os.Stderr, err) + continue + } + + playlist, err = mpls.Parse(file) + if err != nil { + fmt.Fprintln(os.Stderr, err) + continue + } + if playlist.Duration > Seconds { + duration = time.Duration(playlist.Duration) * time.Second + fmt.Printf("%s %3d:%02d\n", v, int(duration.Minutes()), int(duration.Seconds())%60) + + fmt.Println(strings.Join(playlist.SegmentMap, ",")) + } + } +}