first working version!
This commit is contained in:
parent
1bba7ef03d
commit
84de96df31
9 changed files with 689 additions and 80 deletions
90
scanner/scanner.go
Normal file
90
scanner/scanner.go
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
package scanner
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/pelletier/go-toml/v2"
|
||||
)
|
||||
|
||||
type (
|
||||
Category struct {
|
||||
Name string
|
||||
Type string
|
||||
Url string
|
||||
}
|
||||
|
||||
Metadata struct {
|
||||
Title string
|
||||
Date string
|
||||
Part int
|
||||
FootageDir string
|
||||
Category *Category
|
||||
}
|
||||
)
|
||||
|
||||
func FetchVideos(directory string) ([]string, error) {
|
||||
entries, err := os.ReadDir(directory)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
files := []string{}
|
||||
|
||||
for _, item := range entries {
|
||||
if item.IsDir() { continue }
|
||||
if !strings.HasSuffix(item.Name(), ".mkv") { continue }
|
||||
files = append(files, item.Name())
|
||||
}
|
||||
|
||||
return files, nil
|
||||
}
|
||||
|
||||
func FetchMetadata(directory string) (*Metadata, error) {
|
||||
entries, err := os.ReadDir(directory)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, item := range entries {
|
||||
if item.IsDir() { continue }
|
||||
if item.Name() == "metadata.toml" {
|
||||
metadata, err := ParseMetadata(filepath.Join(directory, item.Name()))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
metadata.FootageDir = filepath.Join(directory, metadata.FootageDir)
|
||||
return metadata, nil
|
||||
}
|
||||
}
|
||||
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func ParseMetadata(filename string) (*Metadata, error) {
|
||||
metadata := &Metadata{}
|
||||
file, err := os.OpenFile(filename, os.O_RDONLY, 0o644)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
err = toml.NewDecoder(file).Decode(metadata)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return metadata, nil
|
||||
}
|
||||
|
||||
func DefaultMetadata() Metadata {
|
||||
return Metadata{
|
||||
Title: "Untitled Stream",
|
||||
Date: time.Now().Format("2006-01-02"),
|
||||
Part: 0,
|
||||
Category: &Category{
|
||||
Name: "Something",
|
||||
Type: "",
|
||||
Url: "",
|
||||
},
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue