Skip to content

Instantly share code, notes, and snippets.

@gyurisc
Created May 2, 2023 05:52
Show Gist options
  • Save gyurisc/a9d7d69a23a523a014719b03429559b6 to your computer and use it in GitHub Desktop.
Save gyurisc/a9d7d69a23a523a014719b03429559b6 to your computer and use it in GitHub Desktop.

Revisions

  1. gyurisc created this gist May 2, 2023.
    47 changes: 47 additions & 0 deletions FeedChecker.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,47 @@
    import feedparser
    import time

    def parse_feed(feed_url):
    rss_feed = feedparser.parse(feed_url)
    return rss_feed

    def get_latest_entries(rss_feed, last_updated):
    new_entries = []

    for entry in rss_feed.entries:
    entry_time = time.mktime(entry.published_parsed)

    if entry_time > last_updated:
    new_entries.append(entry)

    return new_entries

    def main():
    feed_url = "https://example.com/rss-feed" # Replace with your desired RSS feed URL
    update_interval = 5 * 60 # 5 minutes in seconds
    last_updated = 0

    while True:
    print("Checking for new RSS entries...")
    rss_feed = parse_feed(feed_url)

    if last_updated == 0:
    print("Initializing...")
    last_updated = time.mktime(rss_feed.feed.updated_parsed)
    else:
    new_entries = get_latest_entries(rss_feed, last_updated)

    if new_entries:
    print("New entries found:")
    for entry in new_entries:
    print("{} - {}".format(entry.title, entry.link))

    last_updated = time.mktime(rss_feed.feed.updated_parsed)
    else:
    print("No new entries found.")

    print("Waiting for {} minutes...".format(update_interval/60))
    time.sleep(update_interval)

    if __name__ == "__main__":
    main()