package core import ( "backend/util" "io/fs" "os" "strings" "time" ) type PictureData struct { name string date time.Time album string } func listFiles(path string, actualdir string, picd []PictureData) []PictureData { entries, err := os.ReadDir(path) if err != nil { util.Logformat(util.WARNING, "Could not read files in '%s'\n", path) return picd } for _, entry := range entries { info, err := entry.Info() if err != nil { continue } if info.IsDir() { // fmt.Printf("\uf07b %s\n", entry.Name()) picd = listFiles(path+"/"+info.Name(), info.Name(), picd) } else { // fmt.Printf("\uf15b %s: %do\n", entry.Name(), info.Size()) picd = getFileInfo(info, picd, actualdir) } } return picd } func isPicture(s string) bool { extensions := []string{".jpg", ".jpeg", ".jfif", ".pjpeg", ".pjp", ".webp", ".png", ".apng", ".svg", ".avif"} for _, ext := range extensions { if strings.HasSuffix(s, ext) { return true } } return false } func getFileInfo(info fs.FileInfo, picd []PictureData, actualdir string) []PictureData { if isPicture(info.Name()) { picd = append(picd, PictureData{ name: info.Name(), date: info.ModTime(), album: actualdir, }) util.Logformatrn(util.INFO, "Reading %d files...", len(picd)) } return picd } func ListFiles(path string) []PictureData { var picd []PictureData picd = listFiles(path, "", picd) println("") if len(picd) == 0 { util.Logformat(util.ERROR, "Could not gather any file.\n") return nil } else { util.Logformat(util.CORRECT, "Gathered %d files.\n", len(picd)) return picd } }