Page 15 sur 24
L'API Wikidata
Par le passé il existait une librairie Python dédiée, mais elle ne semble plus maintenue. Cependant l'API Wikidata continue de diffuser des JSON, nous allons donc utiliser directement la librairie requests pour les interroger, et récupérer, par exemple, une éventuelle image, afin de l'intégrer dans nos cartes.
Certains sommets possèdent un id Wikidata (dans le champ OTHER_TAGS). Exemple de lien vers donnée Wikidata, suffixé par un id Wikidata :
- https://osm.wikidata.link/Q726652
- https://www.wikidata.org/wiki/Q726652
- https://www.wikidata.org/wiki/Special:EntityData/Q1617977.json
Le dernier lien est un JSON ! Du coup :
import json import requests qid = 'Q726652' url = 'https://www.wikidata.org/wiki/Special:EntityData/' + qid + '.json' headers = {'User-Agent': Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.'} response = requests.get(url, headers=headers) my_data = json.loads(response.text) entity = my_data['entities'][qid] image_name = entity["claims"].get("P18", [{}])[0].get("mainsnak", {}).get("datavalue", {}).get("value", None) print(image_name) if image_name: image_url = 'https://commons.wikimedia.org/wiki/Special:FilePath/' + str(image_name).replace(' ', '_') else: image_url = '' print('URL de l\'image:', image_url)