59 lines
1.1 KiB
Go
59 lines
1.1 KiB
Go
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, ","))
|
|
}
|
|
}
|
|
}
|