diff --git a/Pool_old/Lotto2SQL_V2.py b/Pool_old/Lotto2SQL_V2.py index 1e7ff8d..830c159 100644 --- a/Pool_old/Lotto2SQL_V2.py +++ b/Pool_old/Lotto2SQL_V2.py @@ -91,6 +91,9 @@ if 'Samstag,' in datum: resp = cursor.execute(sql_q) if resp == 0: cursor.execute(sql) + connection.commit() + cursor.close() + connection.close() if 'Mittwoch,' in datum: sql = "INSERT INTO `mittwoch`(`datum`, `z1`, `z2`, `z3`, `z4`, `z5`, `z6`, `sz`, `super6`, `spiel77`) VALUES" \ diff --git a/lotto2py.conf b/lotto2py.conf new file mode 100644 index 0000000..6ddbcae --- /dev/null +++ b/lotto2py.conf @@ -0,0 +1,12 @@ +{ + "Telegram": { + "Chat_ID": "322673713", + "TOKEN": "680737840:AAEaa7Vxl_kZz_LWS1_S-lH6Eda7HXqu6Y4" + }, + "mail": { + "mail_folder": "", + "mail_host": "", + "mail_pass": "", + "mail_user": "" + } +} \ No newline at end of file diff --git a/lotto2py.py b/lotto2py.py new file mode 100644 index 0000000..b8be1a1 --- /dev/null +++ b/lotto2py.py @@ -0,0 +1,292 @@ +import requests +from bs4 import BeautifulSoup +import re +from datetime import datetime +import pymysql +import json +import os +import sys + +def conf(): + appname = os.path.basename(sys.argv[0]) + appname = appname.replace(".py", ".conf") + absFilePath = os.path.abspath(__file__) + absFilePath = absFilePath.replace(".py", ".conf") + + if os.path.isfile(absFilePath) is False: + print(appname + ' scheint es nicht zu geben.') + print('Ich lege eine neue Datei ' + appname + ' an.') + passw = {'mail': + { + "mail_pass": "", + "mail_user": "", + "mail_host": "", + "mail_folder": "" + }, + 'Telegram': + { + "Chat_ID": "", + "TOKEN": "" + } + } + + print(str(appname) + ' bitte entsprechend befüllen.') + with open(absFilePath, 'w') as fp: + json.dump(passw, fp, sort_keys=True, indent=4) + quit() + else: + with open(absFilePath) as file: + passw = json.load(file) + return passw +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) + + connection.commit() + cursor.close() + connection.close() +def SQLsamstag(data): + connection = pymysql.connect(db="hubobel", + user="hubobel", + passwd="polier2003", + host='10.0.1.123', charset='utf8') + cursor = connection.cursor() + sql = "INSERT INTO `samstag`(`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 samstag WHERE datum like '%" + data['Datum'] + "%'" + resp = cursor.execute(sql_q) + if resp == 0: + cursor.execute(sql) + connection.commit() + cursor.close() + connection.close() +def SQLmittwoch(data): + connection = pymysql.connect(db="hubobel", + user="hubobel", + passwd="polier2003", + host='10.0.1.123', charset='utf8') + cursor = connection.cursor() + sql = "INSERT INTO `mittwoch`(`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 samstag WHERE datum like '%" + data['Datum'] + "%'" + resp = cursor.execute(sql_q) + if resp == 0: + cursor.execute(sql) + connection.commit() + cursor.close() + connection.close() + +passw = conf() +telegram_chat_id = passw['Telegram']['Chat_ID'] +telegram_token = passw['Telegram']['TOKEN'] + +wochentag = datetime.today().weekday() +wochentag = 2 + +if wochentag == 2: + Zahl = Normalziehung(582) + SQLnorm(Zahl) + SQLmittwoch(Zahl) + notify_telegram(str(Zahl)) +elif wochentag == 5: + Zahl = Normalziehung(581) + SQLnorm(Zahl) + SQLsamstag(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()