diff --git a/scraper/src/loadStations.js b/scraper/src/loadStations.js index d0681a7..fbbf935 100644 --- a/scraper/src/loadStations.js +++ b/scraper/src/loadStations.js @@ -20,9 +20,12 @@ module.exports = async function loadStations (baseMinYear) { const url = 'https://opendata.dwd.de/climate_environment/CDC/observations_germany/climate/daily/kl/recent/KL_Tageswerte_Beschreibung_Stationen.txt'; const raw = (await got(url, { encoding: 'latin1' })).body; - return parseFixedWidth(raw, { - skip: 3, - widths: [5, 9, 9, 15, 12, 10, 42, 22], + const stations = parseFixedWidth(raw, { + // The format was changed sometime between 2024-04-15 and 2024-05-01 + //skip: 3, + //widths: [5, 9, 9, 15, 12, 10, 42, 22], + skip: 2, + widths: [21, 9, 9, 14, 12, 10, 81, 843], names: ['id', 'from', 'to', 'altitude', 'lat', 'lon', 'name', 'state'], }) .map(station => ({ @@ -37,6 +40,11 @@ module.exports = async function loadStations (baseMinYear) { .filter(station => !STATION_BLACKLIST.includes(station.name)) .filter(d => dayjs(d.from).year() <= baseMinYear && dayjs().diff(d.to, 'day') < 5) .sort((a, b) => (a.slug > b.slug ? 1 : b.slug > a.slug ? -1 : 0)); + + if (stations.length === 0) { + throw new Error('No stations found'); + } + return stations; }; function parseFixedWidth (data, { skip = 0, widths = [], names = [], trim = true }) {