また長らく間があがってしまいましたが、外国為替のレートをつぶやくtwitter_botを作って見たのでご紹介します。
followは下記より。
follow by @currency_rater
wordpressのプラグインのCurrencyTickerを解析して得たAPIのURLをcurlでたたきに行って
結果をtwitterのAPIを介してつぶやきます。為替APIの都合上15分間隔更新にしています。
※一分おきに取得しに行くとアクセス拒否されるのでもしCRONなど動かす場合は最低でも15分間隔にしてください。
以下コードです。
#!/usr/bin/php
<?php
$url = "http://www.webservicex.net/CurrencyConvertor.asmx/ConversionRate?FromCurrency=%s&ToCurrency=%s";
$fromCode = array("USD", "EUR", "CNY", "KRW", "TWD");
$toCode = "JPY";
$running=null;
$ch = array();
$chUrl = array();
$chBody = array();
$mh = curl_multi_init();
$push = array();
foreach($fromCode as $code) {
$chUrl[$code] = sprintf($url, $code, $toCode);
$ch[$code] = curl_init(trim($chUrl[$code]));
curl_setopt($ch[$code], CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch[$code], CURLOPT_HTTPGET, TRUE);
curl_setopt($ch[$code], CURLOPT_TIMEOUT, 10);
curl_multi_add_handle($mh,$ch[$code]);
}
do {
curl_multi_exec($mh,$running);
} while ($running > 0);
foreach($fromCode as $code) {
$chBody[$code] = trim(strip_tags(curl_multi_getcontent($ch[$code])));
curl_multi_remove_handle($mh,$ch[$code]);
curl_close($ch[$code]);
}
curl_multi_close($mh);
foreach($chBody as $key => $val) {
$code = $key;
$rate = strlen($val) < 1 ? "" : (float)($val);
if($rate == "") {
$push[$key] = "-";
continue;
}
switch($code) {
case "KRW" :
$push[$key] = round($rate, 4);
break;
default :
$push[$key] = round($rate,2);
break;
}
}
$data = "";
$update_time = date("Y-m-d H:i:s");
foreach($push as $key => $val) {
$data .= "JPY > ". $key ." : ". $val . " ";
}
$data .= " generate_time => " . $update_time;
$url = "http://twitter.com/statuses/update.xml?";
$username = "username";
$password = "password";
$params = "status=". rawurlencode($data." #followmeJP");
$result = file_get_contents($url.$params , false, stream_context_create(array(
"http" => array(
"method" => "POST",
"header" => "Authorization: Basic ". base64_encode($username. ":". $password)
)
)));
自分用に作成した場合は、$data = "";以下を修正してください。