From f12e7d4f516a58efdeb44e12c81e552c39acd1f8 Mon Sep 17 00:00:00 2001 From: Kyle Isom Date: Tue, 23 May 2023 19:13:26 -0700 Subject: [PATCH] Initial commit. --- feed/feed.go | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++ go.mod | 17 ++++++++++++++++ main.go | 32 ++++++++++++++++++++++++++++++ 3 files changed, 104 insertions(+) create mode 100644 feed/feed.go create mode 100644 go.mod create mode 100644 main.go diff --git a/feed/feed.go b/feed/feed.go new file mode 100644 index 0000000..18f2d0a --- /dev/null +++ b/feed/feed.go @@ -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 +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..e6b640d --- /dev/null +++ b/go.mod @@ -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 diff --git a/main.go b/main.go new file mode 100644 index 0000000..7691a8f --- /dev/null +++ b/main.go @@ -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() +}