2013/03/10

Livedoorの天気予報のAPIを使ってTwitterボットを作成してみる

今回は、Livedoor の Weather Hacks APIを使って、出かける時に傘を持っていった方がいいのかを知らせてくれる Twitterの簡単なボットを作ってみます。

基本仕様

天気予報は、Livedoor Weather Hacks APIから取得し、当日の天気が雨っぽかったら「傘を持っていきなさい」というつぶやきを投稿します。Wether Hacksの基本仕様については、「Livedoor の天気予報API(JSON版)を使ってブログパーツを作ってみる」を見てください。

TwitterのAPIを使うには、コンシューマキーなどの取得が必要です。また、今回はボットとして使うので、Access Tokenも必要です。まだ取得していない場合は、「TwitterのAPIを使用するために必要なキーを取得する手順」を参考に取得してください。

PHPサンプル

PHPからTwitter APIを使うライブラリ、twitteroauth を使います。地域は東京に固定しています。Weather HacksのAPIでは、降水確率が取得できないので、テロップ(雨のち晴れなど)に「雨」という文字が含まれていれば、ツイートするようにしています。

<?php
require_once(dirname(__FILE__)."/TwitterOAuth/twitteroauth.php");

define('TWITTER_CONSUMER_KEY', '...');
define('TWITTER_CONSUMER_SECRET', '...');
define('TWITTER_ACCESS_TOKEN', '...');
define('TWITTER_ACCESS_TOKEN_SECRET', '...');

function post_status($post_body) 
{
 $to = new TwitterOAuth(
  TWITTER_CONSUMER_KEY,
  TWITTER_CONSUMER_SECRET,
  TWITTER_ACCESS_TOKEN,
  TWITTER_ACCESS_TOKEN_SECRET
  );

 $req = $to->OAuthRequest(
  "http://api.twitter.com/1.1/statuses/update.json",
  "POST",
  array("status"=>$post_body)
 );
}

function get_weather_on($city)
{
 return json_deocde(file_get_contents(
  'http://weather.livedoor.com/forecast/webservice/json/v1?city='.$city));
}

$weather = get_weather_on(130010);
if (strops($weather->forecasts[0]->telop, '雨') !== false) {
 post_status('【東京都】傘が必要です'); 
}

exit(0);

ボット化

このPHPスクリプトをcronに登録して、毎日8時につぶやくようにすれば、ボットの完成です。
crontab -e
0 8 * * * /usr/bin/php /home/webmaster/tweetbot.php

まとめ

うーん..ひどいなぁー。降水確率とか取得できれば、もっとまともになるんですけどねー。サンプルということで許してください w。ちなみに、Livedoor Weather Hacksは、商用で使えません。「Webサイト制作やアプリ開発で使える天気予報APIのまとめ」という記事にもまとめてありますので、参考にしてみてください。

0 件のコメント:

コメントを投稿