Skip to content

Instantly share code, notes, and snippets.

@LtGlahn
Last active May 7, 2020 04:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save LtGlahn/9dbe5aa11b5bd745004bbf613507ddc1 to your computer and use it in GitHub Desktop.
Save LtGlahn/9dbe5aa11b5bd745004bbf613507ddc1 to your computer and use it in GitHub Desktop.
Demo pagineringseksempel NVDB api V3
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