123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- 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)
- }
- }
- }
|