Skip to content

Commit 88ab2f1

Browse files
committed
notworking
1 parent c352836 commit 88ab2f1

File tree

2 files changed

+26
-30
lines changed

2 files changed

+26
-30
lines changed

mapswipe_workers/mapswipe_workers/definitions.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
LOGGING_FILE_PATH = os.path.join(DATA_PATH, "mapswipe_workers.log")
1414

1515
OHSOME_API_LINK = "https://api.ohsome.org/v1/"
16-
OSM_API_LINK = "https://www.openstreetmap.org/api/0.6/"
16+
OSMCHA_API_LINK = "https://osmcha.org/api/v1/"
17+
OSMCHA_API_KEY = os.environ["OSMCHA_API_KEY"]
1718

1819
# number of geometries for project geometries
1920
MAX_INPUT_GEOMETRIES = 10

mapswipe_workers/mapswipe_workers/utils/api_calls.py

Lines changed: 24 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
from xml.etree import ElementTree
2-
31
import requests
42
from requests.adapters import HTTPAdapter
53
from requests.packages.urllib3.util.retry import Retry
64

75
from mapswipe_workers.definitions import (
86
OHSOME_API_LINK,
9-
OSM_API_LINK,
7+
OSMCHA_API_KEY,
8+
OSMCHA_API_LINK,
109
CustomError,
1110
logger,
1211
)
@@ -27,7 +26,8 @@ def retry_get(url, retries=3, timeout=4):
2726
retry = Retry(total=retries)
2827
with requests.Session() as session:
2928
session.mount("https://", HTTPAdapter(max_retries=retry))
30-
return session.get(url, timeout=timeout)
29+
headers = {"Authorization": OSMCHA_API_KEY}
30+
return session.get(url, timeout=timeout, headers=headers)
3131

3232

3333
def geojsonToFeatureCollection(geojson: dict) -> dict:
@@ -49,36 +49,30 @@ def chunks(arr, n_objects):
4949
]
5050

5151

52-
def query_osm(changeset_ids: list, changeset_results):
52+
def query_osmcha(changeset_ids: list, changeset_results):
5353
"""Get data from changesetId."""
5454
id_string = ",".join(map(str, changeset_ids))
5555

56-
url = OSM_API_LINK + f"changesets?changesets={id_string}"
56+
url = OSMCHA_API_LINK + f"changesets/?ids={id_string}"
57+
logger.info(url)
58+
logger.info(len(changeset_ids))
5759
response = retry_get(url)
5860
if response.status_code != 200:
59-
err = f"osm request failed: {response.status_code}"
61+
err = f"osmcha request failed: {response.status_code}"
6062
logger.warning(f"{err}")
6163
logger.warning(response.json())
6264
raise CustomError(err)
63-
tree = ElementTree.fromstring(response.content)
64-
65-
for changeset in tree.iter("changeset"):
66-
id = changeset.attrib["id"]
67-
username = remove_troublesome_chars(changeset.attrib["user"])
68-
userid = changeset.attrib["uid"]
69-
comment = created_by = None
70-
for tag in changeset.iter("tag"):
71-
if tag.attrib["k"] == "comment":
72-
comment = tag.attrib["v"]
73-
if tag.attrib["k"] == "created_by":
74-
created_by = tag.attrib["v"]
75-
76-
changeset_results[int(id)] = {
77-
"username": remove_troublesome_chars(username),
78-
"userid": userid,
79-
"comment": remove_troublesome_chars(comment),
80-
"created_by": remove_troublesome_chars(created_by),
65+
response = response.json()
66+
logger.info(response)
67+
for feature in response["features"]:
68+
logger.info(feature)
69+
changeset_results[int(feature["id"])] = {
70+
"username": remove_troublesome_chars(feature["properties"]["user"]),
71+
"userid": feature["properties"]["uid"],
72+
"comment": remove_troublesome_chars(feature["properties"]["comment"]),
73+
"editor": remove_troublesome_chars(feature["properties"]["editor"]),
8174
}
75+
8276
return changeset_results
8377

8478

@@ -111,15 +105,16 @@ def remove_noise_and_add_user_info(json: dict) -> dict:
111105
logger.info(
112106
f"""{len_osm} changesets will be queried in roughly {batches} batches"""
113107
)
114-
chunk_list = chunks(list(changeset_results.keys()), 100)
108+
chunk_list = chunks(list(changeset_results.keys()), 50)
115109
for i, subset in enumerate(chunk_list):
116-
changeset_results = query_osm(subset, changeset_results)
110+
changeset_results = query_osmcha(subset, changeset_results)
117111
progress = round(100 * ((i + 1) / len(chunk_list)), 1)
118112
logger.info(f"finished query {i+1}/{len(chunk_list)}, {progress}")
119113

120114
for feature in json["features"]:
121-
changeset = changeset_results[feature["properties"]["changesetId"]]
122-
for attribute_name in ["username", "comment", "created_by", "userid"]:
115+
changeset = changeset_results[int(feature["properties"]["changesetId"])]
116+
logger.warn(changeset)
117+
for attribute_name in ["username", "comment", "editor", "userid"]:
123118
feature["properties"][attribute_name] = changeset[attribute_name]
124119

125120
logger.info("finished filtering and adding extra info")

0 commit comments

Comments
 (0)