rss-parser/nvidia.go

82 lines
1.6 KiB
Go

package main
import (
"fmt"
"net/http"
"time"
"github.com/PuerkitoBio/goquery"
)
type NvidiaParser struct {
}
func (this NvidiaParser) Parse() []*RssEntry {
var result []*RssEntry
resp, err := http.Get(this.RootUrl() + "/publications")
if err != nil {
}
doc, err := goquery.NewDocumentFromResponse(resp)
// parse articles and links
doc.Find(".views-field-title").Each(func(i int, s *goquery.Selection) {
link := s.Find("a")
href, exists := link.Attr("href")
if exists {
result = append(result, &RssEntry{title: link.Text(), url: this.RootUrl() + href})
}
})
// parse times
for _, re := range result {
resp, err := http.Get(re.url)
if err != nil {
}
doc, err := goquery.NewDocumentFromResponse(resp)
re.descripiton = doc.Find(".field--type-text-with-summary").Text()
date, exists := doc.Find(".field--name-field-publication-date").Find("time").Attr("datetime")
if exists {
t, err := time.Parse(time.RFC3339, date)
if err == nil {
re.time = t
}
}
fmt.Println(re.url)
}
return result
}
func (this NvidiaParser) Title() string {
return "NVidia Research"
}
func (this NvidiaParser) Description() string {
return "NVidia Research papers"
}
func (this NvidiaParser) RootUrl() string {
return "https://research.nvidia.com"
}
func (this NvidiaParser) ImageUrl() string {
return this.RootUrl() + "/themes/custom/nvidia/favicon.ico"
}
func (this NvidiaParser) ServerUrl() string {
return "/nvidia"
}
func (this NvidiaParser) CacheName() string {
return "NvidiaParser"
}
func (this NvidiaParser) CacheTimeout() int {
return 7200
}