newline battles continue
This commit is contained in:
150
vendor/github.com/mmcdole/gofeed/extensions/itunes.go
generated
vendored
Normal file
150
vendor/github.com/mmcdole/gofeed/extensions/itunes.go
generated
vendored
Normal file
@@ -0,0 +1,150 @@
|
||||
package ext
|
||||
|
||||
// ITunesFeedExtension is a set of extension
|
||||
// fields for RSS feeds.
|
||||
type ITunesFeedExtension struct {
|
||||
Author string `json:"author,omitempty"`
|
||||
Block string `json:"block,omitempty"`
|
||||
Categories []*ITunesCategory `json:"categories,omitempty"`
|
||||
Explicit string `json:"explicit,omitempty"`
|
||||
Keywords string `json:"keywords,omitempty"`
|
||||
Owner *ITunesOwner `json:"owner,omitempty"`
|
||||
Subtitle string `json:"subtitle,omitempty"`
|
||||
Summary string `json:"summary,omitempty"`
|
||||
Image string `json:"image,omitempty"`
|
||||
Complete string `json:"complete,omitempty"`
|
||||
NewFeedURL string `json:"newFeedUrl,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
}
|
||||
|
||||
// ITunesItemExtension is a set of extension
|
||||
// fields for RSS items.
|
||||
type ITunesItemExtension struct {
|
||||
Author string `json:"author,omitempty"`
|
||||
Block string `json:"block,omitempty"`
|
||||
Duration string `json:"duration,omitempty"`
|
||||
Explicit string `json:"explicit,omitempty"`
|
||||
Keywords string `json:"keywords,omitempty"`
|
||||
Subtitle string `json:"subtitle,omitempty"`
|
||||
Summary string `json:"summary,omitempty"`
|
||||
Image string `json:"image,omitempty"`
|
||||
IsClosedCaptioned string `json:"isClosedCaptioned,omitempty"`
|
||||
Episode string `json:"episode,omitempty"`
|
||||
Season string `json:"season,omitempty"`
|
||||
Order string `json:"order,omitempty"`
|
||||
EpisodeType string `json:"episodeType,omitempty"`
|
||||
}
|
||||
|
||||
// ITunesCategory is a category element for itunes feeds.
|
||||
type ITunesCategory struct {
|
||||
Text string `json:"text,omitempty"`
|
||||
Subcategory *ITunesCategory `json:"subcategory,omitempty"`
|
||||
}
|
||||
|
||||
// ITunesOwner is the owner of a particular itunes feed.
|
||||
type ITunesOwner struct {
|
||||
Email string `json:"email,omitempty"`
|
||||
Name string `json:"name,omitempty"`
|
||||
}
|
||||
|
||||
// NewITunesFeedExtension creates an ITunesFeedExtension given an
|
||||
// extension map for the "itunes" key.
|
||||
func NewITunesFeedExtension(extensions map[string][]Extension) *ITunesFeedExtension {
|
||||
feed := &ITunesFeedExtension{}
|
||||
feed.Author = parseTextExtension("author", extensions)
|
||||
feed.Block = parseTextExtension("block", extensions)
|
||||
feed.Explicit = parseTextExtension("explicit", extensions)
|
||||
feed.Keywords = parseTextExtension("keywords", extensions)
|
||||
feed.Subtitle = parseTextExtension("subtitle", extensions)
|
||||
feed.Summary = parseTextExtension("summary", extensions)
|
||||
feed.Image = parseImage(extensions)
|
||||
feed.Complete = parseTextExtension("complete", extensions)
|
||||
feed.NewFeedURL = parseTextExtension("new-feed-url", extensions)
|
||||
feed.Categories = parseCategories(extensions)
|
||||
feed.Owner = parseOwner(extensions)
|
||||
feed.Type = parseTextExtension("type", extensions)
|
||||
return feed
|
||||
}
|
||||
|
||||
// NewITunesItemExtension creates an ITunesItemExtension given an
|
||||
// extension map for the "itunes" key.
|
||||
func NewITunesItemExtension(extensions map[string][]Extension) *ITunesItemExtension {
|
||||
entry := &ITunesItemExtension{}
|
||||
entry.Author = parseTextExtension("author", extensions)
|
||||
entry.Block = parseTextExtension("block", extensions)
|
||||
entry.Duration = parseTextExtension("duration", extensions)
|
||||
entry.Explicit = parseTextExtension("explicit", extensions)
|
||||
entry.Subtitle = parseTextExtension("subtitle", extensions)
|
||||
entry.Summary = parseTextExtension("summary", extensions)
|
||||
entry.Keywords = parseTextExtension("keywords", extensions)
|
||||
entry.Image = parseImage(extensions)
|
||||
entry.IsClosedCaptioned = parseTextExtension("isClosedCaptioned", extensions)
|
||||
entry.Episode = parseTextExtension("episode", extensions)
|
||||
entry.Season = parseTextExtension("season", extensions)
|
||||
entry.Order = parseTextExtension("order", extensions)
|
||||
entry.EpisodeType = parseTextExtension("episodeType", extensions)
|
||||
return entry
|
||||
}
|
||||
|
||||
func parseImage(extensions map[string][]Extension) (image string) {
|
||||
if extensions == nil {
|
||||
return
|
||||
}
|
||||
|
||||
matches, ok := extensions["image"]
|
||||
if !ok || len(matches) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
image = matches[0].Attrs["href"]
|
||||
return
|
||||
}
|
||||
|
||||
func parseOwner(extensions map[string][]Extension) (owner *ITunesOwner) {
|
||||
if extensions == nil {
|
||||
return
|
||||
}
|
||||
|
||||
matches, ok := extensions["owner"]
|
||||
if !ok || len(matches) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
owner = &ITunesOwner{}
|
||||
if name, ok := matches[0].Children["name"]; ok {
|
||||
owner.Name = name[0].Value
|
||||
}
|
||||
if email, ok := matches[0].Children["email"]; ok {
|
||||
owner.Email = email[0].Value
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func parseCategories(extensions map[string][]Extension) (categories []*ITunesCategory) {
|
||||
if extensions == nil {
|
||||
return
|
||||
}
|
||||
|
||||
matches, ok := extensions["category"]
|
||||
if !ok || len(matches) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
categories = []*ITunesCategory{}
|
||||
for _, cat := range matches {
|
||||
c := &ITunesCategory{}
|
||||
if text, ok := cat.Attrs["text"]; ok {
|
||||
c.Text = text
|
||||
}
|
||||
|
||||
if subs, ok := cat.Children["category"]; ok {
|
||||
s := &ITunesCategory{}
|
||||
if text, ok := subs[0].Attrs["text"]; ok {
|
||||
s.Text = text
|
||||
}
|
||||
c.Subcategory = s
|
||||
}
|
||||
categories = append(categories, c)
|
||||
}
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user