Einlesesen der CSV-Datei mit Modul CSV
This commit is contained in:
		
							parent
							
								
									1cfcc38f08
								
							
						
					
					
						commit
						ce2889991a
					
				@ -10,13 +10,14 @@ Um die Daten an Telegram zu senden, musst du dir ein Skript/Programm schreiben,
 | 
			
		||||
von Telegram verwendet und Daten an dich oder deine Gruppe senden kann!
 | 
			
		||||
 | 
			
		||||
Beispiel für eine Konfigurationsdatei:
 | 
			
		||||
tgReceiver: <hier die ID der Gruppe/ des Teilnhemers eintragen>
 | 
			
		||||
tgReceiver: <hier die ID der Gruppe/ des Teilnehmers eintragen>
 | 
			
		||||
kommune: 2601
 | 
			
		||||
strasse: 2146
 | 
			
		||||
pathBot: '~/bin/YMBot'
 | 
			
		||||
tgBotOwner: <hier DEINE Telegram-ID eintragen>
 | 
			
		||||
'''
 | 
			
		||||
 | 
			
		||||
import csv
 | 
			
		||||
import re
 | 
			
		||||
import requests
 | 
			
		||||
import httplib2
 | 
			
		||||
@ -28,7 +29,7 @@ from pathlib import Path
 | 
			
		||||
 | 
			
		||||
# Funktionen
 | 
			
		||||
def get_index_positions(list_of_elems, element):
 | 
			
		||||
    ''' Returns the indexes of all occurrences of give element in
 | 
			
		||||
    ''' Returns the indexes of all occurrences of given element in
 | 
			
		||||
    the list- listOfElements '''
 | 
			
		||||
    index_pos_list = []
 | 
			
		||||
    for i in range(len(list_of_elems)):
 | 
			
		||||
@ -53,7 +54,7 @@ def init(key, modus, host, headers):
 | 
			
		||||
    url = f'https://{host}/?key={key}&modus={modus}&waction=init'
 | 
			
		||||
    http = httplib2.Http()
 | 
			
		||||
    (resp, content) = http.request(url, "POST", headers = headers, body = urllib.parse.urlencode(postdata))
 | 
			
		||||
    # print(content)
 | 
			
		||||
 | 
			
		||||
    result = re.findall(r"<input .*?name=.*? value=.*?/>", str(content))
 | 
			
		||||
 | 
			
		||||
    datum = result[1].split(' ')
 | 
			
		||||
@ -74,9 +75,17 @@ def read_file(jahr):
 | 
			
		||||
	
 | 
			
		||||
	antwort_liste = None
 | 
			
		||||
	try:
 | 
			
		||||
		f = open(f'muell{jahr}.csv', 'rb')
 | 
			
		||||
		antwort = str(f.read())
 | 
			
		||||
		antwort_liste = antwort[antwort.find('Biom'):].strip("'").replace('\\n', '\n').split('\n')
 | 
			
		||||
		with open(f'muell{jahr}.csv', 'r', encoding="latin1") as f:
 | 
			
		||||
			csv_reader = csv.reader(f, delimiter=';')
 | 
			
		||||
			lines = 0
 | 
			
		||||
			antwort_liste = []
 | 
			
		||||
			for row in csv_reader:
 | 
			
		||||
				if lines == 0:
 | 
			
		||||
					# print(f'Column names are {", ".join(row)}')
 | 
			
		||||
					lines += 1
 | 
			
		||||
				else:
 | 
			
		||||
					if isinstance(row, list):
 | 
			
		||||
						antwort_liste.extend(row)
 | 
			
		||||
	except FileNotFoundError:
 | 
			
		||||
		pass
 | 
			
		||||
 | 
			
		||||
@ -119,40 +128,41 @@ muell_arten = [
 | 
			
		||||
    'Schadstoffmobil',
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
# __main__
 | 
			
		||||
antwort_liste = read_file(current_year)
 | 
			
		||||
if antwort_liste == None:
 | 
			
		||||
    # Keine vernünftigen Daten, ergo mal gucken, was die Webseite ergibt
 | 
			
		||||
	config = readConfig()
 | 
			
		||||
	postdata['f_id_kommune'] = config['kommune']
 | 
			
		||||
	postdata['f_id_strasse'] = config['strasse']
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
	antwort_liste = read_file(current_year)
 | 
			
		||||
 | 
			
		||||
	(name, value) = init(key, modus, host, headers)
 | 
			
		||||
	if name != None and value != None:
 | 
			
		||||
		postdata[name] = value
 | 
			
		||||
	if antwort_liste == None:
 | 
			
		||||
		# Keine vernünftigen Daten, ergo mal gucken, was die Webseite ergibt
 | 
			
		||||
		config = readConfig()
 | 
			
		||||
		postdata['f_id_kommune'] = config['kommune']
 | 
			
		||||
		postdata['f_id_strasse'] = config['strasse']
 | 
			
		||||
 | 
			
		||||
	http = httplib2.Http()
 | 
			
		||||
	(resp, content) = http.request(url, "POST", headers = headers, body = urllib.parse.urlencode(postdata))
 | 
			
		||||
		(name, value) = init(key, modus, host, headers)
 | 
			
		||||
		if name != None and value != None:
 | 
			
		||||
			postdata[name] = value
 | 
			
		||||
 | 
			
		||||
	antwort = str(content)
 | 
			
		||||
	f = open(f'muell{current_year}.csv', 'wb')
 | 
			
		||||
	f.write(content)
 | 
			
		||||
	f.close()
 | 
			
		||||
	antwort_liste = antwort[antwort.find('Biom'):].strip("'").replace('\\n', '\n').split('\n')
 | 
			
		||||
		http = httplib2.Http()
 | 
			
		||||
		(resp, content) = http.request(url, "POST", headers = headers, body = urllib.parse.urlencode(postdata))
 | 
			
		||||
 | 
			
		||||
daten = set(antwort_liste)
 | 
			
		||||
		antwort = str(content)
 | 
			
		||||
		f = open(f'muell{current_year}.csv', 'wb')
 | 
			
		||||
		f.write(content)
 | 
			
		||||
		f.close()
 | 
			
		||||
		antwort_liste = read_file(current_year)
 | 
			
		||||
 | 
			
		||||
for datum in daten:
 | 
			
		||||
    tomorrow = (datetime.now() + timedelta(1)).strftime('%d.%m.%Y')
 | 
			
		||||
    datum = datum.split(';')
 | 
			
		||||
    l_muell = get_index_positions(datum, tomorrow)
 | 
			
		||||
    if len(l_muell) > 0:
 | 
			
		||||
        wird = 'wird' if len(l_muell) < 2 else 'werden'
 | 
			
		||||
        tonnen = []
 | 
			
		||||
        for i in l_muell:
 | 
			
		||||
            tonnen.append(muell_arten[i])
 | 
			
		||||
	daten = set(antwort_liste)
 | 
			
		||||
	# TODO: Leider weiss ich ab hier nur, dass Müll abgeholt wird, leider nicht, welcher :-/
 | 
			
		||||
	tomorrow = (datetime.now() + timedelta(1)).strftime('%d.%m.%Y')
 | 
			
		||||
	for datum in daten:
 | 
			
		||||
		datum = datum.split(';')
 | 
			
		||||
		l_muell = get_index_positions(datum, tomorrow)
 | 
			
		||||
		if len(l_muell) > 0:
 | 
			
		||||
			wird = 'wird' if len(l_muell) < 2 else 'werden'
 | 
			
		||||
			tonnen = []
 | 
			
		||||
			for i in l_muell:
 | 
			
		||||
				tonnen.append(muell_arten[i])
 | 
			
		||||
 | 
			
		||||
        if len(tonnen) > 0:
 | 
			
		||||
            tonnen = ' und '.join(tonnen)
 | 
			
		||||
            print(f'Morgen {wird} {tonnen} abgeholt')
 | 
			
		||||
        break
 | 
			
		||||
			if len(tonnen) > 0:
 | 
			
		||||
				tonnen = ' und '.join(tonnen)
 | 
			
		||||
				print(f'Morgen {wird} {tonnen} abgeholt')
 | 
			
		||||
			break
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user