Implement intake-rss
This commit is contained in:
parent
56c52c38ab
commit
01f9849aec
@ -1,6 +1,53 @@
|
||||
import hashlib
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
import time
|
||||
|
||||
import feedparser
|
||||
|
||||
|
||||
def stderr(*args):
|
||||
print(*args, file=sys.stderr)
|
||||
|
||||
|
||||
def main():
|
||||
print("Hello, world!")
|
||||
feed_url = os.environ.get("FEED_URL")
|
||||
if not feed_url:
|
||||
stderr("No FEED_URL defined")
|
||||
return 1
|
||||
|
||||
feed = feedparser.parse(feed_url)
|
||||
if feed.bozo:
|
||||
stderr("Failed to parse feed", feed_url)
|
||||
return 1
|
||||
|
||||
feed_title = feed.feed.get("title") or os.environ.get("FEED_TITLE")
|
||||
|
||||
for entry in feed.entries:
|
||||
item = {}
|
||||
|
||||
entry_link = entry.get("link")
|
||||
id_basis = entry_link or entry.get("id") or str(entry)
|
||||
item["id"] = hashlib.md5(id_basis.encode("utf8")).hexdigest()
|
||||
|
||||
entry_title = entry.get("title", "(No title)")
|
||||
if feed_title:
|
||||
item["title"] = f"{feed_title}: {entry_title}"
|
||||
else:
|
||||
item["title"] = entry_title
|
||||
|
||||
if entry_pubparsed := entry.get("published_parsed"):
|
||||
item["time"] = int(time.mktime(entry_pubparsed))
|
||||
|
||||
if entry_desc := entry.get("summary"):
|
||||
item["body"] = entry_desc
|
||||
|
||||
if entry_link:
|
||||
item["link"] = entry_link
|
||||
|
||||
print(json.dumps(item))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
sys.exit(main())
|
||||
|
Loading…
Reference in New Issue
Block a user