Initial commit.
This commit is contained in:
		
						commit
						f12e7d4f51
					
				| 
						 | 
				
			
			@ -0,0 +1,55 @@
 | 
			
		|||
package feed
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/mmcdole/gofeed"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type Entry struct {
 | 
			
		||||
	Title      string
 | 
			
		||||
	Link       string
 | 
			
		||||
	Published  time.Time
 | 
			
		||||
	Categories []string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func EntryFromFeed(item *gofeed.Item) *Entry {
 | 
			
		||||
	t := time.Now()
 | 
			
		||||
	if item.UpdatedParsed != nil {
 | 
			
		||||
		t = *item.UpdatedParsed
 | 
			
		||||
	}
 | 
			
		||||
	e := &Entry{
 | 
			
		||||
		Title:      item.Title,
 | 
			
		||||
		Link:       item.Link,
 | 
			
		||||
		Published:  t,
 | 
			
		||||
		Categories: item.Categories,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return e
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type Feed struct {
 | 
			
		||||
	Title   string
 | 
			
		||||
	Link    string
 | 
			
		||||
	Updated time.Time
 | 
			
		||||
	Entries []*Entry
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func NewFromFeed(feed *gofeed.Feed) *Feed {
 | 
			
		||||
	t := time.Now()
 | 
			
		||||
	if feed.UpdatedParsed != nil {
 | 
			
		||||
		t = *feed.UpdatedParsed
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	f := &Feed{
 | 
			
		||||
		Title:   feed.Title,
 | 
			
		||||
		Link:    feed.Link,
 | 
			
		||||
		Updated: t,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, item := range feed.Items {
 | 
			
		||||
		f.Entries = append(f.Entries, EntryFromFeed(item))
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return f
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
module git.wntrmute.dev/kyle/locator
 | 
			
		||||
 | 
			
		||||
require (
 | 
			
		||||
	github.com/PuerkitoBio/goquery v1.8.0 // indirect
 | 
			
		||||
	github.com/andybalholm/cascadia v1.3.1 // indirect
 | 
			
		||||
	github.com/davecgh/go-spew v1.1.1 // indirect
 | 
			
		||||
	github.com/gregdel/pushover v1.2.0 // indirect
 | 
			
		||||
	github.com/json-iterator/go v1.1.12 // indirect
 | 
			
		||||
	github.com/mmcdole/gofeed v1.2.1 // indirect
 | 
			
		||||
	github.com/mmcdole/goxpp v1.1.0 // indirect
 | 
			
		||||
	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 | 
			
		||||
	github.com/modern-go/reflect2 v1.0.2 // indirect
 | 
			
		||||
	golang.org/x/net v0.4.0 // indirect
 | 
			
		||||
	golang.org/x/text v0.5.0 // indirect
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
go 1.20
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,32 @@
 | 
			
		|||
package main
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"os"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/davecgh/go-spew/spew"
 | 
			
		||||
	"github.com/mmcdole/gofeed"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var updateCycle = time.Minute
 | 
			
		||||
 | 
			
		||||
func checkFeed() error {
 | 
			
		||||
	fp := gofeed.NewParser()
 | 
			
		||||
	feed, err := fp.ParseURL("https://rpilocator.com/feed/")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	f, err := os.Create("feed.txt")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	defer f.Close()
 | 
			
		||||
 | 
			
		||||
	spew.Fdump(f, feed)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	checkFeed()
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue