diff --git a/youtubeWatcher/main.go b/youtubeWatcher/main.go index bcafb88..9f80189 100644 --- a/youtubeWatcher/main.go +++ b/youtubeWatcher/main.go @@ -74,9 +74,22 @@ func (w *RssWatcher) CheckFeed(videoUrls chan string) error { } for _, entry := range feed.Entry { + uploaded, err := time.Parse(time.RFC3339, entry.Published) + if err != nil { + return fmt.Errorf("[%s]: failed to parse published date: %w", w.Feed.Id, err) + } + if uploaded.Before(w.Feed.LastSeen) { + log.Printf("[%s]: Skipping video titled %q because it was uploaded before %s", w.Feed.Id, entry.Title, w.Feed.LastSeen.Format(time.RFC3339)) + continue + } log.Printf("[%s]: Found new video titled %q with url %q", w.Feed.Id, entry.Title, entry.Link.Href) videoUrls <- entry.Link.Href } + err = w.Feed.WriteLastSeen(time.Now()) + if err != nil { + return fmt.Errorf("[%s]: failed to write last seen: %w", w.Feed.Id, err) + } + w.Feed.LastSeen = time.Now() return nil }