import requests from bs4 import BeautifulSoup import re from datetime import datetime import pymysql telegram_chat_id = "322673713" telegram_token ='680737840:AAEaa7Vxl_kZz_LWS1_S-lH6Eda7HXqu6Y4' def notify_telegram(text): params = {"parse_mode": "HTML", "chat_id": telegram_chat_id, "text": text} url = f"https://api.telegram.org/bot{telegram_token}/sendMessage" requests.post(url, params=params) def Euro(): url = 'https://www.ard-text.de/mobil/583' response = requests.get(url) response.raise_for_status() soup = BeautifulSoup(response.text, "html.parser") ziffern = [] ZahlenEuro = { 'Freitag': {'Datum': '', 'Z1': '', 'Z2': '', 'Z3': '', 'Z4': '', 'Z5': '', 'Eurozahl1': '', 'Eurozahl2': ''}, 'Dienstag': {'Datum': '', 'Z1': '', 'Z2': '', 'Z3': '', 'Z4': '', 'Z5': '', 'Eurozahl1': '', 'Eurozahl2': ''}} Tag = 'Freitag' for b in soup.find("p", string=lambda s: s and "freitag" in s.lower()): ZahlenEuro[Tag]['Datum'] = b tabelle = b.find_parent().find_next_sibling("table") a = 1 for n in tabelle.find_all("td"): c = (n.get_text(strip=True)) b = 'Z' + str(a) ZahlenEuro[Tag][b] = int(c) a = a + 1 for x in soup.find("p", string=lambda s: s and "eurozahlen" in s.lower()): eurotabelle = x.find_parent().find_next_sibling("table") aa = 1 for m in eurotabelle.find_all("td"): c = (m.get_text(strip=True)) bb = 'Eurozahl' + str(aa) ZahlenEuro[Tag][bb] = int(c) aa = aa + 1 Tag = 'Dienstag' for b in soup.find("p", string=lambda s: s and "dienstag" in s.lower()): ZahlenEuro[Tag]['Datum'] = b tabelle = b.find_parent().find_next_sibling("table") a = 1 print(b) for n in tabelle.find_all("td"): c = (n.get_text(strip=True)) b = 'Z' + str(a) ZahlenEuro[Tag][b] = int(c) a = a + 1 eurozahlen_tags = soup.find_all("b", string=lambda s: s and "eurozahlen" in s.lower()) aa = 1 if len(eurozahlen_tags) >= 2: eurozahlen_table_2 = eurozahlen_tags[1].find_next("table") eurozahlen_2 = [td.text.strip() for td in eurozahlen_table_2.find_all("td")] for i in eurozahlen_2: bb = 'Eurozahl' + str(aa) ZahlenEuro[Tag][bb] = int(i) aa = aa + 1 return ZahlenEuro def Normalziehung(a): wochentag = datetime.today().weekday() jahr = datetime.now().year url = "https://www.ard-text.de/mobil/" + str(a) headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36" } response = requests.get(url, headers=headers) response.raise_for_status() soup = BeautifulSoup(response.text, "html.parser") # Den relevanten Abschnitt als Text extrahieren text = soup.get_text(separator="\n") # Lottozahlen: 6 aus 49, Zusatzzahl und Superzahl lottozahlen = [] superzahl = None spiel77 = [] super6 = [] datum_woche = None Lottozahlen = {'Datum': '', 'Z1': '', 'Z2': '', 'Z3': '', 'Z4': '', 'Z5': '', 'Z6': '', 'Superzahl': '', 'Spiel77': '', 'Super6': ''} # Wochentext extrahieren (z. B. "28. Woche / 09.07.25") for line in text.splitlines(): if "Woche" in line and "/" in line: datum_woche = line.strip() break # Regex: Hauptzahlen finden (z. B. Zeile enthält "11 20 28 30 35 41") match_haupt = re.search(r"\s(\d{1,2}(?:\s+\d{1,2}){5})\s", text) if match_haupt: lottozahlen = [int(n) for n in match_haupt.group(1).split()] # Superzahl (z. B. nach dem Begriff "Superzahl") match_super = re.search(r"Superzahl[^0-9]*([0-9]{1,2})", text) if match_super: superzahl = int(match_super.group(1)) # Spiel 77 suchen (genau 7 Ziffern) match_spiel77 = re.search(r"Spiel\s*77[^0-9]*((?:\d\s*){7})", text) if match_spiel77: # spiel77 = match_spiel77.group(1) spiel77 = [int(n) for n in match_spiel77.group(1).split()] # Super 6 suchen (genau 6 Ziffern) match_super6 = re.search(r"Super\s*6[^0-9]*((?:\d\s*){6})", text) if match_super6: # super61 = match_super6.group(1) super6 = [int(n) for n in match_super6.group(1).split()] # Ausgabe lottozahlen.sort() ab = 'Z' cd = 1 subber6 = '' game77 = '' for i in super6: subber6 = subber6 + str(i) for i in spiel77: game77 = game77 + str(i) for i in lottozahlen: ef = str((ab + str(cd))) Lottozahlen[ef] = i cd = cd + 1 Lottozahlen['Datum'] = str(jahr) + ' / ' + str(datum_woche) Lottozahlen['Superzahl'] = superzahl Lottozahlen['Spiel77'] = int(game77) Lottozahlen['Super6'] = int(subber6) return Lottozahlen def SQLnorm(data): connection = pymysql.connect(db="hubobel", user="hubobel", passwd="polier2003", host='10.0.1.123', charset='utf8') cursor = connection.cursor() sql = "INSERT INTO `6aus49`(`datum`, `z1`, `z2`, `z3`, `z4`, `z5`, `z6`, `sz`, `super6`, `spiel77`) VALUES" \ " ('" + str(data['Datum']) + "','" + str(data['Z1']) + "','" + str(data['Z2']) + "','" + str(data['Z3']) + \ "','" + str(data['Z4']) + "','" + str(data['Z5']) + "','" + str(data['Z6']) + "','" + str(data['Superzahl']) + \ "','" + str(data['Super6']) + "','" + str(data['Spiel77']) + "')" sql_q = "SELECT * FROM 6aus49 WHERE datum like '%" + data['Datum'] + "%'" resp = cursor.execute(sql_q) if resp == 0: cursor.execute(sql) connection.commit() cursor.close() connection.close() def SQLdienstag(data): connection = pymysql.connect(db="hubobel", user="hubobel", passwd="polier2003", host='10.0.1.123', charset='utf8') cursor = connection.cursor() sql = "INSERT INTO `euro`(`datum`, `z1`, `z2`, `z3`, `z4`, `z5`, `sz1`, `sz2`) VALUES" \ " ('" + str(data['Datum']) + "','" + str(data['Z1']) + "','" + str(data['Z2']) + "','" + str(data['Z3']) + \ "','" + str(data['Z4']) + "','" + str(data['Z5']) + "','" + str(data['Eurozahl1']) + "','" + str( data['Eurozahl2']) + "')" sql_q = "SELECT * FROM euro WHERE datum like '%" + data['Datum'] + "%'" resp = cursor.execute(sql_q) if resp == 0: cursor.execute(sql) print(resp) connection.commit() cursor.close() connection.close() def SQLfreitag(data): connection = pymysql.connect(db="hubobel", user="hubobel", passwd="polier2003", host='10.0.1.123', charset='utf8') cursor = connection.cursor() sql = "INSERT INTO `euro`(`datum`, `z1`, `z2`, `z3`, `z4`, `z5`, `sz1`, `sz2`) VALUES" \ " ('" + str(data['Datum']) + "','" + str(data['Z1']) + "','" + str(data['Z2']) + "','" + str(data['Z3']) + \ "','" + str(data['Z4']) + "','" + str(data['Z5']) + "','" + str(data['Eurozahl1']) + "','" + str( data['Eurozahl2']) + "')" sql_q = "SELECT * FROM euro WHERE datum like '%" + data['Datum'] + "%'" resp = cursor.execute(sql_q) if resp == 0: cursor.execute(sql) print(resp) connection.commit() cursor.close() connection.close() wochentag = datetime.today().weekday() wochentag = 1 if wochentag == 2: Zahl = Normalziehung(582) SQLnorm(Zahl) notify_telegram(str(Zahl)) elif wochentag == 5: Zahl = Normalziehung(581) SQLnorm(Zahl) notify_telegram(str(Zahl)) elif wochentag == 1: Zahl = Euro() SQLdienstag(Zahl['Dienstag']) notify_telegram(str(Zahl['Dienstag'])) elif wochentag == 4: Zahl = Euro() SQLfreitag(Zahl['Freitag']) notify_telegram(str(Zahl['Freitag'])) else: quit()