82 lines
1.6 KiB
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
|
|
}
|