■botの天気予報の気温とか
botに天気予報機能はつけてるけど、それは今日と明日の天気だけー。 てか、天気予報についてどこかに書いた気もするんだけどわからない(;´∀`) Twitterだったっけ……。第3回 PHPを利用してXMLを処理する方法 phppro.jp/school/mashup/… botに天気予報させたり。
— medamayakiさん (@medamayaki1)
12月 15, 2011
やっと探せた。てことでこの辺とかを参考に作ったけど……。
今日は最高気温とかも扱いたくなったので、それも追加してみることにー。
ただ諸般の事情というかただのなりゆきで、なんとなく最高気温のは別ファイル分離中(;´∀`)
テストするのが追加の所だけやりたかったからかも。特に困らないし直すの面倒だからこのままでいいかな。
後々自分でもわけわからないとかありそうだけど……。
てことで今日の最高気温だけをライブドア天気予報の全部の都市分取ってくるのがこんな。
$yohoid_1 = 1;
do{
$yohoid = $yohoid_1++;
//今日のxml
$xml_today = simplexml_load_file("http://weather.livedoor.com/forecast/webservice/rest/v1?city=" .$yohoid. "&day=today");
//予報
//$today_weather = $xml_today->telop;//
//今日の天気最高気温
$today_kion = $xml_today->temperature->max->celsius;//
//明日のxml
$xml_tomorrow = simplexml_load_file("http://weather.livedoor.com/forecast/webservice/rest/v1?city=" .$yohoid. "&day=tomorrow");//
//$tomorrow_weather = $xml_tomorrow->telop;//
//明日の天気最高気温(使用予定未定)
$tomorrow_kion = $xml_tomorrow->temperature->max->celsius;
//書き込む
$todays_ki = "".$today_kion."";//割と適当
$fp = fopen("★" .$yohoid. ".txt", "w");///パスとか
fwrite($fp, "$todays_ki");//
fclose($fp);
}
while( $yohoid <= 141 ); //都市は142まで。++するから141まで
どこかに天気予報のこととか書いた気もするんだけど……。
てことでこれで142個、数字が書き込まれてるだけのファイルが出来たー。
で、これが中身のphpファイル作って無事動いてOK。
■botの天気予報の気温で分岐とか
あとはいじぼ本体の方に、気温を適当に追加ー。 データは全都市とってきてるけれど、全部扱う必要は全然ないので(天気botじゃないしw) 一部の都市だけにすることに。 こんな。 ・札幌→4・仙台→25
・東京→63
・大阪→81
・福岡→110
・那覇→136 いろいろ抜けてる気はするし特に四国ないけど、東京だけよりは一応全国っぽいだけましって感じかも。 この都市名と都市の数字の一覧とかどこか書いた記憶があるんだけど……。まあいいけど(;´∀`) って、旧説明書においてたのを思い出したー。 ・天気予報対応都市一覧
http://www31.atwiki.jp/medamayaki/pages/39.html ともかくいじぼphpの方。
▼東京の最高気温
if(strpos($text,"{kiontokyo63}") !== FALSE){
$txtfile = file_get_contents("★.txt");
$txtarray = explode("\n",$txtfile);
$wl = $txtarray[array_rand($txtarray)];
$text = str_replace("{kiontokyo63}",$wl,$text);
}
こんな感じで、{kiontokyo63}に取ってきた気温の数字をいれるかんじ。
基本的には人様が公開してくれたものを利用&コピペ使い回しなので、ここではいらないものも入ってるけど(;´∀`)
で、さらに思いついて、最高気温によってbotが話す内容が変わるようにすると、
今まで使ってない機能ではあるので作る気力がupするかなあと思ったので追加。
具体的には、鍾会botから太公望botへの3時くらいの「おやつよろ」会話、
夏になって「アイスよろ」にしたけれど、
これを私が設定を切り換えるんじゃなくて気温によって分岐して切り換えられるといいかなあとか。
ただ使う気温は手間や重さとかの兼ね合いで、東京の最高気温だけを使うことにしたけど……。
if(strpos($text,"{kionnatubi}") !== FALSE){
$txtfile = file_get_contents("★.txt");
$txtarray = explode("\n",$txtfile);
$kion = $txtarray[array_rand($txtarray)];
//温度による分岐
//猛暑日、真夏日とは、一日の最高気温がそれぞれ摂氏35℃以上、30℃以上になる日のことで、真冬日とは一日の最高気温が摂氏0℃未満の日のことをいいます。
//なお、一日の最高気温が摂氏25℃以上になる日は夏日といい、一日の最低気温が摂氏0℃未満になる日を冬日といいます。
if($kion >= 35){
//猛暑日
$text = str_replace("{kionnatubi}","猛暑日",$text);
//文章
$text = str_replace("{kiontext}","この鍾士季が全知全能のアイスとやらをもらってやろう つアイスよろ",$text);
}elseif($kion >= 30 && $kion < 35){
//真夏日
$text = str_replace("{kionnatubi}","真夏日",$text);
//文章
$text = str_replace("{kiontext}","この鍾士季が全知全能のアイスとやらをもらってやろう つアイスよろ",$text);
……
}elseif($kion >= 0 && $kion < 10){
//(雰囲気で)
$text = str_replace("{kionnatubi}","それなりに寒い日",$text);
//文章
$text = str_replace("{kiontext}","この鍾士季が全知全能のチョコレートとやらをもらってやろう つチョコレートよろ",$text);
……
}
}
こんな感じ(・ω・`。)
てことで、今回の追加で増えたもの。
・{kiontokyo63}→東京の最高気温(今日)他・{kionnatubi}→今日の気温(東京の予報)が猛暑日か真夏日か夏日かの区分
・{kiontext}→botの文章(この気温ごと) (´∀`*) でもたぶんbotとしては肝心の(無双キャラbotなので天気予報botじゃないw)はずの台詞部分は、 今までのものの使い回しなだけー(;´∀`) 何か他にも使えそうだったら考えてみよう。 おわり。
(最終更新日:2012/06/01)