|
- package recorder
-
- import (
- "encoding/json"
- "os"
- "path/filepath"
- "sort"
- "time"
- )
-
- type Recording struct {
- ID string `json:"id"`
- Start time.Time `json:"start"`
- CenterHz float64 `json:"center_hz"`
- Path string `json:"path"`
- }
-
- func ListRecordings(root string) ([]Recording, error) {
- entries, err := os.ReadDir(root)
- if err != nil {
- if os.IsNotExist(err) {
- return nil, nil
- }
- return nil, err
- }
- var out []Recording
- for _, e := range entries {
- if !e.IsDir() {
- continue
- }
- id := e.Name()
- metaPath := filepath.Join(root, id, "meta.json")
- b, err := os.ReadFile(metaPath)
- if err != nil {
- continue
- }
- var m Meta
- if err := json.Unmarshal(b, &m); err != nil {
- continue
- }
- out = append(out, Recording{ID: id, Start: m.Start, CenterHz: m.CenterHz, Path: filepath.Join(root, id)})
- }
- sort.Slice(out, func(i, j int) bool { return out[i].Start.After(out[j].Start) })
- return out, nil
- }
|