gopaper/files.go

48 lines
962 B
Go
Raw Normal View History

2024-10-26 23:48:00 +00:00
package main
import (
"math/rand"
"os"
2024-10-27 16:21:28 +00:00
"regexp"
2024-10-26 23:48:00 +00:00
)
2024-10-27 16:21:28 +00:00
func getRandomFile(dir string) (path string, filename string, error error) {
2024-10-26 23:48:00 +00:00
files, err := os.ReadDir(dir)
if err != nil {
2024-10-27 16:21:28 +00:00
return "", "", err
2024-10-26 23:48:00 +00:00
}
2024-10-27 16:21:28 +00:00
// 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
2024-10-26 23:48:00 +00:00
}
2024-10-27 17:15:14 +00:00
func fileExists(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
}