1
0
Fork 0
mirror of https://github.com/miniflux/v2.git synced 2025-07-12 16:58:36 +00:00

Add support for OPML files with several nested outlines

This commit is contained in:
Frédéric Guillot 2022-07-04 15:50:48 -07:00
parent 806a069785
commit f0a698c6fe
3 changed files with 94 additions and 54 deletions

View file

@ -25,5 +25,21 @@ func Parse(data io.Reader) (SubcriptionList, *errors.LocalizedError) {
return nil, errors.NewLocalizedError("Unable to parse OPML file: %q", err)
}
return opmlDocument.GetSubscriptionList(), nil
return getSubscriptionsFromOutlines(opmlDocument.Outlines, ""), nil
}
func getSubscriptionsFromOutlines(outlines opmlOutlineCollection, category string) (subscriptions SubcriptionList) {
for _, outline := range outlines {
if outline.IsSubscription() {
subscriptions = append(subscriptions, &Subcription{
Title: outline.GetTitle(),
FeedURL: outline.FeedURL,
SiteURL: outline.GetSiteURL(),
CategoryName: category,
})
} else if outline.Outlines.HasChildren() {
subscriptions = append(subscriptions, getSubscriptionsFromOutlines(outline.Outlines, outline.Text)...)
}
}
return subscriptions
}