Extension:Wunderground
|
Wunderground Release status: beta |
|||
|---|---|---|---|
| Description | Grab weather from wundeground.com based on location | ||
| Last version | 1.0 | ||
| License | No license specified | ||
| Download | No link | ||
|
|||
|
Check usage (experimental) |
|||
Contents |
[edit] What can this extension do?
If supplied with location data it will return a JSON stream of various weather data. This extension creates the tag <wunderground> </wunderground>, it takes various arguments e.g <wunderground arg="somewhere"> This arg can then be used to push to wunderground to return weather data based on this location.
See http://www.wunderground.com/weather/api/d/documentation.html for specifics of what you can push to wunderground.
[edit] Usage
In this case I am using ICAO codes for airport data, this is passed to wunderground as non ambiguous location data. Cities, Lat/Long and others can also be used. See Docs above adn note slight change of URL ebing called. " /q/"airport" vs "/q/STATE/CITY"
YOU WILL NEED TO APPLY FOR AN API KEY. It takes 2 minutes and is free. Here
[edit] Download instructions
Please cut and paste the code found below and place it in $IP/extensions/wunderground/wundeground.php. Note: $IP stands for the root directory of your MediaWiki installation, the same directory that holds LocalSettings.php.
<?php # Weather Underground Extension # by WookieNZ # http://www.wookie.co.nz # Usage: # <wunderground airport="KLAX"></wunderground> # Source and examples # http://wunderground.com/weather/api/d/documentation.html # Put this file in the wunderground directory in Extensions # To activate the extension, include it from your LocalSettings.php # with: require_once("extensions/wunderground/wunderground.php"); $wgHooks['ParserFirstCallInit'][] = "wfwunderground"; $wgExtensionCredits['parserhook'][] = array( 'name' => 'Wunderground Extension', 'description' => 'Displays Weather Forecast from wunderground.com', 'author' => 'Wookie - http://www.wookie.co.nz', 'url' => 'http://www.mediawiki.org/wiki/Extension:wunderground', 'version' => '1.0 (13/Nov/2011)' ); function wfwunderground(Parser &$parser) { global $wgParser; # registers the <wunderground> extension tags with the WikiText parser $wgParser->setHook( "wunderground", "renderwunderground" ); return true; } # The callback function for converting the input text to HTML output function renderwunderground( $input, $argv ) { // escape airport to prevent XSS $argv['airport'] = htmlspecialchars($argv['airport']) ; $json_string = file_get_contents("http://api.wunderground.com/api/YOURAPIKEYHERE/geolookup/conditions/q/".$argv['airport'].".json"); $parsed_json = json_decode($json_string); $location = $parsed_json->{'location'}->{'city'}; $temp_f = $parsed_json->{'current_observation'}->{'temp_f'}; $output= '<div style="width: 300px; height: 250px; background-image: url( http://vortex.accuweather.com/adcbin/netweather_v2/backgrounds/lhtblue_300x250_bg.jpg ); background-repeat: no-repeat; background-color: #3BA6C9;" ></div>'; $output .= '<div><p>The current Temp is '.$temp_f.' farenheit</p></div>'; return $output; }
[edit] Installation
To install this extension, add the following to LocalSettings.php:
require_once("$IP/extensions/wunderground/wunderground.php");
[edit] Configuration parameters
The JSON stream returns the following structure of data (sample data included):
object(stdClass)#176 (3) {
["response"]=> object(stdClass)#175 (3) {
["version"]=> string(3) "0.1"
["termsofService"]=> string(52) "http://www.wunderground.com/weather/api/d/terms.html"
["features"]=> object(stdClass)#177 (2) {
["geolookup"]=> int(1)
["conditions"]=> int(1) } }
["location"]=> object(stdClass)#178 (17) {
["type"]=> string(8) "INTLCITY"
["country"]=> string(2) "CI"
["country_iso3166"]=> string(2) "CN"
["country_name"]=> string(5) "China"
["state"]=> string(2) "HK"
["city"]=> string(23) "Hong Kong International"
["tz_short"]=> string(3) "HKT"
["tz_long"]=> string(14) "Asia/Hong_Kong"
["lat"]=> string(11) "22.30888939"
["lon"]=> string(12) "113.91471863"
["zip"]=> string(5) "00000"
["magic"]=> string(1) "4"
["wmo"]=> string(5) "45007"
["l"]=> string(20) "/q/zmw:00000.4.45007"
["requesturl"]=> string(26) "global/stations/45007.html"
["wuiurl"]=> string(54) "http://www.wunderground.com/global/stations/45007.html"
["nearby_weather_stations"]=> object(stdClass)#179 (2) {
["airport"]=> object(stdClass)#180 (1) {
["station"]=> array(4) {
[0]=> object(stdClass)#181 (6) {
["city"]=> string(32) "Hong Kong Inter-National Airport"
["state"]=> string(0) ""
["country"]=> string(9) "Hong Kong"
["icao"]=> string(4) "VHHH"
["lat"]=> string(11) "22.33333206"
["lon"]=> string(12) "114.18333435" }
[1]=> object(stdClass)#182 (6) {
["city"]=> string(9) "Hong Kong"
["state"]=> string(0) ""
["country"]=> string(2) "CI"
["icao"]=> string(4) "VHHH"
["lat"]=> string(11) "22.30999947"
["lon"]=> string(12) "113.91000366" }
[2]=> object(stdClass)#183 (6) {
["city"]=> string(8) "Shenzhen"
["state"]=> string(0) ""
["country"]=> string(2) "CI"
["icao"]=> string(4) "ZGSZ"
["lat"]=> string(11) "22.54999924"
["lon"]=> string(12) "114.09999847" }
[3]=> object(stdClass)#184 (6) {
["city"]=> string(5) "Taipa"
["state"]=> string(0) ""
["country"]=> string(2) "MU"
["icao"]=> string(4) "VMMC"
["lat"]=> string(11) "22.17000008"
["lon"]=> string(12) "113.56999969" } } }
["pws"]=> object(stdClass)#185 (1) {
["station"]=> array(6) {
[0]=> object(stdClass)#186 (7) {
["neighborhood"]=> string(20) "Tai O, Lantau Island"
["city"]=> string(9) "Hong Kong"
["state"]=> string(5) "HKSAR"
["country"]=> string(5) "CHINA"
["id"]=> string(9) "IHKSARHO2"
["distance_km"]=> int(8)
["distance_mi"]=> int(4) }
[1]=> object(stdClass)#187 (7) {
["neighborhood"]=> string(30) "APRSWXNET Discovery College HK"
["city"]=> string(9) "Hong Kong"
["state"]=> string(2) "HK"
["country"]=> string(2) "CI"
["id"]=> string(6) "MD8470"
["distance_km"]=> int(10)
["distance_mi"]=> int(6) }
[2]=> object(stdClass)#188 (7) {
["neighborhood"]=> string(12) "Lei Cheng Uk"
["city"]=> string(14) "Cheung Sha Wan"
["state"]=> string(9) "Hong Kong"
["country"]=> string(5) "CHINA"
["id"]=> string(9) "IU9999U63"
["distance_km"]=> int(25)
["distance_mi"]=> int(15) }
[3]=> object(stdClass)#189 (7) {
["neighborhood"]=> string(14) "Sha Pa Village"
["city"]=> string(6) "Tai Po"
["state"]=> string(2) "NT"
["country"]=> string(9) "HONG KONG"
["id"]=> string(9) "ISDSTANL2"
["distance_km"]=> int(27)
["distance_mi"]=> int(16) }
[4]=> object(stdClass)#190 (7) {
["neighborhood"]=> string(19) "Ma Yau Tong Village"
["city"]=> string(8) "Sai Kung"
["state"]=> string(9) "HONG KONG"
["country"]=> string(5) "China"
["id"]=> string(9) "IHONGKON9"
["distance_km"]=> int(34)
["distance_mi"]=> int(20) }
[5]=> object(stdClass)#191 (7) {
["neighborhood"]=> string(20) "APRSWXNET Saikung HK"
["city"]=> string(8) "Junk Bay"
["state"]=> string(2) "HK"
["country"]=> string(2) "CI"
["id"]=> string(6) "MD2902"
["distance_km"]=> int(35)
["distance_mi"]=> int(21) } } } } }
["current_observation"]=> object(stdClass)#192 (47) {
["image"]=> object(stdClass)#193 (3) {
["url"]=> string(53) "http://icons-ak.wxug.com/graphics/wu2/logo_130x80.png"
["title"]=> string(19) "Weather Underground"
["link"]=> string(27) "http://www.wunderground.com" }
["display_location"]=> object(stdClass)#194 (10) {
["full"]=> string(34) "Hong Kong International, Hong Kong"
["city"]=> string(23) "Hong Kong International"
["state"]=> string(2) "HK"
["state_name"]=> string(9) "Hong Kong"
["country"]=> string(2) "CI"
["country_iso3166"]=> string(2) "CN"
["zip"]=> string(5) "00000"
["latitude"]=> string(11) "22.30888939"
["longitude"]=> string(12) "113.91471863"
["elevation"]=> string(10) "5.00000000" }
["observation_location"]=> object(stdClass)#195 (8) {
["full"]=> string(11) "Hong Kong, "
["city"]=> string(9) "Hong Kong"
["state"]=> string(0) ""
["country"]=> string(2) "CI"
["country_iso3166"]=> string(2) "CN"
["latitude"]=> string(11) "22.30999947"
["longitude"]=> string(12) "113.91000366"
["elevation"]=> string(5) "26 ft" }
["estimated"]=> object(stdClass)#196 (0) { }
["station_id"]=> string(4) "VHHH"
["observation_time"]=> string(41) "Last Updated on November 14, 10:00 PM CST"
["observation_time_rfc822"]=> string(31) "Mon, 14 Nov 2011 22:00:00 +0800"
["observation_epoch"]=> string(10) "1321279200"
["local_time_rfc822"]=> string(31) "Mon, 14 Nov 2011 22:06:36 +0800"
["local_epoch"]=> string(10) "1321279596"
["local_tz_short"]=> string(3) "HKT"
["local_tz_long"]=> string(14) "Asia/Hong_Kong"
["weather"]=> string(13) "Partly Cloudy"
["temperature_string"]=> string(11) "75 F (24 C)"
["temp_f"]=> int(75)
["temp_c"]=> int(24)
["relative_humidity"]=> string(3) "69%"
["wind_string"]=> string(22) "From the ESE at 10 MPH"
["wind_dir"]=> string(3) "ESE"
["wind_degrees"]=> int(120)
["wind_mph"]=> int(10)
["wind_gust_mph"]=> int(0)
["pressure_mb"]=> string(4) "1019"
["pressure_in"]=> string(5) "30.09"
["pressure_trend"]=> string(1) "0"
["dewpoint_string"]=> string(11) "64 F (18 C)"
["dewpoint_f"]=> int(64)
["dewpoint_c"]=> int(18)
["heat_index_string"]=> string(2) "NA"
["heat_index_f"]=> string(2) "NA"
["heat_index_c"]=> string(2) "NA"
["windchill_string"]=> string(2) "NA"
["windchill_f"]=> string(2) "NA"
["windchill_c"]=> string(2) "NA"
["visibility_mi"]=> string(3) "6.2"
["visibility_km"]=> string(4) "10.0"
["precip_1hr_string"]=> string(25) "-9999.00 in (-9999.00 mm)"
["precip_1hr_in"]=> string(8) "-9999.00"
["precip_1hr_metric"]=> string(8) "-9999.00"
["precip_today_string"]=> string(16) "0.00 in (0.0 mm)"
["precip_today_in"]=> string(4) "0.00"
["precip_today_metric"]=> string(3) "0.0"
["icon"]=> string(12) "partlycloudy"
["icon_url"]=> string(50) "http://icons-ak.wxug.com/i/c/k/nt_partlycloudy.gif"
["forecast_url"]=> string(54) "http://www.wunderground.com/global/stations/45007.html"
["history_url"]=> string(77) "http://www.wunderground.com/history/airport/VHHH/2011/11/14/DailyHistory.html"
["ob_url"]=> string(90) "http://www.wunderground.com/cgi-bin/findweather/getForecast?query=22.30999947,113.91000366"
