MythWeather Grabber Script Format
MythWeather grabber scripts are small executable perl, python, or binary applications which query online sources of weather and return it in a format parseable by MythWeather. This page documents the current format required of the grabber scripts to function.
MythWeather has six different types of pages. Grabbers are categorized into these types by the data they specify as capable of providing. Grabbers can seamlessly provide data for multiple pages by making sure to meet all the requirements for each.
Three Day Forecast
- date-0 through date-2
- icon-0 through icon-2
- low-0 through low-2
- high-0 through high-2
Six Day Forecast
- date-0 through date-5
- icon-0 through icon-5
- high-0 through high-5
- low-0 through low-5
Severe Weather Alerts
18 Hour Forecast
- time-0 through time-5
- 18icon-0 through 18icon-5
- temp-0 through temp-5
- pop-0 through pop-5
The grabber implements five commands. The basic flow is:
- User invokes the page Screen Settings page in the weather setup. On entry myth scans the script directories for executable files. To each of them myth issues the -v command. The grabber replies with a version number. If the version is unchanged, myth uses already present data in the database. Otherwise - myth issues -t command. The grabber lists what kind of data it provides. If the list is enough to meet the requirements for one or more pages, myth will use it for these. - myth issues -T command. Grabber replies with data timeout(min) and http timeout(seconds) - User sets up a page using the mythfrontend setup tool. Eventually, she has to search for available data for a specific place. When doing so, myth issues -l <search string > command. The grabber replies with a list of places matching the user search string. - Myth presents all matches it has got from all grabbers, user selects one of them. - From this point, myth issues -u <units> -d dir <location> commands to fill the screen. Grabber replies with lines of data.
The Version Command (-v)
All grabber scripts must return an identifying string when run with the '-v' argument. The command returns a comma separated list of the script name, script version, author, and author's email, and output must end with a newline character.
#./bbccurrentxml.pl -v BBC-Current-XML,0.2,Stuart Morgan,email@example.com
The Timeout Command (-T)
All grabber scripts must return two timeout values when run with the '-T' argument. The command returns a comma separated list of information lifetime, and web response timeout, in seconds.
#./bbccurrentxml.pl -T 7200,30
The Field List Command (-t)
All grabber scripts must return a list of available data fields, one per line, when run with the '-t' argument.
#./bbccurrentxml.pl -t cclocation station_id copyright observation_time weather temp relative_humidity wind_dir pressure visibility weather_icon appt wind_spdgst
The Location Search Command (-l <location>)
All grabber scripts must return a list of possible location matches, one per line, when run with the '-l' argument. The matches are an identifying string to be used with the data string, and a description, separated by a double colon.
#./bbccurrentxml.pl -l Cincinnati 407::Cincinnati, Ohio 3231::Cincinnati/Northern Kentucky International, Kentucky
The Data Command (-u <unit system> -d <folder> <location string>)
The data command includes a mandatory unit system, and provides a directory path with full read/write access. The location will be that provided by the '-l' command, and the unit system will be one of 'SI' or 'ENG'. The directory can be used to store temporary data or cache results, or can be silently ignored. Data is returned, one value per line, separated from the identifying string by a double colon.
#./bbccurentxml.pl -u ENG 407 appt::NA copyright::From bbc.co.uk station_id::407 cclocation::Cincinnati, United States of America observation_time::Thursday at 13:00 EST weather::Grey cloud weather_icon::cloudy.png temp::43 wind_dir::E wind_spdgst::9 (NA) relative_humidity::65 pressure::30.5321117 visibility::10-20
Valid Data Types
|cclocation||Descriptive name of location||Text|
|wind_spdgst||Wing speed (gust)||Integer|
|alerts||can have multiple lines|