38 lines
636 B
Go
Executable File
38 lines
636 B
Go
Executable File
package feed
|
|
|
|
import (
|
|
"net/http"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/mmcdole/gofeed"
|
|
)
|
|
|
|
func Fetch(s string) ([]Item, error) {
|
|
resp, err := http.Get(s)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer resp.Body.Close()
|
|
|
|
gofeed, err := gofeed.NewParser().Parse(resp.Body)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
links := make([]Item, 0)
|
|
|
|
for _, item := range gofeed.Items {
|
|
timestamp := strings.Split(item.Title, " ")[1]
|
|
t, err := time.Parse("1/2/06", timestamp)
|
|
if err == nil {
|
|
links = append(links, Item{
|
|
Link: item.Link,
|
|
Title: strings.ReplaceAll(item.Title, "/", "-"),
|
|
Date: t,
|
|
})
|
|
}
|
|
}
|
|
return links, nil
|
|
}
|