You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
Fran314 b7fe73c25d it's now a functional backend 2 months ago
scrapers it's now a functional backend 2 months ago
.env.example it's now a functional backend 2 months ago
.gitignore initial commit 2 months ago
.prettierrc initial commit 2 months ago
README.md started working on Aeronautica Militare 2 months ago
index.js it's now a functional backend 2 months ago
package-lock.json it's now a functional backend 2 months ago
package.json it's now a functional backend 2 months ago
weatherScraper.js it's now a functional backend 2 months ago

README.md

Weather Web-Scraper

CAUTION
The following utility is in EARLY developement. Many promises made in this readme might not actually be true. Hopefully one day we'll be out of beta ~and be releasing on time~

An utility to scrape italian weather websites to collect and compare weather information for Pisa

Usage

WARNING
The script is configured to run on Nix, and because of this is more complicated than it needs to be. You can remove unnecessary stuff if you're not running this on nix

The script scrapes the weather forecast from the implemented sources (see the table below) and returns an object with the following fields

  • today: an object with elements from the hour after the current one to 23, of type hourly (see below)
  • tomorrow: an object with elements from hours 0 to 23, of type hourly (see below)
  • dayAfterTomorrow: an object with elements from hours 0 to 23, of type hourly (see below)
  • week: an object with days 0 to 6, of type daily
  • format: an object specifying the meaning of hourly and daily type for the objects above

The keys for today, tomorrow and dayAfterTomorrow are intended as hours where 0 refers to the time from 0:00 to 0:59, and 23 refers to the time from 23:00 to 23:59.

The keys for the week entry are intended as an offset from today. That is, the object at 0 will be the results for today, the object at 1 will be the results for tomorrow, and the object at 6 will be the results for 6 days from now

Each source has its own format and they are specified below in the sources section (as well as in the object returned by the scraper)

Sources

These are the sources that are currently implemented or will be implemented eventually, together with the current level of implementation

✅ = implemented
🚧 = partially implemented
⛔️ = Not implemented
Source Status Comments
iLMeteo
3Bmeteo 🚧 Precipitation might not work as intended
OpenMeteo
Aeronautica Militare 🚧 Week only has [0..4] instead of [0..6] days
iLMeteo

Format:

{
    "hourly": {
        "temperature": {
            "type": "number",
            "unit": "°C"
        },
        "precipitation": {
            "type": "number",
            "unit": "mm"
        },
        "apparentTemperature": {
            "type": "number",
            "unit": "°C"
        }
    },
    "daily": {
        "minimumTemperature": {
            "type": "number",
            "unit": "°C"
        },
        "maximumTemperature": {
            "type": "number",
            "unit": "°C"
        },
        "minimumApparentTemperature": {
            "type": "number",
            "unit": "°C"
        },
        "maximumApparentTemperature": {
            "type": "number",
            "unit": "°C"
        },
        "precipitationSum": {
            "type": "number",
            "unit": "mm"
        }
    }
}
3Bmeteo

Format:

{
    "hourly": {
        "temperature": {
            "type": "number",
            "unit": "°C"
        },
        "precipitation": {
            "type": "number",
            "unit": "mm"
        },
        "apparentTemperature": {
            "type": "number",
            "unit": "°C"
        },
        "weatherCode": {
            "type": "string"
        }
    },
    "daily": {
        "minimumTemperature": {
            "type": "number",
            "unit": "°C"
        },
        "maximumTemperature": {
            "type": "number",
            "unit": "°C"
        },
        "minimumApparentTemperature": {
            "type": "number",
            "unit": "°C"
        },
        "maximumApparentTemperature": {
            "type": "number",
            "unit": "°C"
        },
        "precipitationSum": {
            "type": "number",
            "unit": "mm"
        }
    }
}
OpenMeteo

Format:

{
    "hourly": {
        "temperature": {
            "type": "number",
            "unit": "°C"
        },
        "precipitation": {
            "type": "number",
            "unit": "mm"
        },
        "precipitationProbability": {
            "type": "number",
            "unit": "%"
        },
        "apparentTemperature": {
            "type": "number",
            "unit": "°C"
        },
        "weatherCode": {
            "type": "number",
            "unit": "WMO code"
        }
    },
    "daily": {
        "minimumTemperature": {
            "type": "number",
            "unit": "°C"
        },
        "maximumTemperature": {
            "type": "number",
            "unit": "°C"
        },
        "minimumApparentTemperature": {
            "type": "number",
            "unit": "°C"
        },
        "maximumApparentTemperature": {
            "type": "number",
            "unit": "°C"
        },
        "precipitationSum": {
            "type": "number",
            "unit": "mm"
        },
        "weatherCode": {
            "type": "number",
            "unit": "WMO code"
        }
    }
}
Aeronautica Militare

Format:

{
    "hourly": {
        "temperature": {
            "type": "number",
            "unit": "°C"
        },
        "precipitationProbability": {
            "type": "number",
            "unit": "%"
        }
    },
    "daily": {
        "minimumTemperature": {
            "type": "number",
            "unit": "°C"
        },
        "maximumTemperature": {
            "type": "number",
            "unit": "°C"
        }
    }
}