Add program to list SegmentMaps and Playlist durations

This commit is contained in:
lordwelch 2019-05-23 09:28:35 -07:00
parent 3d80d92e2a
commit 5ee60f97c2

58
cmd/mpls_map/main.go Normal file
View File

@ -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, ","))
}
}
}