summaryrefslogtreecommitdiff
path: root/mkvtool
diff options
context:
space:
mode:
Diffstat (limited to 'mkvtool')
-rw-r--r--mkvtool/main.go45
-rw-r--r--mkvtool/utils.go78
2 files changed, 90 insertions, 33 deletions
diff --git a/mkvtool/main.go b/mkvtool/main.go
index eb13eec..5ce6de8 100644
--- a/mkvtool/main.go
+++ b/mkvtool/main.go
@@ -1,7 +1,6 @@
package main
import (
- "errors"
"flag"
"fmt"
"github.com/KurenaiRyu/MkvAutoSubset/mkvlib"
@@ -12,7 +11,6 @@ import (
"net/http"
"os"
"path"
- "path/filepath"
"regexp"
"runtime"
"strings"
@@ -66,6 +64,7 @@ func main() {
mks := false
ck := false
cks := false
+ t := false
sl, st := "", ""
af, ao := "", ""
flog := ""
@@ -191,6 +190,17 @@ func main() {
if len(*asses) > 0 {
if !processer.ASSFontSubset(*asses, af, ao, !ans, nil) {
ec++
+ } else if t {
+ d, _, _, _ := splitPath((*asses)[0])
+ if ao == "" {
+ ao = path.Join(d, "subsetted")
+ }
+ _asses, _ := findPath(ao, `\.ass$`)
+ if len(_asses) > 0 {
+ p := fmt.Sprintf("test-%s.a", randomStr(8))
+ p = path.Join(d, p)
+ processer.CreateTestVideo(_asses, ao, "nvenc_h264", p, nil)
+ }
}
return
}
@@ -272,34 +282,3 @@ func getLatestTag() {
}
}
}
-
-func findPath(path, expr string) (list []string, err error) {
- list = make([]string, 0)
- reg, e := regexp.Compile(expr)
- if e != nil {
- err = e
- return
- }
- err = queryPath(path, func(path string) bool {
- if expr == "" || reg.MatchString(path) {
- list = append(list, path)
- }
- return true
- })
- return
-}
-
-func queryPath(path string, cb func(string) bool) error {
- return filepath.Walk(path, func(path string, f os.FileInfo, err error) error {
- if f == nil {
- return err
- }
- if f.IsDir() {
- return nil
- }
- if cb(path) {
- return nil
- }
- return errors.New("call cb return false")
- })
-}
diff --git a/mkvtool/utils.go b/mkvtool/utils.go
new file mode 100644
index 0000000..95bdbfb
--- /dev/null
+++ b/mkvtool/utils.go
@@ -0,0 +1,78 @@
+package main
+
+import (
+ "errors"
+ "math/rand"
+ "os"
+ "path/filepath"
+ "regexp"
+ "strings"
+ "time"
+)
+
+func queryPath(path string, cb func(string) bool) error {
+ return filepath.Walk(path, func(path string, f os.FileInfo, err error) error {
+ if f == nil {
+ return err
+ }
+ if f.IsDir() {
+ return nil
+ }
+ if cb(path) {
+ return nil
+ }
+ return errors.New("call cb return false")
+ })
+}
+
+func findPath(path, expr string) (list []string, err error) {
+ list = make([]string, 0)
+ reg, e := regexp.Compile(expr)
+ if e != nil {
+ err = e
+ return
+ }
+ err = queryPath(path, func(path string) bool {
+ if expr == "" || reg.MatchString(path) {
+ list = append(list, path)
+ }
+ return true
+ })
+ return
+}
+
+func splitPath(p string) (dir, name, ext, namewithoutext string) {
+ dir, name = filepath.Split(p)
+ ext = filepath.Ext(name)
+ n := strings.LastIndex(name, ".")
+ if n > 0 {
+ namewithoutext = name[:n]
+ }
+ return
+}
+
+var r = rand.New(rand.NewSource(time.Now().UnixNano()))
+
+func randomN(n int) int {
+ return r.Intn(n)
+}
+
+func randomNumber(min, max int) int {
+ sub := max - min + 1
+ if sub <= 1 {
+ return min
+ }
+ return min + randomN(sub)
+}
+
+func randomStr(l int) string {
+ str := "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ bytes := []byte(str)
+ var result []byte
+ lstr := len(str) - 1
+ for i := 0; i < l; i++ {
+ n := randomNumber(0, lstr)
+ result = append(result, bytes[n])
+ }
+ return string(result)
+}