twitterで湘南の波情報つぶやくbotを作った

以下に紹介している内容は、twitterのapiにbasic認証でアクセスする旧方式ですので、現在では使えません。

湘南の今日の波からコメントを取り出して、朝と夕方に1回づつ、つぶやきます。

shonan1173bot

湘南の今日の波で、波情報をチェックしている方、よろしければフォローを。

▼作り方

湘南の今日の波は、RSSフィードがないけれど、livedoorのベータ版サービス,page2feedを使うとテキストページをフィード化できる。
それをphpで取得してコメント部分だけきれいにとりだして、twitterにpostするだけ。

//livedoorのpage2feedで生成されたfeed取得
$rssurl = "http://ic.edge.jp/page2feed/http://www.1173.co.jp/";

//xmlデータをパース
$rssdata = simplexml_load_file($rssurl);

//抜き出したいコメント以外の単語や改行、スペースを削除して文章整形
$bd = strip_tags($rssdata->channel->item[0]->description);
$bd = str_replace( "湘南の今日の波", "", $bd );
$bd = str_replace( "\n", "", $bd );
$bd = str_replace( "更新", "", $bd );
$bd = str_replace( " ", "", $bd );
$bd = str_replace( " ", "", $bd );
$repl = stristr($bd,'2010年ビーチにいた女の子');
$bd = str_replace( $repl, "", $bd );

//あなたのtwitterIDとパスワード
$id = "yourID";
$pass = "yourPassword";

//twitterへ投稿
$toukou = tweet($bd, $id, $pass);

//twitterへ投稿するための関数
function tweet($message, $username, $password){
$context = stream_context_create(array(
'http' => array(
'method' => 'POST',
'header' => sprintf("Authorization: Basic %s\r\n", base64_encode($username.':'.$password)).
"Content-type: application/x-www-form-urlencoded\r\n",
'content' => http_build_query(array('status' => $message)),
'timeout' => 10,
),
));
$ret = file_get_contents('http://twitter.com/statuses/update.xml', false, $context);

return false !== $ret;
}

上記を適当なphpファイルで保存して、1日2回の投稿はさくらインターネットのcronを使う。
サイトの更新があった時間にタイムリーに投稿するようにしたいが
更新がされたかどうかのチェックがまだ作れないので、とりあえず
朝8時と夕方5時の時間指定で動かしている。

▼参考サイト(コードほとんどコピペさせてもらってます)
phpでtwitterに投稿
http://www.hosimitu.com/2009/08/2923-1332.php
cronについて
http://keijisaito.info/arc/cron/cron_use.htm#cronuse

(追記2010/9/6)
ただいま、上述の波情報BOT動いてません。修正済み
理由は、上記のtwitterに投稿するためのapiは、つい先日廃止となったbasic認証を使っています。
廃止寸前のタイミングで使ってました。
後日修正します。

(追記2010/9/18)
OAuth認証の方法に修正して、動くようになった。
以下の情報を参考にさせてもらいました。
http://www.sdn-project.net/labo/oauth.html

スポンサーリンク

シェアする

フォローして更新を受け取る

スポンサーリンク