Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import feedparser
- import requests
- import time
- import datetime
- IP = "http://192.168.1.42" # Ersetzen durch lokale IP eurer Uhr
- RSS = "https://www.mydealz.de/rssx/keyword-alarm/XXX" # Ersetzen durch eigenen RSS-Feed
- REFRESH_INTERVAL = 60 # Wartezeit zwischen Abrufen in Sekunden
- ALARM = "Siren:d=8,o=5,b=100:d,e,d,e,d,e,d,e" # RTTTL-Sound für Preisfehler-Alarm
- BLACKLIST = ["gästeklo", "leasing"] # Ersetzen durch eigene Begriffe, die blockiert werden sollen
- def get_alert():
- """Ruft den Titel des neuesten Alarms aus dem RSS-Feed ab."""
- loop = True
- while loop:
- try:
- feed = feedparser.parse(RSS)
- entry = feed.entries[0]
- loop = False
- return entry.title
- except IndexError:
- print("Fehler, versuche es in 10 Sekunden erneut.")
- time.sleep(10)
- pass
- def blacklist_match(word):
- """Durchsucht String nach Begriff auf der Blacklist. True bei Treffer, ansonsten False."""
- for term in BLACKLIST:
- if term.lower() in word.lower():
- return True
- return False
- def preisfehler_alarm():
- """Erhöht die Aufmerksamkeit, wenn ein Preisfehler gefunden wurde."""
- requests.post(url=IP + "/api/rtttl", data=ALARM)
- preisfehler_notification = {
- "text": "Preisfehler",
- "repeat": 1,
- "wakeup": True,
- "rainbow": True,
- "stack": False,
- }
- requests.post(url=IP + "/api/notify", json=preisfehler_notification)
- time.sleep(3)
- last_title = ""
- while True:
- now = datetime.datetime.now().strftime("%H:%M:%S")
- print(f"{now}: Rufe Deal-Alarme ab...")
- title = get_alert()
- if title != last_title and not blacklist_match(title):
- print(f"Neuer Deal-Alarm: {title}")
- # Zusätzlicher Alarm für Preisfehler
- if "preisfehler" in title.lower():
- print("Preisfehler-Alarm!")
- preisfehler_alarm()
- # Benachrichtigung anzeigen
- notification = {
- "text": title, # Titel als dargestellter Text
- "repeat": 2, # Wiederholungen der Benachrichtigung
- "icon": 13677, # Icon muss zuvor auf die Uhr geladen werden
- "wakeup": True, # Weckt die Uhr auf, wenn das Display ausgeschaltet ist
- "scrollSpeed": 80, # Scroll-Geschwindigkeit in Prozent
- "stack": False, # Höchste Priorität für neue Benachrichtigungen
- }
- requests.post(url=IP+"/api/notify", json=notification)
- # Titel speichern, um Doppelbenachrichtigungen zu vermeiden
- last_title = title
- else:
- print("Kein neuer Deal-Alarm.")
- # Oben definierte Zeit warten bis zum nächsten Abruf
- time.sleep(REFRESH_INTERVAL)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement