package steamimmich import ( "os" "path/filepath" "regexp" "strings" ) func listScreenshots(steamUserdataDir string) (map[string][]string, error) { if _, err := os.Stat(steamUserdataDir); os.IsNotExist(err) { return nil, err } // Pattern: userdata//760/remote//screenshots reAppDir := regexp.MustCompile(`.*/760/remote/([0-9]+)/screenshots$`) screenshotFiles := make(map[string][]string) err := filepath.WalkDir(steamUserdataDir, func(path string, d os.DirEntry, err error) error { if err != nil { return nil } if !d.IsDir() { return nil } if reAppDir.MatchString(path) { appid := reAppDir.FindStringSubmatch(path)[1] files, _ := os.ReadDir(path) for _, f := range files { if f.IsDir() { continue } name := strings.ToLower(f.Name()) if strings.HasSuffix(name, ".jpg") || strings.HasSuffix(name, ".jpeg") || strings.HasSuffix(name, ".png") { fullPath := filepath.Join(path, f.Name()) screenshotFiles[appid] = append(screenshotFiles[appid], fullPath) } } } return nil }) if err != nil { return nil, err } return screenshotFiles, nil }