diff options
author | Dmitry Ilvokhin <d@ilvokhin.com> | 2025-03-09 12:27:09 +0000 |
---|---|---|
committer | Dmitry Ilvokhin <d@ilvokhin.com> | 2025-03-09 12:27:09 +0000 |
commit | bf15c1bf65c0a340e38b953b4964aaf8beeb25c4 (patch) | |
tree | 2a2ad4f3d4855662abd5cc91a7b0711a3ea53f2b | |
parent | cf505d7ea6e3ef1e42613d3a7ed11ab10c737b24 (diff) | |
download | flatbot-bf15c1bf65c0a340e38b953b4964aaf8beeb25c4.tar.gz flatbot-bf15c1bf65c0a340e38b953b4964aaf8beeb25c4.tar.bz2 flatbot-bf15c1bf65c0a340e38b953b4964aaf8beeb25c4.zip |
Trim state file to prevent unbounded grow
-rw-r--r-- | flatbot.go | 18 |
1 files changed, 10 insertions, 8 deletions
@@ -76,27 +76,29 @@ func loopOnce() error { if err != nil { return err } + fetched := make([]flat, 0) for _, url := range flag.Args() { - sent, err = doOneURL(url, sent) + sent, fetched, err = doOneURL(url, sent, fetched) if err != nil { log.Print(err) continue } } - // TODO: trim sent file here? + sent = removeDelisted(sent, fetched) return writeSent(sent, *state) } -func doOneURL(url string, sent []flat) ([]flat, error) { +func doOneURL(url string, sent, fetched []flat) ([]flat, []flat, error) { body, err := fetch(url) if err != nil { - return sent, err + return sent, fetched, err } - fetched, err := parse(body) + parsed, err := parse(body) if err != nil { - return sent, err + return sent, fetched, err } - newFlats := removeAlreadySent(fetched, sent) + fetched = append(fetched, parsed...) + newFlats := removeAlreadySent(parsed, sent) m := messenger{ Token: *apiToken, ChatID: *chatID, @@ -113,7 +115,7 @@ func doOneURL(url string, sent []flat) ([]flat, error) { f.Price, f.URL()) sent = append(sent, f) } - return sent, nil + return sent, fetched, nil } func fetch(url string) ([]byte, error) { |