first working version!

This commit is contained in:
ari melody 2026-01-28 10:48:14 +00:00
parent 1bba7ef03d
commit 84de96df31
Signed by: ari
GPG key ID: CF99829C92678188
9 changed files with 689 additions and 80 deletions

90
scanner/scanner.go Normal file
View 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: "",
},
}
}