gopaper/files.go

48 lines
969 B
Go

package main
import (
"math/rand"
"os"
"regexp"
)
func getRandomFile(dir string) (path string, filename string, error error) {
files, err := os.ReadDir(dir)
if err != nil {
return "", "", err
}
// for _, file := range files { fmt.Println(file.Name(), file.IsDir())
// }
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() == false {
break
}
//re-roll if not a recognised image type
isImage, _ := regexp.Match(".jpg$|.jpeg$|.png$|.bmp$|.webp$", []byte(randomImg.Name()))
if isImage {
break
}
}
return dir + "/" + randomImg.Name(), randomImg.Name(), nil
}
func fileExistsInCache(filename string) (bool, error) {
files, err := os.ReadDir("images")
if err != nil {
return false, err
}
for _, file := range files {
if file.Name() == filename {
return true, nil
}
}
return false, nil
}