package main import ( "log" "os" "path/filepath" "slices" "strings" ) type MediaFiles struct { EventType string SourcePath string SourceFolder string InFolder bool Arr string } func (m *MediaFiles) IsInFolder() { folderList := []string{"Movies", "4K-Movies", "Series", "4K-Series", "Kids", "Animes"} SplitFolder := strings.Split(m.SourceFolder, "/") LastFolder := SplitFolder[len(SplitFolder)-1] log.Printf("Found last folder to be: %v", LastFolder) ContainsFolder := slices.Contains(folderList, LastFolder) if !ContainsFolder { m.InFolder = true log.Printf("Movie %v is in a Folder\n", m.SourceFolder) } else { m.InFolder = false log.Printf("Movie %v is not in a Folder\n", m.SourceFolder) } } func main() { os.Setenv("radarr_moviefile_sourcepath", "/mnt/Multimedia/Download/PostProcess/Movies/Butchers.Crossing.2023.MULTi.1080p.WEB.x264-FW.mkv") os.Setenv("radarr_moviefile_sourcefolder", "/mnt/Multimedia/Download/PostProcess/Movies") os.Setenv("radarr_eventtype", "Download") ex, err := os.Executable() if err != nil { panic(err) } exPath := filepath.Dir(ex) f, err := os.OpenFile(exPath+"/log.txt", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) if err != nil { log.Fatalf("error opening file: %v", err) } defer f.Close() log.SetOutput(f) RadarrEventType := os.Getenv("radarr_eventtype") SonarrEventType := os.Getenv("sonarr_eventtype") m := &MediaFiles{} if RadarrEventType != "" { m.EventType = os.Getenv("radarr_eventtype") m.SourcePath = os.Getenv("radarr_moviefile_sourcepath") log.Printf("The Source Path is: %v", m.SourcePath) m.SourceFolder = os.Getenv("radarr_moviefile_sourcefolder") log.Printf("The Source Folder is: %v", m.SourceFolder) m.Arr = "Radarr" } if SonarrEventType != "" { m.EventType = os.Getenv("sonarr_eventtype") m.SourcePath = os.Getenv("sonarr_episodefile_sourcepath") log.Printf("The Source Path is: %v", m.SourcePath) m.SourceFolder = os.Getenv("radarr_moviefile_sourcefolder") log.Printf("The Source Folder is: %v", m.SourceFolder) m.Arr = "Sonarr" } m.IsInFolder() if m.InFolder { f, err := os.Open(m.SourceFolder) if err != nil { log.Println(err) return } files, err := f.Readdir(0) if err != nil { log.Println(err) return } mkvCount := 0 for _, v := range files { log.Println("Found file: " + v.Name()) if filepath.Ext(v.Name()) == ".mkv" { mkvCount += 1 } } log.Printf("Found %v MKV files in the folder", mkvCount) // if not in folder just delete the file } else { os.RemoveAll(m.SourcePath) log.Printf("Deleting the file %v", m.SourcePath) } }