Browse Source

import

master
Lennart Weller 3 weeks ago
parent
commit
0d80a02c8e
  1. 6
      Dockerfile
  2. 49
      readPLSingleTask.py

6
Dockerfile

@ -0,0 +1,6 @@
FROM python:3.9-slim
RUN mkdir -p /app/data/data/
ADD readPLSingleTask.py /app/
WORKDIR /app/
CMD ["python", "readPLSingleTask.py"]

49
readPLSingleTask.py

@ -0,0 +1,49 @@
# Braunschweig Parkhausdaten auslesen und ausgeben
# Einmal URL aufrufen und dann Schluss
import urllib.request
import logging
import json
import time
import sys
import csv
# überschreibt den csv dialekt mit Semikolon anstelle von Kommata
class semicolon(csv.excel):
delimiter = ";"
logging.basicConfig(filename="data/log", format="%(message)s", level=logging.INFO)
fileName = f"data/data/dataPL-{time.strftime('%Y-%U')}.csv"
logging.info("File;%s", fileName)
with open(fileName, 'a') as outF:
# liefert die JSON Daten der Braunschweiger Parkhäuser
url = urllib.request.urlopen("https://www.braunschweig.de/apps/pulp/result/parkhaeuser.geojson")
if url.code != 200:
logging.error('Aufruf URL nicht erfolgreich')
sys.exit(1)
# liest die Daten zur URL
bin = url.read()
# wandelt in ein Python Dicotionary Objekt um
jsn = json.loads(bin)
if jsn["type"] != 'FeatureCollection':
logging.error("Falscher Typ der JSON Daten: %s", jsn['type'])
sys.exit(2)
logging.info("DTA;%s;%s", time.ctime(), jsn['buildTimestamp'])
field_names = ["name", "timestamp", "occupancy", "occupancyRate", "capacity", "free"]
# DictWriter mapped die werte aus den dictionaries mit den field_names auf csv zeilen
writer = csv.DictWriter(outF, field_names, extrasaction='ignore', dialect=semicolon)
# list comprehension reduziert die liste an features auf deren properties
properties = [p["properties"] for p in jsn["features"]]
# filter entfernt alle elemente die nicht func() matchen (in diesem fall der lambda funktion)
valid = filter((lambda p: p["openingState"] == "open" and p["occupancyRate"] != "None"), properties)
# writerows schreibt alle zeilen raus passend gematcht mit den field_names aus der definition von DictWriter
writer.writerows(valid)
Loading…
Cancel
Save