-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathStreetCompleteNumbers.py
More file actions
109 lines (98 loc) · 3.21 KB
/
StreetCompleteNumbers.py
File metadata and controls
109 lines (98 loc) · 3.21 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
import xml.etree.ElementTree as ET
import requests
import urllib
from time import sleep
import time
import random
from tqdm import tqdm
"""
Example:
>> from StreetCompleteNumbers import StreetCompleteNumbers
>> StreetCompleteNumbers("nutzername")
"""
def getUserChangeSets(name, maximum=0):
""" Maximum gibt die maximale anzahl an 100ern an, die Abgerufen werden"""
abfragen_anz = 1
closed_after = ""
changesets = []
url = "https://api.openstreetmap.org/api/0.6/changesets?display_name=" + urllib.parse.quote(name) + "&time=2001-01-01"
ans = requests.get(url)
try:
root = ET.fromstring(ans.text)
except:
return []
for child in root:
cs = child.attrib
cs["tags"] = {}
for tagix in range(len(child)):
tag = child[tagix].attrib
cs["tags"][tag["k"]] = tag["v"]
changesets.append(cs)
ready = False
try:
closed_after = root[len(root)-1].attrib["closed_at"]
except:
ready = True
while not ready:
url = "https://api.openstreetmap.org/api/0.6/changesets?display_name=" + urllib.parse.quote(name) + "&time=2001-01-01," + closed_after
ans = requests.get(url)
root = ET.fromstring(ans.text)
if len(root) < 100:
ready = True
for child in root:
cs = child.attrib
cs["tags"] = {}
for tagix in range(len(child)):
tag = child[tagix].attrib
cs["tags"][tag["k"]] = tag["v"]
changesets.append(cs)
try:
closed_after = root[len(root)-1].attrib["closed_at"]
except:
ready = True
break
abfragen_anz += 1
if (abfragen_anz > maximum and maximum != 0):
break
sleep(0.5)
changesets = cleanChangeSets(changesets)
return changesets
def cleanChangeSets(changesets):
newcss = []
for cs in changesets:
schonda = False
for ncs in newcss:
if ncs["id"] == cs["id"]:
schonda = True
if not schonda:
newcss.append(cs)
return newcss
def ChangeSetsToStreetCompleteNumbers(changesets):
quests = {}
total = 0
for changeset in changesets:
if "StreetComplete:quest_type" in changeset["tags"]:
if changeset["tags"]["StreetComplete:quest_type"] in quests:
quests[changeset["tags"]["StreetComplete:quest_type"]] += int(changeset["changes_count"])
else:
quests[changeset["tags"]["StreetComplete:quest_type"]] = int(changeset["changes_count"])
for q in quests:
total += quests[q]
print(total)
return total, quests
def StreetCompleteNumbers(user, maximum=200):
return ChangeSetsToStreetCompleteNumbers(cleanChangeSets(getUserChangeSets(schlechtesErsetzen(user), maximum)))
def getIDhaeufig(changesets):
ids = {}
for changeset in changesets:
if changeset["id"] in ids:
ids[changeset["id"]] += 1
else:
ids[changeset["id"]] = 1
return ids
def schlechtesErsetzen(text):
text = text.replace("ü", "ü")
text = text.replace("ä", "ä")
text = text.replace("ö", "ö")
#text = text.replace("ü", "ü")
return text