1
2
3
4
5
6 package rss
7
8 type RSS struct {
9 XMLName string `xml:"rss"`
10 Title string `xml:"channel>title"`
11 Link []Link `xml:"channel>link"`
12 Description string `xml:"channel>description"`
13 PubDate string `xml:"channel>pubDate,omitempty"`
14 LastBuildDate string `xml:"channel>lastBuildDate,omitempty"`
15 Items []*Item `xml:"channel>item"`
16 }
17
18 func (r *RSS) BaseLink() string {
19 for _, l := range r.Link {
20 if l.Rel == "" && l.Type == "" && l.Href == "" && l.Chardata != "" {
21 return l.Chardata
22 }
23 }
24 return ""
25 }
26
27 type Link struct {
28 Rel string `xml:"rel,attr"`
29 Href string `xml:"href,attr"`
30 Type string `xml:"type,attr"`
31 Chardata string `xml:",chardata"`
32 }
33
34 type Item struct {
35 Title string `xml:"title,omitempty"`
36 Link string `xml:"link,omitempty"`
37 Description string `xml:"description,omitempty"`
38 Author string `xml:"author,omitempty"`
39 Enclosure *Enclosure `xml:"enclosure"`
40 Guid *Guid `xml:"guid"`
41 PubDate string `xml:"pubDate,omitempty"`
42 Source *Source `xml:"source"`
43 Content string `xml:"encoded,omitempty"`
44 Date string `xml:"date,omitempty"`
45 Published string `xml:"published,omitempty"`
46 Media *MediaContent `xml:"content"`
47 }
48
49 type MediaContent struct {
50 XMLBase string `xml:"http://search.yahoo.com/mrss/ content"`
51 URL string `xml:"url,attr"`
52 Type string `xml:"type,attr"`
53 }
54
55 type Source struct {
56 Source string `xml:",chardata"`
57 Url string `xml:"url,attr"`
58 }
59
60 type Guid struct {
61 Guid string `xml:",chardata"`
62 IsPermaLink bool `xml:"isPermaLink,attr,omitempty"`
63 }
64
65 type Enclosure struct {
66 Url string `xml:"url,attr"`
67 Length string `xml:"length,attr,omitempty"`
68 Type string `xml:"type,attr"`
69 }