PHP 60行で作るTwitterへRSSを投稿するbot
PHP 80行で作るTwitterへRSSを投稿するbotの以下の改良版です。
- OAuth投稿対応
- bit.lyを使ったURLの短縮化
それと、ちょっと、コードが短くなっただけです。
OAuthの登録についてはオリジナルtwitter投稿ツールの作成のOAuthによる投稿までを参考にしてください。
bit.lyのAPIについてはbit.lyのAPIを参考にしてください。
<?php define('API_KEY_BIT_LY' , '**************************'); // bitlyのAPIキー define('API_LOGIN_BIT_LY' , '**************************'); // bitlyのログインアカウント名 define('CHECK_RSS_COUNT', 5); // 投稿するRSSのチェックする数 require("twitteroauth.php"); // OAuthライブラリ // Consumer keyの値 $consumer_key = "**************************"; // Consumer secretの値 $consumer_secret = "**************************"; // Access Tokenの値 $access_token = "**************************"; // Access Token Secretの値 $access_token_secret = "**************************"; // OAuthオブジェクト生成 $to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret); $status = $to->OAuthRequest("http://api.twitter.com/1/statuses/user_timeline.xml","GET",array("count"=>30)); $status = simplexml_load_string($status); $url = '**************************'; // 投稿するRSS $rss = file_get_contents($url); $oXML = simplexml_load_string($rss); $oItems = $oXML->channel->item; $i = 0; foreach ($oItems as $Item) { if ($i >= CHECK_RSS_COUNT) { break 1; } if ( !PostCheck($status,$Item->title) ){ $xml = bitLyShorten($Item->link); $sLink = $xml->results->nodeKeyVal->shortUrl; $text = $Item->title . " " . $sLink; // ツイート文言 $res = $to->OAuthRequest("http://api.twitter.com/1/statuses/update.xml","POST",array("status"=>$text)); } $i++; } // twitterAPIの返りオブジェクト,RSSオブジェクトのタイトル function PostCheck($status,$sHead){ $sHead = (string) $sHead; foreach($status as $oItem){ $sTitle = (string) $oItem->text; if(mb_strstr($sTitle,$sHead)){ return 1; // 投稿済み } } return 0; // 未投稿 } // ショートURL化 function bitLyShorten($link){ $link = urlencode($link); $url = 'http://api.bit.ly/shorten?version=2.0.1&longUrl=' . $link . '&login=' . API_LOGIN_BIT_LY . '&apiKey='. API_KEY_BIT_LY .'&format=xml'; $src = file_get_contents($url); return simplexml_load_string($src); } ?>