gopaper/files.go

48 lines
1.0 KiB
Go
Raw Normal View History

2024-10-26 23:48:00 +00:00
package main
import (
2024-10-29 15:18:21 +00:00
"fmt"
2024-10-26 23:48:00 +00:00
"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
var randomIndex int
var randomImg os.DirEntry
for {
randomIndex = rand.Intn(len(files))
randomImg = files[randomIndex]
//re-roll if you get a directory
2024-10-29 15:18:21 +00:00
if files[randomIndex].IsDir() {
fmt.Printf("%v is a directory\n", randomImg.Name())
continue
2024-10-27 16:21:28 +00:00
}
//re-roll if not a recognised image type
isImage, _ := regexp.Match(".jpg$|.jpeg$|.png$|.bmp$|.webp$", []byte(randomImg.Name()))
2024-10-29 15:18:21 +00:00
if !isImage {
fmt.Printf("%v is not a recognised image format\n", randomImg.Name())
continue
2024-10-27 16:21:28 +00:00
}
2024-10-29 15:18:21 +00:00
return dir + "/" + randomImg.Name(), randomImg.Name(), nil
2024-10-27 16:21:28 +00:00
}
2024-10-26 23:48:00 +00:00
}
2024-10-27 17:15:14 +00:00
2024-10-28 23:29:20 +00:00
func fileExistsInCache(filename string) (bool, error) {
2024-10-27 17:15:14 +00:00
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
}