aboutsummaryrefslogtreecommitdiff
path: root/reader/rss/rss.go
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--reader/rss/rss.go27
1 files changed, 25 insertions, 2 deletions
diff --git a/reader/rss/rss.go b/reader/rss/rss.go
index 3619ec68..cbb1bd19 100644
--- a/reader/rss/rss.go
+++ b/reader/rss/rss.go
@@ -122,6 +122,12 @@ type rssAuthor struct {
Inner string `xml:",innerxml"`
}
+type rssTitle struct {
+ XMLName xml.Name
+ Data string `xml:",chardata"`
+ Inner string `xml:",innerxml"`
+}
+
type rssEnclosure struct {
URL string `xml:"url,attr"`
Type string `xml:"type,attr"`
@@ -138,7 +144,7 @@ func (enclosure *rssEnclosure) Size() int64 {
type rssItem struct {
GUID string `xml:"guid"`
- Title string `xml:"title"`
+ Title []rssTitle `xml:"title"`
Links []rssLink `xml:"link"`
Description string `xml:"description"`
PubDate string `xml:"pubDate"`
@@ -223,7 +229,24 @@ func (r *rssItem) entryHash() string {
}
func (r *rssItem) entryTitle() string {
- return strings.TrimSpace(sanitizer.StripTags(r.Title))
+ var title string
+
+ for _, rssTitle := range r.Title {
+ switch rssTitle.XMLName.Space {
+ case "http://search.yahoo.com/mrss/":
+ // Ignore title in media namespace
+ case "http://purl.org/dc/elements/1.1/":
+ title = rssTitle.Data
+ default:
+ title = rssTitle.Data
+ }
+
+ if title != "" {
+ break
+ }
+ }
+
+ return strings.TrimSpace(sanitizer.StripTags(title))
}
func (r *rssItem) entryContent() string {