70 lines
1.4 KiB
Go
70 lines
1.4 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"
|
|
"git.meatbag.se/varl/subsyt/internal/scheduler"
|
|
)
|
|
|
|
func run(cfg config.Config) {
|
|
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)
|
|
}
|
|
}
|
|
}
|
|
|
|
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)
|
|
}
|
|
|
|
if cfg.Daemon {
|
|
log.Println("running with scheduler")
|
|
s := scheduler.Scheduler{}
|
|
s.Start(run, cfg)
|
|
} else {
|
|
log.Println("running standalone")
|
|
run(cfg)
|
|
}
|
|
}
|