summaryrefslogtreecommitdiff
path: root/pkg/media/library.go
diff options
context:
space:
mode:
authordavy <davy.wybiral@gmail.com>2019-06-26 14:02:31 -0500
committerdavy <davy.wybiral@gmail.com>2019-06-26 14:02:31 -0500
commite1090a7583cfbb75fa03eb56d2b26d68732282cf (patch)
tree624e842a7a61b76330f8381c519f8e6e37a942a0 /pkg/media/library.go
parenta946d2b96618ff3d49364d272cb637af19e6d54e (diff)
import code
Diffstat (limited to 'pkg/media/library.go')
-rw-r--r--pkg/media/library.go56
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
+}