discourse.py v1.1
#Sopel RSS Plugin Discourse IRC
import feedparser
import mysql.connector
import sopel.plugin
import time
# MySQL kapcsolati adatok
DB_HOST = 'localhost'
DB_USER = 'ai'
DB_PASSWORD = 'aipass'
DB_NAME = 'forum'
RSS_FEED_URL = 'https://forum.ynm.hu/latest.rss'
# MySQL adatbázis kapcsolat
def get_db_connection():
return mysql.connector.connect(
host=DB_HOST,
user=DB_USER,
password=DB_PASSWORD,
database=DB_NAME
)
# Létrehozza a `seen_posts` táblát, ha az nem létezik
def create_seen_posts_table(cursor):
cursor.execute('''
CREATE TABLE IF NOT EXISTS seen_posts (
id INT AUTO_INCREMENT PRIMARY KEY,
link VARCHAR(255) UNIQUE NOT NULL
)
''')
# RSS feed ellenőrzése
def check_rss(bot):
# Véglegesen tárolt feed adatok
feed = feedparser.parse(RSS_FEED_URL)
# Kapcsolódás az adatbázishoz
db = get_db_connection()
cursor = db.cursor()
# Létrehozza a `seen_posts` táblát, ha az nem létezik
create_seen_posts_table(cursor)
# Az új téma linkek tárolása
seen_posts = set()
# Lekérdezzük a már látott posztokat
cursor.execute('SELECT link FROM seen_posts')
for (link,) in cursor.fetchall():
seen_posts.add(link)
# Új posztok keresése
for entry in feed.entries:
entry_id = entry.link
if entry_id not in seen_posts:
seen_posts.add(entry_id)
# Készítsd el a válasz üzenetet
title = entry.title
link = entry.link
published = entry.published
response = f"📰: {title} - Link: {link} - Közzétéve: {published}"
bot.say(response, "#YnM") # Az új üzenet a #YnM csatornára
# Új poszt hozzáadása az adatbázishoz
cursor.execute('INSERT INTO seen_posts (link) VALUES (%s)', (entry_id,))
db.commit()
# Zárd le a kurzort és a kapcsolatot
cursor.close()
db.close()
@sopel.plugin.interval(15) # Ellenőrizd 15 másodpercenként
def check_rss_task(bot):
try:
check_rss(bot)
except Exception as e:
bot.log.error(f'Hiba történt: {e}')