|
@@ -0,0 +1,102 @@
|
|
|
+package main
|
|
|
+
|
|
|
+import (
|
|
|
+ "fmt"
|
|
|
+ "io"
|
|
|
+ "os"
|
|
|
+ "path/filepath"
|
|
|
+ "strings"
|
|
|
+)
|
|
|
+
|
|
|
+var (
|
|
|
+ KEEP_SRT bool = false
|
|
|
+)
|
|
|
+
|
|
|
+func scan_dir(dir string) ([]string, error) {
|
|
|
+ var r []string = []string{}
|
|
|
+ ls, err := os.ReadDir(dir)
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ for _, elem := range ls {
|
|
|
+ if elem.IsDir() {
|
|
|
+ rs, err := scan_dir(filepath.Join(dir, elem.Name()))
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ for _, e := range rs {
|
|
|
+ r = append(r, filepath.Join(elem.Name(), e))
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if strings.HasSuffix(elem.Name(), ".srt") {
|
|
|
+ if !KEEP_SRT {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ r = append(r, elem.Name())
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ if strings.HasSuffix(elem.Name(), ".info") {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ r = append(r, elem.Name())
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return r, nil
|
|
|
+}
|
|
|
+
|
|
|
+func main() {
|
|
|
+ // Keeps
|
|
|
+ if len(os.Args) != 1 {
|
|
|
+ for idx, arg := range os.Args {
|
|
|
+ if idx == 0 { // Skip program name
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ switch strings.ToLower(arg) {
|
|
|
+ case "srt":
|
|
|
+ KEEP_SRT = true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if KEEP_SRT {
|
|
|
+ fmt.Println("Keeping .srt's")
|
|
|
+ }
|
|
|
+ }
|
|
|
+ actions, err := scan_dir(".")
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("Err:", err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ fmt.Println("Found:", len(actions))
|
|
|
+ for _, a := range actions {
|
|
|
+ fmt.Println(a)
|
|
|
+ out, err := os.Create(filepath.Base(a))
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("Err (Create out):", err)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ in, err := os.Open(a)
|
|
|
+ if err != nil {
|
|
|
+ out.Close()
|
|
|
+ err1 := os.Remove(filepath.Base(a))
|
|
|
+ if err1 != nil {
|
|
|
+ fmt.Println("Err (Cleanup):", err1)
|
|
|
+ }
|
|
|
+ fmt.Println("Err (Open in):", err)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ _, err = io.Copy(out, in)
|
|
|
+ if err != nil {
|
|
|
+ in.Close()
|
|
|
+ out.Close()
|
|
|
+ err1 := os.Remove(filepath.Base(a))
|
|
|
+ if err1 != nil {
|
|
|
+ fmt.Println("Err (Cleanup):", err1)
|
|
|
+ }
|
|
|
+ fmt.Println("Err (Copy in -> out):", err)
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ err = os.RemoveAll(filepath.Dir(a))
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("Err (Remove):", err)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|