handle isPermalink in rss feeds

This commit is contained in:
Nazar Kanaev
2023-05-20 23:26:22 +01:00
parent 7d99edab8d
commit bc18557820
3 changed files with 39 additions and 3 deletions

View File

@@ -20,7 +20,7 @@ type rssFeed struct {
}
type rssItem struct {
GUID string `xml:"guid"`
GUID rssGuid `xml:"guid"`
Title string `xml:"title"`
Link string `xml:"rss link"`
Description string `xml:"rss description"`
@@ -36,6 +36,11 @@ type rssItem struct {
media
}
type rssGuid struct {
GUID string `xml:",chardata"`
IsPermaLink string `xml:"isPermaLink,attr"`
}
type rssLink struct {
XMLName xml.Name
Data string `xml:",chardata"`
@@ -81,10 +86,15 @@ func ParseRSS(r io.Reader) (*Feed, error) {
}
}
permalink := ""
if srcitem.GUID.IsPermaLink == "true" {
permalink = srcitem.GUID.GUID
}
dstfeed.Items = append(dstfeed.Items, Item{
GUID: firstNonEmpty(srcitem.GUID, srcitem.Link),
GUID: firstNonEmpty(srcitem.GUID.GUID, srcitem.Link),
Date: dateParse(firstNonEmpty(srcitem.DublinCoreDate, srcitem.PubDate)),
URL: firstNonEmpty(srcitem.OrigLink, srcitem.Link),
URL: firstNonEmpty(srcitem.OrigLink, srcitem.Link, permalink),
Title: srcitem.Title,
Content: firstNonEmpty(srcitem.ContentEncoded, srcitem.Description),
AudioURL: podcastURL,