diff --git a/main.go b/main.go index 7c5fd25..d7cac8f 100644 --- a/main.go +++ b/main.go @@ -14,7 +14,8 @@ func main() { if err != nil { log.Fatal("error loading .env file") } - util.ClearDownlods() + util.CleanupDownloadsDir() + util.StartDownloadsCleanup() ok := util.CheckFFmpeg() if !ok { log.Fatal("ffmpeg executable not found. please install it or add it to your PATH") diff --git a/util/misc.go b/util/misc.go index 5e838ba..7ff2aa1 100644 --- a/util/misc.go +++ b/util/misc.go @@ -7,6 +7,7 @@ import ( "os/exec" "path/filepath" "strings" + "time" "github.com/pkg/errors" @@ -111,10 +112,35 @@ func CheckFFmpeg() bool { return err == nil } -func ClearDownlods() { - downloadsDir := os.Getenv("DOWNLOADS_DIR") +func CleanupDownloadsDir() { + downloadsDir := os.Getenv("DOWNLOAD_DIR") if downloadsDir == "" { downloadsDir = "downloads" } - os.RemoveAll(downloadsDir) + filepath.Walk(downloadsDir, func(path string, info os.FileInfo, err error) error { + if err != nil { + return nil + } + if path == downloadsDir { + return nil + } + if time.Since(info.ModTime()) > 30*time.Minute { + if info.IsDir() { + os.RemoveAll(path) + } else { + os.Remove(path) + } + } + return nil + }) +} + +func StartDownloadsCleanup() { + ticker := time.NewTicker(1 * time.Hour) + go func() { + for { + CleanupDownloadsDir() + <-ticker.C + } + }() }