aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRené 'Necoro' Neumann <necoro@necoro.eu>2020-05-07 00:13:34 +0200
committerRené 'Necoro' Neumann <necoro@necoro.eu>2020-05-07 00:13:34 +0200
commit345887f3c8319c6dd91f20cd75615fd5c9fcf460 (patch)
tree7adb89358d95067d46cf011771502984b9002b3a
parent1bb9b56b214128cd98aabe66b41d0a05da3a0b05 (diff)
downloadfeed2imap-go-345887f3c8319c6dd91f20cd75615fd5c9fcf460.tar.gz
feed2imap-go-345887f3c8319c6dd91f20cd75615fd5c9fcf460.tar.bz2
feed2imap-go-345887f3c8319c6dd91f20cd75615fd5c9fcf460.zip
Unified publishedDate and updatedDate into one (just as the old feed2imap...)
Diffstat (limited to '')
-rw-r--r--CHANGELOG.md1
-rw-r--r--internal/feed/cache_v1.go31
-rw-r--r--internal/feed/item.go15
-rw-r--r--internal/feed/mail.go4
-rw-r--r--internal/feed/template/feed.tpl.go2
5 files changed, 32 insertions, 21 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c7a5636..1108509 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
- Default for `min-frequency` is now 0 instead of 1.
+- Fixed date parsing from feed. _Changes cache format!_
## [0.1.1] - 2020-05-04
diff --git a/internal/feed/cache_v1.go b/internal/feed/cache_v1.go
index e2562c3..18b12c3 100644
--- a/internal/feed/cache_v1.go
+++ b/internal/feed/cache_v1.go
@@ -41,14 +41,13 @@ type cachedFeed struct {
type itemHash [sha256.Size]byte
type cachedItem struct {
- Guid string
- Title string
- Link string
- PublishedDate time.Time
- UpdatedDate time.Time
- UpdatedCache time.Time
- Hash itemHash
- ID uuid.UUID
+ Guid string
+ Title string
+ Link string
+ Date time.Time
+ UpdatedCache time.Time
+ Hash itemHash
+ ID uuid.UUID
}
func (item cachedItem) String() string {
@@ -56,9 +55,8 @@ func (item cachedItem) String() string {
Title: %q
Guid: %q
Link: %q
- Published: %s
- Updated: %s
-}`, item.Title, item.Guid, item.Link, util.TimeFormat(item.PublishedDate), util.TimeFormat(item.UpdatedDate))
+ Date: %s
+}`, item.Title, item.Guid, item.Link, util.TimeFormat(item.Date))
}
func (cf *cachedFeed) Checked(withFailure bool) {
@@ -159,11 +157,8 @@ func (item *item) newCachedItem() cachedItem {
ci.ID = item.itemId
ci.Title = item.Item.Title
ci.Link = item.Item.Link
- if item.Item.PublishedParsed != nil {
- ci.PublishedDate = *item.Item.PublishedParsed
- }
- if item.Item.UpdatedParsed != nil && !item.Item.UpdatedParsed.Equal(ci.PublishedDate) {
- ci.UpdatedDate = *item.Item.UpdatedParsed
+ if item.DateParsed() != nil {
+ ci.Date = *item.DateParsed()
}
ci.Guid = item.Item.GUID
@@ -176,7 +171,7 @@ func (item *item) newCachedItem() cachedItem {
func (item *cachedItem) similarTo(other *cachedItem, ignoreHash bool) bool {
return other.Title == item.Title &&
other.Link == item.Link &&
- other.PublishedDate.Equal(item.PublishedDate) &&
+ other.Date.Equal(item.Date) &&
(ignoreHash || other.Hash == item.Hash)
}
@@ -215,7 +210,7 @@ func (cf *cachedFeed) filterItems(items []item, ignoreHash, alwaysNew bool) []it
CACHE_ITEMS:
for ci, item := range cacheItems {
log.Debugf("Now checking %s", ci)
- if cf.LastCheck.IsZero() || ci.PublishedDate.After(cf.LastCheck) {
+ if cf.LastCheck.IsZero() || ci.Date.After(cf.LastCheck) {
log.Debug("Newer than last check, including.")
item.addReason("time")
diff --git a/internal/feed/item.go b/internal/feed/item.go
index bbf7668..8b747fb 100644
--- a/internal/feed/item.go
+++ b/internal/feed/item.go
@@ -3,6 +3,7 @@ package feed
import (
"encoding/base64"
"fmt"
+ "time"
"github.com/google/uuid"
"github.com/mmcdole/gofeed"
@@ -27,6 +28,20 @@ type item struct {
itemId uuid.UUID
}
+func (item *item) DateParsed() *time.Time {
+ if item.UpdatedParsed == nil || item.UpdatedParsed.IsZero() {
+ return item.PublishedParsed
+ }
+ return item.UpdatedParsed
+}
+
+func (item *item) Date() string {
+ if item.Updated == "" {
+ return item.Published
+ }
+ return item.Updated
+}
+
// Creator returns the name of the creating author.
func (item *item) Creator() string {
if item.Author != nil {
diff --git a/internal/feed/mail.go b/internal/feed/mail.go
index 190e1f2..a763ef8 100644
--- a/internal/feed/mail.go
+++ b/internal/feed/mail.go
@@ -63,7 +63,7 @@ func (item *item) buildHeader() message.Header {
h.Set("Message-Id", item.messageId())
{ // date
- date := item.PublishedParsed
+ date := item.DateParsed()
if date == nil {
now := time.Now()
date = &now
@@ -73,7 +73,7 @@ func (item *item) buildHeader() message.Header {
{ // subject
subject := item.Title
if subject == "" {
- subject = item.Published
+ subject = item.Date()
}
if subject == "" {
subject = item.Link
diff --git a/internal/feed/template/feed.tpl.go b/internal/feed/template/feed.tpl.go
index 2f51bbe..c3aede5 100644
--- a/internal/feed/template/feed.tpl.go
+++ b/internal/feed/template/feed.tpl.go
@@ -64,7 +64,7 @@ const feedTpl = `{{- /*gotype:github.com/Necoro/feed2imap-go/internal/feed.feedi
{{end}}
<hr width="100%"/>
<table width="100%" cellpadding="0" cellspacing="0">
- {{template "bottomLine" (dict "descr" "Date:" "content" .Published)}}
+ {{template "bottomLine" (dict "descr" "Date:" "content" .Date)}}
{{template "bottomLine" (dict "descr" "Author:" "content" .Creator)}}
{{template "bottomLine" (dict "descr" "Filed under:" "content" (join ", " .Categories))}}
{{with .FeedLink}}