LoginSignup
8
10

More than 5 years have passed since last update.

1週間分の天気予報をコンソールに表示するPHPスクリプト

Last updated at Posted at 2014-12-27

php-tenki

コンソールから使います。1週間分の天気予報を表示します。
天気予報のデータは OpenWeatherMap から入手します。

インストール方法

$ git clone https://github.com/takatama/php-tenki
$ cd php-tenki
$ curl -sS https://getcomposer.org/installer | php
$ php composer.phar update

使い方

$ php tenki.php <場所,国>

例: 千葉県柏市のお天気

$ php tenki.php kashiwa,jp
Kashiwa, JP (lat:35.854439, lon:139.968887)
2014/12/27 Clear max:7.9 min:-0.4
2014/12/28 Clouds max:7.9 min:-1.8
2014/12/29 Rain max:5.2 min:-0.4
2014/12/30 Clear max:11.3 min:0.2
2014/12/31 Rain max:8.7 min:-0.5
2015/01/01 Rain max:10.1 min:-2.1
2015/01/02 Clear max:7.9 min:0.2

使った技術

OpenWeatherMap API

一日単位の天気予報データ(Daily Forecast Data)を使います。

例)千葉県柏市のデータ
http://api.openweathermap.org/data/2.5/forecast/daily?q=kashiwa,JP

データの説明はこちらです。日本に合わせるために工夫が必要です。

  • 時刻はGMT。JPNに変換するため 9時間進める。
  • 温度は華氏。摂氏に変換するため 273.15 引く。
  • 小数点1桁だけでいいので、round 関数で四捨五入する。

ついでに、
* コンソールの表示をカラフルにするため、kevinlebrun/colors.php を使う。

tenki.php
function show_forecast($time_gmt, $weather, $temp_max_K, $temp_min_K) {
    $time_jpn = $time_gmt + 9 * 60 * 60;
    $temp_max_C = round($temp_max_K - 273.15, 1); //小数点第一位まで表示
    $temp_min_C = round($temp_min_K - 273.15, 1);
    $c = new Color();
    echo gmdate('Y/m/d', $time_jpn) . ' ' . $c($weather)->bold . ' max:' . $c($temp_max_C)->red . ' min:' . $c($temp_min_C)->blue . PHP_EOL;
}

Guzzle で REST API を利用する

最近はcURLよりGuzzleみたいです。JSONならこれだけで大丈夫。

tenki.php
require 'vendor/autoload.php';

use GuzzleHttp\Client;

$url = 'http://api.openweathermap.org/data/2.5/forecast/daily?q=' . $city_and_country;
$client = new Client();
$json = $client->get($url)->json();

参考にした情報

8
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
10