diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | Makefile | 7 | ||||
| -rw-r--r-- | walrss/internal/rss/processor.go | 29 | ||||
| -rw-r--r-- | writeVersionNumber.sh | 7 |
4 files changed, 35 insertions, 9 deletions
@@ -25,3 +25,4 @@ run/ bin/ +walrss/internal/state/version.go @@ -1,6 +1,6 @@ .PHONY: prebuild fmt -build: templates +build: templates writeVersionNumber mkdir -p bin go build -o bin/walrss github.com/codemicro/walrss/walrss @@ -12,4 +12,7 @@ fmt: go fmt github.com/codemicro/walrss/... templates: - qtc -skipLineComments -ext qtpl.html -dir walrss/internal/http/views
\ No newline at end of file + qtc -skipLineComments -ext qtpl.html -dir walrss/internal/http/views + +writeVersionNumber: + bash ./writeVersionNumber.sh
\ No newline at end of file diff --git a/walrss/internal/rss/processor.go b/walrss/internal/rss/processor.go index 214aaf2..b4572f9 100644 --- a/walrss/internal/rss/processor.go +++ b/walrss/internal/rss/processor.go @@ -42,8 +42,17 @@ func ProcessFeeds(st *state.State, day db.SendDay, hour int) error { return err } + var interval time.Duration + if ur.Schedule.Day == db.SendDaily { + interval = time.Hour * 24 + } else { + interval = time.Hour * 24 * 7 + } + var processedFeeds []*processedFeed + startTime := time.Now().UTC() + for _, f := range userFeeds { pf := new(processedFeed) pf.Name = f.Name @@ -52,13 +61,12 @@ func ProcessFeeds(st *state.State, day db.SendDay, hour int) error { if err != nil { pf.Error = err } else { - // TODO: this interval is wack - pf.Items = filterFeedContent(rawFeed, time.Date(2022, 04, 01, 0, 0, 0, 0, time.UTC)) + pf.Items = filterFeedContent(rawFeed, time.Now().UTC().Add(-interval)) } processedFeeds = append(processedFeeds, pf) } - plainContent, htmlContent, err := generateEmail(st, processedFeeds) + plainContent, htmlContent, err := generateEmail(st, processedFeeds, interval, time.Now().UTC().Sub(startTime)) if err != nil { return err } @@ -130,7 +138,7 @@ func filterFeedContent(feed *gofeed.Feed, earliestPublishTime time.Time) []*feed return o } -func generateEmail(st *state.State, processedItems []*processedFeed) (plain, html []byte, err error) { +func generateEmail(st *state.State, processedItems []*processedFeed, interval, timeToGenerate time.Duration) (plain, html []byte, err error) { sort.Slice(processedItems, func(i, j int) bool { pi, pj := processedItems[i], processedItems[j] @@ -147,8 +155,15 @@ func generateEmail(st *state.State, processedItems []*processedFeed) (plain, htm var sb strings.Builder - sb.WriteString("Here are the updates to the feeds you're subscribed to that have been published since we " + - "last sent you a digest.\n\n") + sb.WriteString("Here are the updates to the feeds you're subscribed to that have been published in the last ") + + if interval.Hours() == 24 { + sb.WriteString("24 hours") + } else { + sb.WriteString(fmt.Sprintf("%.0f days", interval.Hours()/24)) + } + + sb.WriteString(".\n\n") if len(processedItems) == 0 { sb.WriteString("*There's nothing to show here right now.*\n\n") @@ -197,7 +212,7 @@ func generateEmail(st *state.State, processedItems []*processedFeed) (plain, htm Product: hermes.Product{ Name: "Walrss", Link: st.Config.Server.ExternalURL, - Copyright: ":)", + Copyright: fmt.Sprintf("This email was generated in %.2f seconds by Walrss v%s.\nhttps://github.com/codemicro/walrss", timeToGenerate.Seconds(), state.Version), }, Theme: new(hermes.Flat), } diff --git a/writeVersionNumber.sh b/writeVersionNumber.sh new file mode 100644 index 0000000..1c3061e --- /dev/null +++ b/writeVersionNumber.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +cat << EOF > walrss/internal/state/version.go +package state + +const Version = "$(git rev-parse HEAD | head -c 7)" +EOF
\ No newline at end of file |
