75 lines
3.5 KiB
Go
75 lines
3.5 KiB
Go
// SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package itunes // import "miniflux.app/v2/internal/reader/itunes"
|
|
|
|
import "strings"
|
|
|
|
// Specs: https://help.apple.com/itc/podcasts_connect/#/itcb54353390
|
|
type ItunesChannelElement struct {
|
|
ItunesAuthor string `xml:"http://www.itunes.com/dtds/podcast-1.0.dtd author"`
|
|
ItunesBlock string `xml:"http://www.itunes.com/dtds/podcast-1.0.dtd block"`
|
|
ItunesCategories []ItunesCategoryElement `xml:"http://www.itunes.com/dtds/podcast-1.0.dtd category"`
|
|
ItunesComplete string `xml:"http://www.itunes.com/dtds/podcast-1.0.dtd complete"`
|
|
ItunesCopyright string `xml:"http://www.itunes.com/dtds/podcast-1.0.dtd copyright"`
|
|
ItunesExplicit string `xml:"http://www.itunes.com/dtds/podcast-1.0.dtd explicit"`
|
|
ItunesImage ItunesImageElement `xml:"http://www.itunes.com/dtds/podcast-1.0.dtd image"`
|
|
Keywords string `xml:"http://www.itunes.com/dtds/podcast-1.0.dtd keywords"`
|
|
ItunesNewFeedURL string `xml:"http://www.itunes.com/dtds/podcast-1.0.dtd new-feed-url"`
|
|
ItunesOwner ItunesOwnerElement `xml:"http://www.itunes.com/dtds/podcast-1.0.dtd owner"`
|
|
ItunesSummary string `xml:"http://www.itunes.com/dtds/podcast-1.0.dtd summary"`
|
|
ItunesTitle string `xml:"http://www.itunes.com/dtds/podcast-1.0.dtd title"`
|
|
ItunesType string `xml:"http://www.itunes.com/dtds/podcast-1.0.dtd type"`
|
|
}
|
|
|
|
func (i *ItunesChannelElement) GetItunesCategories() []string {
|
|
var categories []string
|
|
for _, category := range i.ItunesCategories {
|
|
categories = append(categories, category.Text)
|
|
if category.SubCategory != nil {
|
|
categories = append(categories, category.SubCategory.Text)
|
|
}
|
|
}
|
|
return categories
|
|
}
|
|
|
|
type ItunesItemElement struct {
|
|
ItunesAuthor string `xml:"http://www.itunes.com/dtds/podcast-1.0.dtd author"`
|
|
ItunesEpisode string `xml:"http://www.itunes.com/dtds/podcast-1.0.dtd episode"`
|
|
ItunesEpisodeType string `xml:"http://www.itunes.com/dtds/podcast-1.0.dtd episodeType"`
|
|
ItunesExplicit string `xml:"http://www.itunes.com/dtds/podcast-1.0.dtd explicit"`
|
|
ItunesDuration string `xml:"http://www.itunes.com/dtds/podcast-1.0.dtd duration"`
|
|
ItunesImage ItunesImageElement `xml:"http://www.itunes.com/dtds/podcast-1.0.dtd image"`
|
|
ItunesSeason string `xml:"http://www.itunes.com/dtds/podcast-1.0.dtd season"`
|
|
ItunesSubtitle string `xml:"http://www.itunes.com/dtds/podcast-1.0.dtd subtitle"`
|
|
ItunesSummary string `xml:"http://www.itunes.com/dtds/podcast-1.0.dtd summary"`
|
|
ItunesTitle string `xml:"http://www.itunes.com/dtds/podcast-1.0.dtd title"`
|
|
ItunesTranscript string `xml:"http://www.itunes.com/dtds/podcast-1.0.dtd transcript"`
|
|
}
|
|
|
|
type ItunesImageElement struct {
|
|
Href string `xml:"href,attr"`
|
|
}
|
|
|
|
type ItunesCategoryElement struct {
|
|
Text string `xml:"text,attr"`
|
|
SubCategory *ItunesCategoryElement `xml:"http://www.itunes.com/dtds/podcast-1.0.dtd category"`
|
|
}
|
|
|
|
type ItunesOwnerElement struct {
|
|
Name string `xml:"name"`
|
|
Email string `xml:"email"`
|
|
}
|
|
|
|
func (i *ItunesOwnerElement) String() string {
|
|
var name string
|
|
|
|
switch {
|
|
case i.Name != "":
|
|
name = i.Name
|
|
case i.Email != "":
|
|
name = i.Email
|
|
}
|
|
|
|
return strings.TrimSpace(name)
|
|
}
|