wip rewrite

This commit is contained in:
2024-02-08 20:06:29 +01:00
parent cb82eed2f0
commit 398738f8db
2 changed files with 50 additions and 18 deletions

View File

@@ -205,7 +205,7 @@ xmlString = ET.tostring(data, encoding="utf-8", xml_declaration=True)
# -------------------------------- Format xml -------------------------------- # # -------------------------------- Format xml -------------------------------- #
formatter = xmlformatter.Formatter(indent="2", indent_char=" ") formatter = xmlformatter.Formatter(indent=2, indent_char=" ")
formattedXml = formatter.format_string(xmlString) formattedXml = formatter.format_string(xmlString)
# print(formattedXml) # print(formattedXml)

View File

@@ -4,6 +4,7 @@ import argparse
from importlib.metadata import metadata from importlib.metadata import metadata
from pathlib import Path from pathlib import Path
import csv import csv
import datetime
REQUIRED_CSV_COLUMNS = ['Notes', 'Meter n°', 'Reading', 'Reading data'] REQUIRED_CSV_COLUMNS = ['Notes', 'Meter n°', 'Reading', 'Reading data']
@@ -11,6 +12,7 @@ REQUIRED_CSV_COLUMNS = ['Notes', 'Meter n°', 'Reading', 'Reading data']
METADATA = metadata("BudaportaFvmConvert") METADATA = metadata("BudaportaFvmConvert")
__version__ = METADATA["Version"] __version__ = METADATA["Version"]
def run(): def run():
parser = argparse.ArgumentParser( parser = argparse.ArgumentParser(
prog=METADATA["Name"], prog=METADATA["Name"],
@@ -23,24 +25,24 @@ def run():
) )
parser.add_argument("source", parser.add_argument("source",
type=Path, type=Path,
help="Path to a csv file or a folder", help="Path to a csv file or a folder",
nargs="+" nargs="+"
) )
args = parser.parse_args() args = parser.parse_args()
csvpaths = [] csvpaths = []
readings = []
for path in args.source: for path in args.source:
if path.is_dir(): if path.is_dir():
csvpaths.extend(get_csv_paths(path)) csvpaths.extend(get_csv_paths(path))
elif path.suffix == ".csv": elif path.suffix == ".csv":
csvpaths.append(path) csvpaths.append(path)
for csvpath in csvpaths: for csvpath in csvpaths:
CsvFile(csvpath) readings.extend(CsvFile(csvpath).get_readings())
def get_csv_paths(dp: Path): def get_csv_paths(dp: Path):
@@ -54,12 +56,42 @@ def get_csv_paths(dp: Path):
class CsvFile: class CsvFile:
def __init__(self, filepath: Path) -> None: def __init__(self, filepath: Path) -> None:
with open(filepath, newline='') as csvfile: self.header_numbers = {}
incsv = csv.reader(csvfile, delimiter=';') self.readings = []
# csvArrs.append([]) with open(filepath, newline='', encoding="cp1252") as csvfile:
# for row in incsv: incsv = list(csv.reader(csvfile, delimiter=';'))
# csvArrs[0].append(row) header_row = incsv.pop(0)
for i, col_name in enumerate(header_row):
if col_name in REQUIRED_CSV_COLUMNS:
self.header_numbers[col_name] = i
for csv_row in incsv:
self.readings.append(Reading(csv_row, self.header_numbers))
class CsvRow: def get_readings(self) -> list["Reading"]:
def __init__(self, ) -> None: return self.readings
pass
class Reading:
def __init__(self, csv_row: list, header_numbers: dict) -> None:
self.data_dict = {
"KeszulekAzon": "",
"Gyariszam": "",
"MeroAllas": "",
"MertekEgyseg": "m3",
"LeoMod": "20",
"LeoMegjegyzes": "06",
"TenyLeoDatum": "",
"TenyLeoIdo": ""
}
for col_name, col_num in header_numbers.items():
if col_name == "Notes":
self.data_dict["KeszulekAzon"] = csv_row[col_num]
elif col_name == "Meter n°":
self.data_dict["Gyariszam"] = csv_row[col_num]
elif col_name == "Reading":
self.data_dict["MeroAllas"] = csv_row[col_num]\
.replace(',', '.').replace(' ', '')
elif col_name == "Reading data":
reading_date = datetime.datetime.strptime(
csv_row[col_num], '%d. %m. %Y %H:%M:%S')
self.data_dict["TenyLeoDatum"] = reading_date.strftime('%Y%m%d')
self.data_dict["TenyLeoIdo"] = reading_date.strftime('%H%M%S')