Compare commits

..
6 Commits
Author SHA1 Message Date
Hauke Zühl 9701df6f39 Parameter gefixt 2026-06-03 11:50:49 +02:00
Hauke Zühl 3458b4e227 Statt httplib jetzt requests für Abfrage der Webseite. Code ein wenig optimiert 2026-06-03 11:17:48 +02:00
hauke a964b2b5bc Private Eigenschaften in Klasse Muell 2026-05-23 09:36:49 +02:00
hauke d6cc9b974f Skript an Modul angepasst 2026-05-17 16:13:40 +02:00
hauke 091e801b7e Vereinfacht 2026-05-17 16:11:28 +02:00
hauke 8e6549fd5e Einrückung gefixt 2026-05-09 16:56:11 +02:00
2 changed files with 53 additions and 52 deletions
+50 -49
View File
@@ -23,8 +23,6 @@ import csv
import os import os
import re import re
import requests import requests
import httplib2
import urllib
import yaml import yaml
from datetime import datetime, timedelta from datetime import datetime, timedelta
@@ -32,34 +30,36 @@ from pathlib import Path
class Muell: class Muell:
# Variablen def __init__(self):
__key = 'e21758b9c711463552fb9c70ac7d4273'
__modus = 'd6c5855a62cf32a4dadbc2831f0f295f'
__host = 'api.abfall.io' # Variablen
self.__key = 'e21758b9c711463552fb9c70ac7d4273'
self.__modus = 'd6c5855a62cf32a4dadbc2831f0f295f'
__url = f'https://{__host}/?key={__key}&modus={__modus}&waction=export_csv' self.__host = 'api.abfall.io'
__export_als = f"{{'action':'{__url}','target':''}}"
__current_year = datetime.today().year self.__url = f'https://{self.__host}/?key={self.__key}&modus={self.__modus}'
__zeitraum = f'{__current_year}0101-{__current_year}1231' self.__export_als = f"{{'action':'{self.__url}&waction=export_csv','target':''}}"
__postdata = { self.__current_year = datetime.today().year
'f_id_abfalltyp_0': '50', self.__zeitraum = f'{self.__current_year}0101-{self.__current_year}1231'
'f_id_abfalltyp_1': '161',
'f_id_abfalltyp_2': '53',
'f_id_abfalltyp_3': '187',
'f_id_abfalltyp_4': '169',
'f_abfallarten_index_max': '5',
'f_abfallarten': '50,161,53,187',
'f_zeitraum': __zeitraum,
'f_export_als': __export_als,
}
__headers = { self.__postdata = {
'User-Agent': 'Mozilla/5.0 (Linux; x68_64; x64; rv:88.0) Gecko/20100101 Firefox/88.0', 'f_id_abfalltyp_0': '50',
'Content-Type': 'application/x-www-form-urlencoded', 'f_id_abfalltyp_1': '161',
} 'f_id_abfalltyp_2': '53',
'f_id_abfalltyp_3': '187',
'f_id_abfalltyp_4': '169',
'f_abfallarten_index_max': '5',
'f_abfallarten': '50,161,53,187',
'f_zeitraum': self.__zeitraum,
'f_export_als': self.__export_als,
}
self.__headers = {
'User-Agent': 'Mozilla/5.0 (Linux; x68_64; x64; rv:88.0) Gecko/20100101 Firefox/88.0',
'Content-Type': 'application/x-www-form-urlencoded',
}
# Methoden # Methoden
def __get_index_positions(self, list_of_elems, element): def __get_index_positions(self, list_of_elems, element):
@@ -82,12 +82,12 @@ class Muell:
return config return config
def __init(self, key, modus, host, headers): def __start(self):
''' Initialisiert das System und sucht entsprechende Daten heraus ''' ''' Initialisiert das System und sucht entsprechende Daten heraus '''
url = f'https://{host}/?key={key}&modus={modus}&waction=init' url = f'{self.__url}&waction=init'
http = httplib2.Http() resp = requests.post(url, data = self.__postdata, headers = self.__headers)
(resp, content) = http.request(url, "POST", headers = headers, body = urllib.parse.urlencode(self.__postdata)) content = resp.content
result = re.findall(r"<input .*?name=.*? value=.*?/>", str(content)) result = re.findall(r"<input .*?name=.*? value=.*?/>", str(content))
@@ -136,12 +136,13 @@ class Muell:
self.__postdata['f_id_kommune'] = config['kommune'] self.__postdata['f_id_kommune'] = config['kommune']
self.__postdata['f_id_strasse'] = config['strasse'] self.__postdata['f_id_strasse'] = config['strasse']
(name, value) = self.__init(key, modus, host, headers) (name, value) = self.__start()
if name != None and value != None: if name != None and value != None:
self.__postdata[name] = value self.__postdata[name] = value
http = httplib2.Http() url = f'{self.__url}&waction=export_csv'
(resp, content) = http.request(url, "POST", headers = headers, body = urllib.parse.urlencode(self.__postdata)) resp = requests.post(url, data = self.__postdata, headers = self.__headers)
content = resp.content
antwort = str(content) antwort = str(content)
f = open(f'muell{self.__current_year}.csv', 'wb') f = open(f'muell{self.__current_year}.csv', 'wb')
@@ -169,36 +170,36 @@ class Muell:
for pos in index: for pos in index:
tonnen.append(headline[pos]) tonnen.append(headline[pos])
return (tonnen, wird)
def ausgabe_telegram(self, tonnen, wird):
''' Ausgabe Richtung Telegram'''
if len(tonnen) > 0: if len(tonnen) > 0:
tonnen = ' und '.join(tonnen) tonnen = ' und '.join(tonnen)
ausgabe = f'Morgen {wird} {tonnen} abgeholt'
else:
ausgabe = None
return ausgabe
def ausgabe_telegram(self, ausgabe):
''' Ausgabe Richtung Telegram'''
if ausgabe is not None:
# Jetzt den Telegram Bot ansprechen # Jetzt den Telegram Bot ansprechen
try: try:
os.system(f'echo "Morgen {wird} {tonnen} abgeholt" | {config["telegram"]["pathBot"]} -u {config["telegram"]["tgReceiver"]}') os.system(f'echo "{ausgabe}" | {config["telegram"]["pathBot"]} -u {config["telegram"]["tgReceiver"]}')
except Exception as e: except Exception as e:
os.system(f'logger "Fehler Muellbot Telegram: {e}"') os.system(f'logger "Fehler Muellbot Telegram: {e}"')
def ausgabe_signal(self, tonnen, wird): def ausgabe_signal(self, ausgabe):
''' Ausgabe Richtung Signal''' ''' Ausgabe Richtung Signal'''
if len(tonnen) > 0: if ausgabe is not None:
tonnen = ' und '.join(tonnen)
# Signal Bot # Signal Bot
try: try:
os.system(f'{config["signal"]["path"]} -a {config["signal"]["account"]} send -g {config["signal"]["group_id"]} -m "Morgen {wird} {tonnen} abgeholt"') os.system(f'{config["signal"]["path"]} -a {config["signal"]["account"]} send -g {config["signal"]["group_id"]} -m "{ausgabe}"')
except Exception as e: except Exception as e:
os.system(f'logger "Fehler Muellbot Signal: {e}"') os.system(f'logger "Fehler Muellbot Signal: {e}"')
def ausgabe_text(self, tonnen, wird): def ausgabe_text(self, ausgabe):
''' Ausgabe als Text''' ''' Ausgabe als Text'''
if len(tonnen) > 0: if ausgabe is not None:
tonnen = ' und '.join(tonnen) print(f'{ausgabe}')
print(f'Morgen {wird} {tonnen} abgeholt')
+3 -3
View File
@@ -4,6 +4,6 @@ from Muell import Muell
if __name__ == '__main__': if __name__ == '__main__':
muell = Muell() muell = Muell()
tonnen, wird = muell.get_data() ausgabe = muell.get_data()
muell.ausgabe_telegram(tonnen, wird) muell.ausgabe_telegram(ausgabe)
muell.ausgabe_signal(tonnen, wird) muell.ausgabe_signal(ausgabe)