Automatische Prüfung der Berechnung durch Vergleich mit alten Ergebnissen auf alten Ausweisen.
69 lines
1.4 KiB
TypeScript
69 lines
1.4 KiB
TypeScript
import moment from "moment";
|
|
import csv from "csvtojson";
|
|
import * as fs from "fs";
|
|
|
|
const start = moment().set("year", 2019).set("month", 8).set("date", 1);
|
|
|
|
const end = moment().set("year", 2023).set("month", 1).set("date", 1);
|
|
|
|
let current = start.clone();
|
|
|
|
do {
|
|
const lastYearString = current.clone().startOf("month").format("YYYYMMDD");
|
|
const nextYearString = current
|
|
.clone()
|
|
.subtract(1, "month")
|
|
.add(1, "year")
|
|
.endOf("month")
|
|
.format("YYYYMMDD");
|
|
|
|
const filename = `KF_${lastYearString}_${nextYearString}.csv`;
|
|
|
|
const url =
|
|
"https://opendata.dwd.de/climate_environment/CDC/derived_germany/techn/monthly/climate_correction_factor/recent/";
|
|
|
|
const response = await fetch(`${url}${filename}`);
|
|
|
|
if (response.status !== 200) {
|
|
console.error(`Could not fetch ${url}${filename}`);
|
|
process.exit(1);
|
|
}
|
|
|
|
const parser = csv({
|
|
noheader: false,
|
|
output: "json",
|
|
delimiter: ";",
|
|
});
|
|
|
|
const data: {
|
|
DatAnf: string;
|
|
DatEnd: string;
|
|
PLZ: string;
|
|
KF: string;
|
|
}[] = await parser.fromString(await response.text());
|
|
|
|
const year = current.year();
|
|
const month = current.month();
|
|
|
|
const json = JSON.parse(fs.readFileSync("./test.json", "utf-8"));
|
|
|
|
fs.writeFileSync(
|
|
"./test.json",
|
|
JSON.stringify(
|
|
[
|
|
...json,
|
|
...data.map((row) => [
|
|
year,
|
|
month,
|
|
parseFloat(row.KF),
|
|
row.PLZ,
|
|
]),
|
|
],
|
|
null,
|
|
2
|
|
)
|
|
);
|
|
|
|
console.log(`Wrote ${year}-${month} to file.`);
|
|
} while (current.add(1, "month").isBefore(end));
|