package main import ( "log" "math/rand" "os" "regexp" ) func getRandomFile(dir string) (path string, filename string, error error) { files, err := os.ReadDir(dir) if err != nil { return "", "", err } var randomIndex int var randomImg os.DirEntry for { randomIndex = rand.Intn(len(files)) randomImg = files[randomIndex] //re-roll if you get a directory if files[randomIndex].IsDir() { log.Printf("%v is a directory. Trying again... \n", randomImg.Name()) continue } //re-roll if not a recognised image type isImage, _ := regexp.Match(".jpg$|.jpeg$|.png$|.bmp$|.webp$", []byte(randomImg.Name())) if !isImage { log.Printf("%v is not a recognised image format\n", randomImg.Name()) continue } //TODO: re-roll if you get the same image return dir + "/" + randomImg.Name(), randomImg.Name(), nil } } func fileExistsInCache(filename string) (bool, error) { files, err := os.ReadDir(config.Cache) if err != nil { return false, err } for _, file := range files { if file.Name() == filename { return true, nil } } return false, nil }