Scripts for guild notifications using Discord Webhooks
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
1.3 KiB

#! /usr/bin/python3
"""
RSS news
"""
import time
import traceback
import feedparser
import redis
import webhook
import conf
now = time.time()
wh = webhook.Webhook(conf.url_discord_webhook_news)
r = redis.StrictRedis(host='localhost', charset="utf-8", decode_responses=True, db=1)
r.zremrangebyscore("bot:rss", "-inf", now-(60*60*24*30*3)) # 3 meses de caché
url_feeds = [
"http://www.wowhead.com/news&rss",
"http://www.mmo-champion.com/external.php?do=rss&type=newcontent&sectionid=1&days=120&count=5"
]
for url in url_feeds:
try:
feed = feedparser.parse(url)
if "items" not in feed or len(feed["items"]) < 3:
continue
for i in [0, 1, 2]: # last 3 news
entry = feed["items"][i]
fid = "{} {}".format(feed["feed"]["title"][0:20], entry["published"])
if r.zadd("bot:rss", now, fid) == 0:
continue
if "wowhead.com/" in entry["link"]:
icon = conf.icon_wowhead
elif "mmo-champion.com/" in entry["link"]:
icon = conf.icon_mmoc
else:
icon = ":newspaper2:"
wh.send("{2} [{0}](<{1}>)".format(entry["title"], entry["link"], icon))
time.sleep(2)
except:
print(url)
traceback.print_exc()