Last active 1698081812

a script to forward fediverse posts from a jsonfeed url to a discord webhook, optionally filtering by keyword/hashtag

Revision 9960621b28187cc9855085c69501af04fa198e02

fedipost.py Raw
1#!/usr/bin/env python3
2# usage: fedipost.py jsonfeed_url webhook_url [filter_text]
3# e.g: fedipost.py https://blahaj.zone/@alypet.json webhook #alyblog
4from markdownify import markdownify
5from requests import get,post
6import os, sys
7
8WH = sys.argv[2]
9
10try:
11 with open("posts.txt") as f:
12 posts = f.read().strip().split("\n")
13except:
14 posts = []
15
16feed = get(sys.argv[1]).json()
17items = []
18for item in feed["items"]:
19 if item["url"] in posts:
20 continue
21 if len(sys.argv) > 3:
22 if sys.argv[3] not in item["content_html"]:
23 continue
24 content = markdownify(item["content_html"]).strip()
25 data = {
26 "username": "Fediverse",
27 "avatar_url": feed["icon"],
28 "embeds": [
29 {
30 "title": feed["title"],
31 "url": feed["home_page_url"],
32 "color": 16711829,
33 "fields": [
34 {
35 "name": "\u200B",
36 "value": content
37 }
38 ],
39 "url": item["url"],
40 "timestamp": item["date_modified"][:-5] + "Z"
41 }
42 ]
43 }
44 post(WH, json=data)
45 posts.append(item["url"])
46 with open("posts.txt", "w") as f:
47 f.write("\n".join(posts))