Weather::Com

| Нет комментариев

Модуль Weather::Com — это интерфейс к API сайта weather.com.

Для пользования данными вначале необходимо получить партнерский номер и лицензионный ключ. Это открывает бесплатный доступ к API.

use v5.10;
use strict;
use Weather::Com::Finder;

my $finder = new Weather::Com::Finder({
    partner_id => '1234567890',
    license => 'abcdefghijklmn',
    language => 'en',
});

Работа происходит в два этапа.

1. Получение списка мест

my @locations = $finder->find('Moscow, Russia');

В зависимости от точности запроса в массиве @locations окажется разное число элементов. С показанным запросом Moscow, Russia находится только одна точка (очевидно, какая), а для запроса Moscow метод find возвращает аж десять вариантов:

'Moscow, KS',
'Moscow, OH',
'Moscow, PA',
'Moscow, IA',
'Moscow, TX',
'Moscow, ID',
'Moscow, AR',
'Moscow, MI',
'Moscow, TN',
'Moscow, Russia'

2. Запрос метеоданных

На втором шаге делается собственно запрос погоды для нужного места из списка найденных (через API наверняка возможно непосредственно указать код места, однако запросы автоматически кешируются и сохраняются в файле locations.dat, который появляется на диске после первого вызова find).

say $_->current_conditions->description for @locations;

Метод description, показанный в примере к модулю, возвращает текстовую строку, например, mostly cloudy, а остальные детали возможно узнать, обращаясь к методам объектов классов Weather::Com::Location и Weather::Com::Forecast.

Фрагмент данных, которые возвращает вызов current_conditions, выглядит так:

 'WEATHER' => {
 'head' => {
    'ur' => 'mm',
    'ud' => 'km',
    'form' => 'MEDIUM',
    'locale' => 'en_US',
    'up' => 'mb',
    'ut' => 'C',
    'us' => 'km/h',
    'cached' => 1260478192
  },
 'cc' => {
    'flik' => '-11',
    'icon' => '26',
    'lsup' => '12/10/09 11:30 PM Local Time',
    'obst' => 'Moscow, RUSSIA',
    'tmp' => '-5',
    'wind' => {
       'gust' => 'N/A',
       'd' => '100',
       's' => '18',
       't' => 'E'
     },
    'hmid' => '83',
    'bar' => {
      'r' => '1030.1',
      'd' => 'rising'
    },
    'moon' => {
       'icon' => '24',
       't' => 'Waning Crescent'
     },
    'dewp' => '-7',
    'vis' => '10.0',
    'uv' => {
     'i' => '0',
     't' => 'Low'
   },
    't' => 'Cloudy',
    'cached' => 1260478192
  },
 'loc' => {
     'suns' => '3:57 PM',
     'lat' => '55.75',
     'zone' => '3',
     'tm' => '11:49 PM',
     'sunr' => '8:48 AM',
     'dnam' => 'Moscow, Russia',
     'lon' => '37.62',
     'id' => 'RSXX0063',
     'cached' => 1260478192
   },
 'ver' => '2.0'
 }

В числе прочего здесь содержится и информация о фазе Луны.

К сожалению, лицензионное соглашение weather.com запрещает использовать любые полученные данные (в том числе список мест) на мобильных устройствах.

Комментировать

Страницы

  • img

Об этой записи

Сообщение опубликовано 10.12.2009 23:53. Автор — ash.

Предыдущая запись — Weather::Google

Следующая запись — Разбор формата метеоданных METAR модулями CPAN

Смотрите новые записи на главной странице или загляните в архив, где есть ссылки на все сообщения.