rss

A Go library for fetching, parsing, and updating RSS feeds.

  • 所有者: SlyMarbo/rss
  • 平台:
  • 許可證: Other
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

rss

GoDoc

RSS is a small library for simplifying the parsing of RSS and Atom feeds.
The package could do with more testing, but it conforms to the RSS 1.0, 2.0, and Atom 1.0
specifications, to the best of my ability. I've tested it with about 15 different feeds,
and it seems to work fine with them.

If anyone has any problems with feeds being parsed incorrectly, please let me know so that
I can debug and improve the package.

Dependencies:

go get github.com/axgle/mahonia

Example usage:

package main

import "github.com/SlyMarbo/rss"

func main() {
	feed, err := rss.Fetch("http://example.com/rss")
	if err != nil {
		// handle error.
	}
	
	// ... Some time later ...
	
	err = feed.Update()
	if err != nil {
		// handle error.
	}
}

The output structure is pretty much as you'd expect:

type Feed struct {
	Nickname    string              // This is not set by the package, but could be helpful.
	Title       string
	Description string
	Link        string              // Link to the creator's website.
	UpdateURL   string              // URL of the feed itself.
	Image       *Image              // Feed icon.
	Items       []*Item
	ItemMap     map[string]struct{} // Used in checking whether an item has been seen before.
	Refresh     time.Time           // Earliest time this feed should next be checked.
	Unread      uint32              // Number of unread items. Used by aggregators.
}

type Item struct {
	Title     string
	Summary   string
	Content   string
	Link      string
	Date      time.Time
	DateValid bool
	ID        string
	Read      bool
}

type Image struct {
	Title   string
	URL     string
	Height  uint32
	Width   uint32
}

The library does its best to follow the appropriate specifications and not to set the Refresh time
too soon. It currently follows all update time management methods in the RSS 1.0, 2.0, and Atom 1.0
specifications. If one is not provided, it defaults to 10 minute intervals. If you are having issues
with feed providors dropping connections, please let me know and I can increase this default, or you
can increase the Refresh time manually. The Feed.Update method uses this Refresh time, so if Update
seems to be returning very quickly with no new items, it's likely not making a request due to the
provider's Refresh interval.

This is seeing thorough use in RS3, but development is still active.

主要指標

概覽
名稱與所有者SlyMarbo/rss
主編程語言Go
編程語言Go (語言數: 1)
平台
許可證Other
所有者活动
創建於2013-03-14 17:34:35
推送於2024-04-21 15:02:28
最后一次提交2024-04-21 15:59:22
發布數6
最新版本名稱v1.0.5 (發布於 2022-09-21 07:58:34)
第一版名稱v1.0.0 (發布於 )
用户参与
星數409
關注者數18
派生數85
提交數133
已啟用問題?
問題數43
打開的問題數4
拉請求數33
打開的拉請求數0
關閉的拉請求數8
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?