diff options
| author | davy <davy.wybiral@gmail.com> | 2019-06-26 14:02:31 -0500 |
|---|---|---|
| committer | davy <davy.wybiral@gmail.com> | 2019-06-26 14:02:31 -0500 |
| commit | e1090a7583cfbb75fa03eb56d2b26d68732282cf (patch) | |
| tree | 624e842a7a61b76330f8381c519f8e6e37a942a0 /pkg/media/library.go | |
| parent | a946d2b96618ff3d49364d272cb637af19e6d54e (diff) | |
import code
Diffstat (limited to 'pkg/media/library.go')
| -rw-r--r-- | pkg/media/library.go | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/pkg/media/library.go b/pkg/media/library.go new file mode 100644 index 0000000..b18fe3a --- /dev/null +++ b/pkg/media/library.go @@ -0,0 +1,56 @@ +package media + +import ( + "io/ioutil" + "sort" + "strings" +) + +type Library struct { + Videos map[string]*Video +} + +func NewLibrary() *Library { + lib := &Library{ + Videos: make(map[string]*Video), + } + return lib +} + +func (lib *Library) Import(path string) error { + files, err := ioutil.ReadDir(path) + if err != nil { + return err + } + for _, info := range files { + name := info.Name() + v, err := ParseVideo(path + "/" + name) + if err != nil { + // Ignore files that can't be parsed + continue + } + // Set modified date property + v.Modified = info.ModTime().Format("2006-01-02") + // Default title is filename + if v.Title == "" { + v.Title = name + } + // ID is name without extension + idx := strings.LastIndex(name, ".") + if idx == -1 { + idx = len(name) + } + v.ID = name[:idx] + lib.Videos[v.ID] = v + } + return nil +} + +func (lib *Library) Playlist() Playlist { + pl := make(Playlist, 0) + for _, v := range lib.Videos { + pl = append(pl, v) + } + sort.Sort(pl) + return pl +} |
