From b74352169597c320953e77aac87ee1fe1eccd4dd Mon Sep 17 00:00:00 2001 From: Lyric-c Date: Fri, 11 Aug 2023 14:13:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0feed=E6=97=B6=E4=B8=B2?= =?UTF-8?q?=E8=A1=8C=E6=94=B9=E4=B8=BA=E5=B9=B6=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.go | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/main.go b/main.go index a22e4e1..62b16a6 100644 --- a/main.go +++ b/main.go @@ -97,29 +97,36 @@ func wsHandler(w http.ResponseWriter, r *http.Request) { } func updateFeeds() { + var ( + tick = time.Tick(time.Duration(rssUrls.ReFresh) * time.Minute) + fp = gofeed.NewParser() + formattedTime = time.Now().Format("2006-01-02 15:04:05") + ) for { for _, url := range rssUrls.Values { - fp := gofeed.NewParser() - feed, err := fp.ParseURL(url) - if err != nil { - log.Printf("Error fetching feed: %v | %v", url, err) - continue - } - currentTime := time.Now() - formattedTime := currentTime.Format("2006-01-02 15:04:05") - feed.Custom = map[string]string{"lastupdate": formattedTime} - - feedJSON, err := json.Marshal(feed) - if err != nil { - log.Printf("Error marshaling feed: %v", err) - continue - } - dbMap.Store(url, string(feedJSON)) + go updateFeed(fp, url, formattedTime) } - time.Sleep(time.Duration(rssUrls.ReFresh) * time.Minute) + <-tick } } +func updateFeed(fp *gofeed.Parser, url, formattedTime string) { + feed, err := fp.ParseURL(url) + if err != nil { + log.Printf("Error fetching feed: %v | %v", url, err) + return + } + + feed.Custom = map[string]string{"lastupdate": formattedTime} + + feedJSON, err := json.Marshal(feed) + if err != nil { + log.Printf("Error marshaling feed: %v", err) + return + } + dbMap.Store(url, string(feedJSON)) +} + func getFeedsHandler(w http.ResponseWriter, r *http.Request) { feeds := make([]gofeed.Feed, 0, len(rssUrls.Values))