Работа с API погоды в php. Получение прогноза погоды на неделю

Введение

Работа с API погоды в php. Получение прогноза погоды на неделюСегодня наткнулся на интересный зарубежный сервис — openweathermap.org. Этот сервис предоставляет всем разработчикам приложений и сайтов бесплатные API для получения разнообразной информации о погоде. Самое интересное, это то что сервис полностью бесплатный и не имеет ни каких ограничений по количеству обращений. База городов огромная, я попробовал несколько маленьких городов из нескольких десятков стран — информация всегда возвращалась, правда не знаю на сколько точная :).

Еще одним из преимуществ этого сервиса, является очень удобная возможность осуществлять поиск города: поиск можно производить по id города, по названию(в названии можно использовать как латиницу так и кириллицу) и по географическим координатам. Самый удобный способ на мой взгляд — это поиск по названию города, именно этот способ я и реализовал в примере.

Работа с API погоды в php. Код

Ниже приведу пример кода для получения погоды в городе Брянск:

// кодировка страницы
header('Content-Type: text/html;charset=UTF-8');

$city = "Bryansk"; // город. Можно и по-русски написать, например: Брянск
$mode = "json"; // в каком виде мы получим данные
$units = "metric"; // Единицы измерения. metric или imperial
$lang = "ru"; // язык
$countDay = 7; // количество дней. Максимум 14 дней

// формируем урл для запроса
$url = "http://api.openweathermap.org/data/2.5/forecast/daily?q=$city&mode=$mode&units=$units&cnt=$countDay&lang=$lang";
// делаем запрос к апи
$data = @file_get_contents($url);
// если получили данные
if($data){
	// декодируем полученные данные
	$dataJson = json_decode($data);
	// получаем только нужные данные
	$arrayDays = $dataJson->list;
	// выводим данные
	foreach($arrayDays as $oneDay){
		echo "Утром: " . $oneDay->temp->morn . "<br/>";	
		echo "Днем: " . $oneDay->temp->day . "<br/>";	
		echo "Вечером: " . $oneDay->temp->eve . "<br/>";	
		echo "Ночью: " . $oneDay->temp->night . "<br/>";	
		echo "Скорость ветра: " . $oneDay->speed . "<br/>";
		echo "Погода: " . $oneDay->weather[0]->description . "<br/>";
		echo "Давление: " . $oneDay->pressure . "<br/>";
		echo "Влажность: " . $oneDay->humidity . "<br/>";
		echo "<hr/>";
	}
}else{
	echo "Сервер не доступен!";
}

Обновление за 06.03.2018
Привет, спустя 4 года :) Сегодня наткнулся на эту старую статью и оказалась, что спустя время она уже не совсем полная. Оказывается, что с 9 октября 2015 года, сервис, который предоставляет апи для получения погоды, ввел изменения в свою работу. Все осталось, как и прежде, только теперь добавился еще один обязательный параметр — appid. Это ключ, который можно бесплатно получить в сервисе. Для его получения необходимо зарегистрироваться на сайте и отправить заявку на активацию. Подробнее можно почитать на сайте: сайт.
Когда получите ключ appid, код скрипта нужно будет немного подправить, а именно одну строку, где происходит запрос. К ссылке добавится один параметр &appid=ВАШ_КЛЮЧ, вот так:

// формируем урл для запроса
$url = "http://api.openweathermap.org/data/2.5/forecast/daily?q=$city&mode=$mode&units=$units&cnt=$countDay&lang=$lang&appid=ВАШ_КЛЮЧ";

Обновление за 04.12.2018
Немного изменился адрес запроса и параметры, которые нужно передавать:

$city = "Bryansk"; // город. Можно и по-русски написать, например: Брянск
$country = "RU"; // страна
$mode = "json"; // в каком виде мы получим данные json или xml
$units = "metric"; // Единицы измерения. metric или imperial
$lang = "ru"; // язык
$countDay = 7; // количество дней. Максимум 14 дней
$appID = "ВАШ КЛЮЧ"; // Ваш APPID
 
// формируем урл для запроса
$url = "http://api.openweathermap.org/data/2.5/forecast?q=$city,$country&cnt=$countDay&lang=$lang&units=$units&appid=$appID";

Рассказать друзьям:


Оценить:
(7 оценок, среднее: 4,71 из 5)

Работа с API погоды в php. Получение прогноза погоды на неделю: 5 комментариев

  1. Огромное спасибо за рабочее решение!
    Разве что у них стал обязателен параметр appid

  2. почему не дописали подробнее
    как запускать скрипт, где искать результат, как попадет в телегу результат

Добавить комментарий для flex0r Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

code