-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
90 lines (72 loc) · 2.62 KB
/
Copy pathmain.py
File metadata and controls
90 lines (72 loc) · 2.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import requests
from bs4 import BeautifulSoup
import time
import hashlib
from nio import AsyncClient, LoginResponse
import asyncio
import os
URL = os.environ.get("BLOG_URL")
COMMENT_CLASS = os.environ.get("BLOG_COMMENT_CLASS")
HOMESERVER = os.environ.get("MATRIX_HOMESERVER")
USERNAME = os.environ.get("MATRIX_USERNAME")
PASSWORD = os.environ.get("MATRIX_PASSWORD")
ROOM_ID = os.environ.get("MATRIX_ROOM_ID")
INTERVAL = 60 # Sekunden zwischen den Checks
client = AsyncClient(HOMESERVER, USERNAME)
async def accept_invites():
# Events abholen
sync_response = await client.sync(timeout=3000)
for room_id, invite_room in sync_response.rooms.invite.items():
print(f"👋 Einladung erkannt, trete Raum bei: {room_id}")
await client.join(room_id)
async def send_matrix_message(message):
# Login (nur einmal nötig – AccessToken kann gespeichert werden)
resp = await client.login(PASSWORD)
if isinstance(resp, LoginResponse):
print("✅ Eingeloggt")
# await accept_invites()
else:
print("❌ Login fehlgeschlagen:", resp)
return
# Nachricht senden
await client.room_send(
room_id=ROOM_ID,
message_type="m.room.message",
content={"msgtype": "m.text", "body": message}
)
await client.logout()
await client.close()
def get_comments():
response = requests.get(URL)
soup = BeautifulSoup(response.text, "lxml")
# Kommentare befinden sich im WordPress-Kommentarbereich
comment_divs = soup.find_all("div", class_=COMMENT_CLASS)
comments = []
for div in comment_divs:
text = div.get_text(strip=True)
comment_id = hashlib.md5(text.encode()).hexdigest() # Eindeutiger Hash
comments.append((comment_id, text))
return comments
def process_new_comment(comment_text):
message = f"🆕 Neuer Kommentar bei der Startplatzbörse:\n\n{comment_text}"
asyncio.run(send_matrix_message(message))
def main():
seen_comments = set()
print("Starte Überwachung...")
while True:
try:
comments = get_comments()
for comment_id, text in comments:
if comment_id not in seen_comments:
seen_comments.add(comment_id)
# 🛠 Hier deine gewünschte Aktion:
print("🔔 Neuer Kommentar entdeckt:")
print(text)
print("-----------")
process_new_comment(text)
time.sleep(INTERVAL)
except Exception as e:
print(f"⚠️ Fehler beim Abrufen: {e}")
time.sleep(INTERVAL)
if __name__ == "__main__":
main()