DeleteArr/DeleteArr.go
2023-12-17 18:27:22 +07:00

114 lines
2.6 KiB
Go

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