-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmain.py
More file actions
170 lines (148 loc) · 5.99 KB
/
Copy pathmain.py
File metadata and controls
170 lines (148 loc) · 5.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# import
import csv
import sys
import os
# import pandas
import quopri
import pandas as pd
import geo_coding
import osm
import website
# variablen daklaration
Kontakt_new = []
Kontakt = []
kontakte_daten = []
csv_file = os.path.abspath(".") + "/Kontakte.csv"
vcf_file = os.path.abspath(".") + "/kontakte.vcf"
# df_Kontakte_old = pd.read_csv(csv_file)
print("Programm start")
# _______________decodiert die Verschlüsstelten Adress Daten aus dem vcf File
def decode_adr(vcf_data_list, i):
# print('dekodiere adresse')
if (
vcf_data_list[i + 1][0] == "="
): # prüft ob die Codierte message über mehrere Zeilen geht
# geht die Codierte Adresse über mehrere Zeilen
# werden diese in eine Variablen zusammengefasst um diese dann zu Decodieren
print("mehrere zeilen")
adress_data = vcf_data_list[i].split(":")[1] + vcf_data_list[i + 1][1:]
adress = decode_QP(adress_data)
else:
adress = decode_QP(vcf_data_list[i].split(":")[1])
# print(adress)
return adress
# __________________________________________decodiert den QP code und gibt diesen als String zurück____________________
def decode_QP(str_verschlüsselt):
temp3 = quopri.decodestring(str_verschlüsselt)
temp3 = temp3.decode("utf-8")
temp3 = temp3.split(";")[2]
return temp3
# ________________________________________liest die Kontaktdatei vom Handy aus______________________
def vcf_read():
data = {
"Name": [None],
"Tel": [None],
"Street": [None],
"Hausnummer": [None],
"Ort": [None],
"Plz": [None],
}
dfKontakte = pd.read_csv(csv_file)
# print(dfKontakte)
with open(vcf_file, mode="r") as vcf: # öffnet die vcf datei mit den Kontakte
vcf_data = vcf.read() # liest vcf file aus
vcf_data_list = vcf_data.splitlines() # trennt ausgelesenden file nach zeilen
i = 0
adresse = []
while i + 1 < len(vcf_data_list): # durchläuft einmal ganze liste
name = "s"
# tel='s'
try:
if (
vcf_data_list[i][0] + (vcf_data_list[i][1]) + (vcf_data_list[i][2])
) == "ADR": # sucht Positionen die mit ADR beginnen in Liste (Zeichen für Adresse)
if "QUOTED-PRINTABLE" in vcf_data_list[i]:
# print(i)
adresse.append(decode_adr(vcf_data_list, i))
# Kontakt_new.append(tempkontakt)
else:
adresse.append(vcf_data_list[i].split(";")[3])
# print(i)
# print(len(adresse))
if len(adresse) == 2:
x = i
while not vcf_data_list[x][:3] in "TEL":
x = x - 1
tel = vcf_data_list[x].split(":")[1]
name = vcf_data_list[x - 1].split(":")[1]
ort = adresse[1].split(" ")
straße_l = adresse[0].split(" ")
street_name = ""
Ort_name = ""
for t in ort:
if t.isdigit():
plz = t
else:
Ort_name = Ort_name + " " + t
for t in straße_l:
if t.isdigit():
hausnummer_i = t
else:
street_name = street_name + " " + t
data = {
"Name": [name],
"Tel": [tel],
"Street": [street_name],
"Hausnummer": [hausnummer_i],
"Ort": [Ort_name],
"Plz": [plz],
}
# print(name)
new = kontakt_new_test(name, dfKontakte)
if new:
print("neuer Kontakt gefunden")
df2 = pd.DataFrame(data)
# print(df2)
dfKontakte = dfKontakte.append(df2)
# print(dfKontakte)
adresse = []
except Exception as e:
print(e)
# print(name)
# print('df2')
i = i + 1
dfKontakte.to_csv(csv_file, index=False)
x = 0
def kontakt_new_test(name, df_Kontakte):
# kontrolliert ob der neue Kontakt bereits vorhanden ist und
# gibt dementsprechend True oder False zurück
kontakt_vorhanden = False
for i, row in df_Kontakte.iterrows():
# print(row)
if row.get("Name") == name:
print("der Kontakt ist bereits vorhanden")
kontakt_vorhanden = True
if not kontakt_vorhanden:
print("neuen Kontakt speichern")
return True
else:
return False
# _____________fals noch keine csv vorhanden ist wird diese Hier erstellt
# prüfung ob vorhanden in in arbeit
def create_new_csv():
print("create new csv")
with open(csv_file, "w", encoding="utf-8") as csv_datei:
writer = csv.writer(csv_datei, delimiter=",")
writer.writerow(["Name", "Nummer", "Straße", "Hausnummer", "Ort", "Plz"])
def loade_csv():
print("loade csv")
return pd.read_csv("Kontakte.csv")
def main(search_parameter):
# create_new_csv()
#dfkontakte = vcf_read()
dfkontakte = loade_csv()
osm_ids_kontakte,kontakte_daten = geo_coding.get_osm_id(dfkontakte)
results = osm.osm_main(osm_ids_kontakte)
#osm.print_per_uid_ptty(osm_ids_kontakte,results)
website.show_at_map(osm_ids_kontakte,results,kontakte_daten)
# osm.print_per_uid_ptty(osm_ids_kontakte, name=False)