mirror of
https://github.com/FAUSheppy/ths-reference-data-collector
synced 2025-12-06 06:51:35 +01:00
add parser & fix some whitespaces
This commit is contained in:
36
main.py
36
main.py
@@ -1,5 +1,6 @@
|
|||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
import argparse
|
||||||
import datetime as dt
|
import datetime as dt
|
||||||
import dateutil.relativedelta
|
import dateutil.relativedelta
|
||||||
import os
|
import os
|
||||||
@@ -23,8 +24,8 @@ DATE_STYLE = openpyxl.styles.NamedStyle(name='custom_de_datetime', number_format
|
|||||||
|
|
||||||
OUTSIDE_DATA_URL = "http://umweltdaten.nuernberg.de/csv/wetterdaten/messstation-nuernberg-flugfeld/archiv/csv-export/SUN/nuernberg-flugfeld/{dtype}/individuell/{fromDate}/{toDate}/export.csv"
|
OUTSIDE_DATA_URL = "http://umweltdaten.nuernberg.de/csv/wetterdaten/messstation-nuernberg-flugfeld/archiv/csv-export/SUN/nuernberg-flugfeld/{dtype}/individuell/{fromDate}/{toDate}/export.csv"
|
||||||
|
|
||||||
headerMappings = {
|
headerMappings = {
|
||||||
"time" : "Datum/Zeit",
|
"time" : "Datum/Zeit",
|
||||||
"lufttemperatur-aussen" : "Temperatur\n[°C]",
|
"lufttemperatur-aussen" : "Temperatur\n[°C]",
|
||||||
"kelvin" : "Temperatur\n[K]" ,
|
"kelvin" : "Temperatur\n[K]" ,
|
||||||
"luftfeuchte" : "rel. Luftfeuchte\n[%]",
|
"luftfeuchte" : "rel. Luftfeuchte\n[%]",
|
||||||
@@ -63,14 +64,14 @@ def downloadFlugfeldData(fromTime, toTime, dtype):
|
|||||||
return content
|
return content
|
||||||
|
|
||||||
def checkLastMonths(backwardsMonths=6):
|
def checkLastMonths(backwardsMonths=6):
|
||||||
|
|
||||||
|
|
||||||
today = dt.datetime.today()
|
|
||||||
|
today = dt.datetime.today()
|
||||||
monthsToCheck = [ today.month - x for x in range(0, backwardsMonths) ]
|
monthsToCheck = [ today.month - x for x in range(0, backwardsMonths) ]
|
||||||
monthsToCheckFixed = list(map(lambda x: x if x > 0 else x + 12, monthsToCheck))
|
monthsToCheckFixed = list(map(lambda x: x if x > 0 else x + 12, monthsToCheck))
|
||||||
|
|
||||||
for monthNumber in monthsToCheckFixed:
|
for monthNumber in monthsToCheckFixed:
|
||||||
|
|
||||||
fullContentDict = dict()
|
fullContentDict = dict()
|
||||||
year = today.year
|
year = today.year
|
||||||
if monthNumber > today.month:
|
if monthNumber > today.month:
|
||||||
@@ -110,8 +111,8 @@ def checkLastMonths(backwardsMonths=6):
|
|||||||
# calc kelvin if temp #
|
# calc kelvin if temp #
|
||||||
if data.dtype == "lufttemperatur-aussen":
|
if data.dtype == "lufttemperatur-aussen":
|
||||||
rowdict.update({ headerMappings["kelvin"] : data.value + 273 })
|
rowdict.update({ headerMappings["kelvin"] : data.value + 273 })
|
||||||
|
|
||||||
writer.writerow(rowdict)
|
writer.writerow(rowdict)
|
||||||
|
|
||||||
def parse(content, dtype):
|
def parse(content, dtype):
|
||||||
skipBecauseFirstLine = True
|
skipBecauseFirstLine = True
|
||||||
@@ -150,16 +151,25 @@ class Data:
|
|||||||
return "Data: {} {} {}".format(self.dtype, self.time, self.value)
|
return "Data: {} {} {}".format(self.dtype, self.time, self.value)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
||||||
|
# parse arguments #
|
||||||
|
parser = argparse.ArgumentParser(description='Reference Data Collector DWD')
|
||||||
|
parser.add_argument('--target-file', default="Weatherdata.xlsx", help='File(-path) to save to')
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
# check laste months #
|
||||||
checkLastMonths()
|
checkLastMonths()
|
||||||
|
|
||||||
|
# read in csv's #
|
||||||
globPattern = "{}/*.csv".format(CSV_DIR)
|
globPattern = "{}/*.csv".format(CSV_DIR)
|
||||||
sheets = {}
|
sheets = {}
|
||||||
for f in glob.glob(globPattern):
|
for f in glob.glob(globPattern):
|
||||||
sheet = pyexcel.get_sheet(file_name=f, delimiter=";")
|
sheet = pyexcel.get_sheet(file_name=f, delimiter=";")
|
||||||
sheets.update({ os.path.basename(f) : sheet })
|
sheets.update({ os.path.basename(f) : sheet })
|
||||||
|
|
||||||
|
# open & save spreadsheet book #
|
||||||
book = pyexcel.get_book(bookdict=sheets)
|
book = pyexcel.get_book(bookdict=sheets)
|
||||||
outfileRaw = "Wetterdaten.xlsx"
|
outfileRaw = args.target_file
|
||||||
book.save_as(outfileRaw)
|
book.save_as(outfileRaw)
|
||||||
|
|
||||||
# formating and style #
|
# formating and style #
|
||||||
@@ -182,7 +192,7 @@ if __name__ == "__main__":
|
|||||||
cell = ws['A1']
|
cell = ws['A1']
|
||||||
cell.value = ws.title[len("Wetterdaten-"):-4].replace("-"," ")
|
cell.value = ws.title[len("Wetterdaten-"):-4].replace("-"," ")
|
||||||
ws['A1'].alignment = openpyxl.styles.Alignment(horizontal='center', vertical='center')
|
ws['A1'].alignment = openpyxl.styles.Alignment(horizontal='center', vertical='center')
|
||||||
cell.fill = openpyxl.styles.PatternFill(start_color='7F03ADFC',
|
cell.fill = openpyxl.styles.PatternFill(start_color='7F03ADFC',
|
||||||
end_color='7F03ADFC', fill_type = 'solid')
|
end_color='7F03ADFC', fill_type = 'solid')
|
||||||
cell.font = openpyxl.styles.Font(bold=True)
|
cell.font = openpyxl.styles.Font(bold=True)
|
||||||
ws.row_dimensions[1].height = 30
|
ws.row_dimensions[1].height = 30
|
||||||
@@ -190,13 +200,13 @@ if __name__ == "__main__":
|
|||||||
# row height of header (second row behind title) #
|
# row height of header (second row behind title) #
|
||||||
ws.row_dimensions[2].height = 55
|
ws.row_dimensions[2].height = 55
|
||||||
|
|
||||||
# color / wrap_text / bold #
|
# color / wrap_text / bold #
|
||||||
for row in ws.iter_rows(min_row=2, max_row=2, min_col=1):
|
for row in ws.iter_rows(min_row=2, max_row=2, min_col=1):
|
||||||
for cell in row:
|
for cell in row:
|
||||||
cell.alignment = openpyxl.styles.Alignment(horizontal='center', vertical='top',
|
cell.alignment = openpyxl.styles.Alignment(horizontal='center', vertical='top',
|
||||||
wrapText=True)
|
wrapText=True)
|
||||||
cell.font = openpyxl.styles.Font(bold=True)
|
cell.font = openpyxl.styles.Font(bold=True)
|
||||||
cell.fill = openpyxl.styles.PatternFill(start_color='7F03ADFC',
|
cell.fill = openpyxl.styles.PatternFill(start_color='7F03ADFC',
|
||||||
end_color='7F03ADFC', fill_type = 'solid')
|
end_color='7F03ADFC', fill_type = 'solid')
|
||||||
|
|
||||||
# date format #
|
# date format #
|
||||||
|
|||||||
Reference in New Issue
Block a user