package main import ( "fmt" "net/url" "os" "strings" "git.meatbag.se/varl/subsyt/internal/dl" "git.meatbag.se/varl/subsyt/internal/opml" toml "github.com/pelletier/go-toml/v2" ) type Provider struct { Url string } type Config struct { Out_dir string Provider map[string]Provider } func main() { data, err := os.ReadFile("./config.toml") if err != nil { panic(err) } cfg := Config{} err = toml.Unmarshal(data, &cfg) if err != nil { panic(err) } pUrl := cfg.Provider["youtube"].Url fmt.Printf("provider url: %s", pUrl) opml := opml.Unmarshal("./subs-opml.xml") fmt.Printf("XMLName: %#v\n", opml.XMLName) for _, outlines := range opml.Body.Outline { fmt.Printf("%s\n", outlines.Title) for _, outline := range outlines.Outlines { curl := strings.TrimPrefix(outline.XmlUrl, "/feed/") furl, err := url.JoinPath(pUrl, curl) if err != nil { panic(err) } fmt.Printf("%s - %s\n", outline.Text, furl) fullUrl, err := url.Parse(furl) if err != nil { panic(err) } dl.Get(dl.Download{ Name: outline.Title, Url: fullUrl, OutDir: cfg.Out_dir, AfterDate: "20250326", }) } } }