commit 96d34bfc4a0293e292faa7a593cd09d3db44251b Author: 雲華 <42814579+yunwah@users.noreply.github.com> Date: Thu Mar 18 14:40:35 2021 -0400 added bungie.py rss to discord webhook script diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..39a2cd5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +# Environment files +.env + +# venv +venv/ + +# PyCharm +.idea/ + +# Databases +*.db \ No newline at end of file diff --git a/bungie.py b/bungie.py new file mode 100644 index 0000000..512d708 --- /dev/null +++ b/bungie.py @@ -0,0 +1,57 @@ +from discord_webhook import DiscordWebhook, DiscordEmbed +from datetime import datetime +from dotenv import load_dotenv +from time import mktime + +import feedparser +import sqlite3 +import sys +import os + +load_dotenv() +DB_PATH = os.getenv('DB_PATH') +WEBHOOK_URL = os.getenv('WEBHOOK_URL') + +try: + con = sqlite3.connect(DB_PATH) +except sqlite3.Error as e: + sys.exit(1) + +with con: + cur = con.cursor() + cur.execute('CREATE TABLE IF NOT EXISTS posts(id TEXT NOT NULL);') + + webhook = DiscordWebhook(url=WEBHOOK_URL) + + feed = feedparser.parse('https://nitter.cc/BungieHelp/rss') + + for entry in reversed(feed['entries']): + cur.execute('SELECT * FROM posts WHERE id=?;', (entry['id'],)) + record = cur.fetchone() + if record is None: + embed = DiscordEmbed( + description=entry['title'], + color='1B95E0' + ) + + embed.set_author(name=feed['channel']['title'], url=feed['channel']['image']['link'], + icon_url=feed['channel']['image']['href']) + + dt = datetime.fromtimestamp(mktime(entry['published_parsed'])) + + embed.set_timestamp(dt.timestamp()) + + webhook.add_embed(embed) + + cur.execute('INSERT INTO posts VALUES(?, ?);', (entry['id'], dt,)) + + if len(webhook.embeds) == 10: + response = webhook.execute() + webhook.embeds = [] + + cur.execute('DELETE FROM posts WHERE id NOT IN (SELECT id FROM posts ORDER BY DATE DESC LIMIT 20)') + +if len(webhook.embeds) > 0: + response = webhook.execute() +con.commit() +