48 lines
962 B
Go
48 lines
962 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 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
|
|
}
|