Last active
May 7, 2020 04:01
-
-
Save LtGlahn/9dbe5aa11b5bd745004bbf613507ddc1 to your computer and use it in GitHub Desktop.
Demo pagineringseksempel NVDB api V3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import requests | |
import json | |
import datetime | |
# Konfigurering | |
outputfile = 'paginering45.json' | |
url_tomside = 'http://jansimple.pythonanywhere.com/static/tompaginering.json' | |
minimumantall = 300 # Dropper skriving hvis vi ikke får flere objekter enn som så | |
# Interne variabler | |
params = { 'inkluder' : 'geometri,egenskaper', 'srid' : 4326 } | |
headers = { 'Accept' : 'application/vnd.vegvesen.nvdb-v3-rev1+json', | |
'X-Client' : 'Python elskere hilsen fra NVDB-teamet', | |
'User-Agent' : 'Python requests' } | |
json_mal = { | |
"objekter": [ ], | |
"metadata": { | |
"antall": 0, | |
"returnert": 0, | |
"sidestørrelse": 500, | |
"neste": { | |
"start": "fjasetull", | |
"href": "http://jansimple.pythonanywhere.com/static/nvdbpaginering/tompaginering.json?start=fjasetull&inkluder=geometri,egenskaper&srid=4326" | |
} | |
} | |
} | |
json_mal['metadata']['dato_oppdatert'] = str( datetime.datetime.now()) | |
# Skriv ut tom side | |
with open( 'tompaginering.json', 'w', encoding='utf-8') as f: | |
json.dump( json_mal, f, indent=4) | |
# Henter første side | |
apiurl = 'https://nvdbapiles-v3.atlas.vegvesen.no/vegobjekter/45' | |
r = requests.get( apiurl, headers=headers, params=params ) | |
data = r.json() | |
json_mal['metadata']['antall'] = data['metadata']['antall'] | |
while data['metadata']['returnert'] > 0: | |
json_mal['objekter'].extend( data['objekter'] ) | |
print( 'Paginerer - har fått', len(json_mal['objekter']), 'objekter') | |
r = requests.get( data['metadata']['neste']['href'], headers=headers ) | |
data = r.json() | |
# Sjekker at vi har fått tilstrekkelig mange bomstasjoner | |
# Skriver ut hvis vi er happy | |
if json_mal['metadata']['antall'] > minimumantall and len( json_mal['objekter'] ) > minimumantall: | |
with open( outputfile, 'w', encoding='utf-8') as f: | |
json.dump( json_mal, f, indent=4, ensure_ascii=False ) | |
else: | |
print( 'Fant ikke nok objekter! Må ha flere enn', minimumantall) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment