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