|
|
|
# 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
|
|
|
|
|
|
|
|
## 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 scraper collects data and arranges in the following scheme
|
|
|
|
|
|
|
|
```json
|
|
|
|
{
|
|
|
|
"today": {
|
|
|
|
"[0..23]": {
|
|
|
|
"temp": {
|
|
|
|
"type": "number",
|
|
|
|
"unitOfMeasurement": "degrees",
|
|
|
|
"description": "expected temperature at the given hour"
|
|
|
|
},
|
|
|
|
"prec": {
|
|
|
|
"type": "number",
|
|
|
|
"unitOfMeasurement": "mm",
|
|
|
|
"description": "expected precipitation at the given hour"
|
|
|
|
},
|
|
|
|
"code": {
|
|
|
|
"type": "string",
|
|
|
|
"description": "weather code (sunny / cloudy / ...)"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"tomorrow": {
|
|
|
|
"[0..23]": {
|
|
|
|
"temp": {
|
|
|
|
"type": "number",
|
|
|
|
"unitOfMeasurement": "degrees",
|
|
|
|
"description": "expected temperature at the given hour"
|
|
|
|
},
|
|
|
|
"prec": {
|
|
|
|
"type": "number",
|
|
|
|
"unitOfMeasurement": "mm",
|
|
|
|
"description": "expected precipitation at the given hour"
|
|
|
|
},
|
|
|
|
"code": {
|
|
|
|
"type": "string",
|
|
|
|
"description": "weather code (sunny / cloudy / ...)"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"dayAfterTomorrow": {
|
|
|
|
"[0..23]": {
|
|
|
|
"temp": {
|
|
|
|
"type": "number",
|
|
|
|
"unitOfMeasurement": "degrees",
|
|
|
|
"description": "expected temperature at the given hour"
|
|
|
|
},
|
|
|
|
"prec": {
|
|
|
|
"type": "number",
|
|
|
|
"unitOfMeasurement": "mm",
|
|
|
|
"description": "expected precipitation at the given hour"
|
|
|
|
},
|
|
|
|
"code": {
|
|
|
|
"type": "string",
|
|
|
|
"description": "weather code (sunny / cloudy / ...)"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"week": {
|
|
|
|
"[0..6]": {
|
|
|
|
"minTemp": {
|
|
|
|
"type": "number",
|
|
|
|
"unitOfMeasurement": "degrees",
|
|
|
|
"description": "minimum expected temperature for the day"
|
|
|
|
},
|
|
|
|
"maxTemp": {
|
|
|
|
"type": "number",
|
|
|
|
"unitOfMeasurement": "degrees",
|
|
|
|
"description": "maximum expected temperature for the day"
|
|
|
|
},
|
|
|
|
"totPrec": {
|
|
|
|
"type": "number",
|
|
|
|
"unitOfMeasurement": "mm",
|
|
|
|
"description": "total expected precipitation for the day"
|
|
|
|
},
|
|
|
|
"code": {
|
|
|
|
"type": "string",
|
|
|
|
"description": "weather code (sunny / cloudy / ...)"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
### 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](https://www.ilmeteo.it) | 🚧 | Weather Code not working |
|
|
|
|
| [3Bmeteo](https://www.3bmeteo.com/) | 🚧 | Precipitation might not work as intended |
|
|
|
|
| [Meteo Aeronautica Militare](http://www.meteoam.it/) | ⛔️ | |
|