shithub: rrss

Download patch

ref: 0237ae12582923c2d34bbd866a339540909a995c
parent: 9f1f55d40192f27dec4cd6dc2a24631c8921db48
author: telephil9 <telephil9@gmail.com>
date: Sun Jan 17 00:33:35 EST 2021

handle entry changes

	rrss does not use the date field when considering if an item has already been
	seen. This means that if an entry is updated, rrss won't pick it up again.
	We now include the date in the makeold()/isold() functions to fix this situation.

--- a/main.go	Wed Mar 11 13:44:11 2020
+++ b/main.go	Sun Jan 17 00:33:35 2021
@@ -64,29 +64,31 @@
 	return client.Do(req)
 }
 
-func isold(link string, path string) bool {
+func isold(date time.Time, link string, path string) bool {
 	file, err := os.OpenFile(path, os.O_CREATE|os.O_RDONLY, 0775)
 	if err != nil {
 		return true
 	}
 	defer file.Close()
+	s := fmt.Sprintf("%d_%s", date.Unix(), link);
 	scanner := bufio.NewScanner(file)
 	for scanner.Scan() {
-		if strings.Contains(link, scanner.Text()) {
+		if strings.Contains(s, scanner.Text()) {
 			return true
 		}
 	}
 	return false
 }
 
-func makeold(link string, path string) (int, error) {
+func makeold(date time.Time, link string, path string) (int, error) {
 	f, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0775)
 	defer f.Close()
 	check(err)
 	if link == "" {
 		link = "empty"
 	}
-	return f.WriteString(link + "\n")
+	s := fmt.Sprintf("%d_%s", date.Unix(), link);
+	return f.WriteString(s + "\n")
 }
 
 func writef(dir, filename, content string) {
@@ -120,7 +122,7 @@
 				check(err)
 			}
 		}
-		_, err := makeold(a.Link, links)
+		_, err := makeold(a.Date, a.Link, links)
 		check(err)
 	}
 }
@@ -137,7 +139,7 @@
 		d := fmt.Sprintf("%s/%d", dest, len(n))
 		ensuredir(d)
 		writef(d, "index.md", fmt.Sprintf("%s\n===\n\n%s\n", a.Title, a.Content))
-		_, err = makeold(a.Link, links)
+		_, err = makeold(a.Date, a.Link, links)
 		check(err)
 	}
 }
@@ -196,7 +198,7 @@
 		return nil
 	}
 	for _, i := range feed.Items {
-		if isold(i.Link, links) {
+		if isold(i.Date, i.Link, links) {
 			continue
 		}
 		a := Article{i.Title, i.Link, i.Date, conorsum(i), tags}