subsyt/main.go
Viktor Varland b8ab0fa2bb
All checks were successful
build / build (push) Successful in 1m53s
feat: load config from flag/env/fallback
2025-04-08 13:07:49 +02:00

58 lines
1.1 KiB
Go

package main
import (
"flag"
"log"
"os"
"path/filepath"
"git.meatbag.se/varl/subsyt/internal/config"
"git.meatbag.se/varl/subsyt/internal/dl"
"git.meatbag.se/varl/subsyt/internal/metadata"
"git.meatbag.se/varl/subsyt/internal/opml"
)
func main() {
configPtr := flag.String("config", "", "path to config file")
flag.Parse()
configEnv := os.Getenv("CONFIG")
var configPath string
if *configPtr != "" {
configPath = *configPtr
} else if configEnv != "" {
configPath = configEnv
} else {
configPath = "./config.toml"
}
log.Println("resolved config file", configPath)
cfg, err := config.Load(configPath)
if err != nil {
panic(err)
}
provider := cfg.Provider["youtube"]
opml, err := opml.Load(provider.Opml_file)
if err != nil {
panic(err)
}
for _, outlines := range opml.Body.Outline {
log.Printf("Archiving videos from OPML: %s\n", outlines.Title)
for _, outline := range outlines.Outlines {
dl.Youtube(dl.Download{
Url: outline.XmlUrl,
OutDir: filepath.Join(cfg.Out_dir, outline.Title),
DryRun: cfg.Dry_run,
}, provider)
metadata.Generate(cfg.Out_dir, outline.Title, cfg.Dry_run)
}
}
}