Наверно, каждый вебмастер хоть раз в жизни спрашивал: “Как показать погоду на моем сайте?”;. Раньше для этого использовали довольно уродливый гаджет канала погоды. Он отвратительно выглядел и его нельзя было менять. Некоторые использовали iframe для того чтобы подгружать внешние данные и отображать их на сайте. Наконец, всегда можно было поставить ссылку “посмотреть погоду”;. Итак, есть задача — получить данные о погоде из внешнего источника и настроить ее внешний вид. К счастью, теперь есть великолепный инструмент для этого. Google Weather API — легок в использовании и настройке.

Для начала получим адрес в браузере:

http://www.google.com/ig/api?weather=челябинск

Как понятно из него — погоду мы смотрим в Челябинск. Теперь взглянем на xml:

<xml_api_reply version="1">
  <weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" 
row="0" section="0">
    <forecast_information>
      <city data="Chelyabinsk, Province of Chelyabinsk"/>
      <postal_code data="челябинск"/>
      <latitude_e6 data=""/>
      <longitude_e6 data=""/>
      <forecast_date data="2010-02-10"/>
      <current_date_time data="2010-02-10 08:00:00 +0000"/>
      <unit_system data="US"/>
    </forecast_information>
    <current_conditions>
      <condition data="Cloudy"/>
      <temp_f data="-13"/>
      <temp_c data="-25"/>
      <humidity data="Humidity: 73%"/>
      <icon data="/ig/images/weather/cloudy.gif"/>
      <wind_condition data="Wind: SE at 4 mph"/>
    </current_conditions>
    <forecast_conditions>
      <day_of_week data="Wed"/>
      <low data="-17"/>
      <high data="2"/>
      <icon data="/ig/images/weather/mostly_sunny.gif"/>
      <condition data="Mostly Sunny"/>
    </forecast_conditions>
    <forecast_conditions>
      <day_of_week data="Thu"/>
      <low data="-1"/>
      <high data="12"/>
      <icon data="/ig/images/weather/cloudy.gif"/>
      <condition data="Cloudy"/>
    </forecast_conditions>
    <forecast_conditions>
      <day_of_week data="Fri"/>
      <low data="5"/>
      <high data="18"/>
      <icon data="/ig/images/weather/mostly_sunny.gif"/>
      <condition data="Partly Sunny"/>
    </forecast_conditions>
    <forecast_conditions>
      <day_of_week data="Sat"/>
      <low data="6"/>
      <high data="27"/>
      <icon data="/ig/images/weather/mostly_sunny.gif"/>
      <condition data="Partly Sunny"/>
    </forecast_conditions>
  </weather>
</xml_api_reply>

Поразительно, как все легко. Достаточно выбрать место и нажать Enter. И у нас уже есть данные о погоде в формате XML. Нет рекламы, а представить данные мы можем в любом удобном нам виде. Обратите внимание: я ограничил вывод одним днем. Итак, что дальше? Ну, например, использовать PHP для вывода данных. Взглянем на исходный код:

<?php
function getWeather() {
  $requestAddress = "http://www.google.com/ig/api?weather=челябинск&hl=ru";
  // скачиваем данные о погоде
  $xml_str = file_get_contents($requestAddress,0);
  // парсим XML
  $xml = new SimplexmlElement($xml_str);
  // обрабатываем XML
  $count = 0;
  echo '<div id="weather">';
  foreach($xml->weather as $item) {
    foreach($item->forecast_conditions as $new) {
      echo '<div class="weatherIcon">';
      echo '<img src="http://www.google.com/' .$new->icon['data'] . '"/><br/>';
      echo $new->day_of_week['data'];
      echo '</div>';
    }
  }
  echo '</div>';
}
getWeather();
?>

Weather API быстро работает, прост и легко настраивается. Всё до безобразия просто, но может кому поможет данный пост. А какие вы Web API используете?

Комментарии

comments powered by Disqus