タケルンバさんの言ってたTwitterBOT

  • 2008/11/29
  • このエントリーをはてなブックマークに追加

スポンサーリンク

タケルンバ

最近読み始めたタケルンバ氏がbotを作りたいとつぶやいていた記事を見て、おー、おー、この方もギークになるんだーと思ってみていたんだけど気がついたら作っちゃった。(なぜか間違われるのですが、私はギークでもなければSEでもありません。ネタ屋です。)
IT/Web業界に強い転職サイトGreen

暇だったので


暇だっただけという事もあるんですが・・・。

ただ、衝動的に作ったものなので、RSSの解析にPEARを使っちゃいました。
magpierss/rss_fetch.inc
magpierss/rss_utils.inc

また、ランダムに画像を抽出しますが、全く同じ写真が縦列してしまう可能性もある貧相なものです。

あと動作テスト環境はPHP4.3以上で5以下です。

これをアップしてこのページにアクセスすれば、Twitterに自動投稿されます。
RSSはタケルンバさんが言っていた
http://f.hatena.ne.jp/takerunba/food/
のページのものが入ってますのでご注意を。

ツイッター吐き

ただアクセスするときは、q= で認証つけます。

このファイル.php?q=531975

って感じで、死ぬほど簡略的な認証が付いてます。
この辺については誰かが叩いてくれるかもしれない。

そのURLも含めて、Cron-job.org使えば定期更新も万事解決。

投稿処理はここを流用で。

ただタケルンバさんこれから何の言語選ぶのかという段階でサーバーもこれからっぽいので、こんなの作った意味全然ないわけで、世間一般で言われているただの自己満足です。


ソース


<?php
header("Content-Type:text/html;charset=UTF-8");
//▼死ぬほど簡易的な認証--------------------------
if($_GET['q']==""){
print "NG";
exit;
}else{
foreach($_GET as $k => $v) {
if(get_magic_quotes_gpc()) {
$v=stripslashes($v);
}
$v=htmlspecialchars($v);
$array[$k]=$v;
}
extract($array);
}
//$qが数字のみである事を確認
if(!is_numeric($q)){
print "NG";
exit;
}
//$qがちゃんと送られてきてる事をチェック
if($q=="531975"){}else{
print "NG";
exit;
}
//▲死ぬほど簡易的な認証--------------------------

require_once("magpierss/rss_fetch.inc");
require_once("magpierss/rss_utils.inc");
// キャッシュは5分に設定
define("MAGPIE_CACHE_AGE", 60*15);

// キャッシュ保存ディレクトリ指定
define("MAGPIE_CACHE_DIR", "./cache/");

// 取得するエンコーディングの設定
define("MAGPIE_OUTPUT_ENCODING","UTF-8");

// 取得するRSSのURLリスト
$urls = array(
"http://f.hatena.ne.jp/takerunba/food/rss",
);
// RSSのアイテムリストを取得
$items = getRssList($urls);
$cid=0;


foreach ($items as $item) {

$cid=$cid+1;
$href = mb_convert_encoding($item['link'],"UTF-8","auto");
$title = mb_convert_encoding($item['title'],"UTF-8","auto");
$description = mb_convert_encoding($item['description'],"UTF-8","auto");
$date = parse_w3cdtf($item[dc][date]);
$date = date("(Y/m/d)",$date);
if($cid<=50){
$title2=urlencode($title);
$hrefq[$cid]=$href;
$titleq[$cid]=$title;

}
}
//ランダムでURL出力GO
$random = rand(1,50);
//ランダムでコメント出力GO
$coments = round(rand(0,5));//ここで数字調整すればいくらでもランダムコメント増やせる

switch($coments){
case 0:
$cm= "生で食いてー";break;
case 1:
$cm= "焼いて食いてー";break;
case 2:
$cm= "煮て食いてー";break;
case 3:
$cm= "焦がして食いてー";break;
case 4:
$cm= "蒸して食いてー";break;
case 5:
$cm= "むしろ食われてー";break;
}

//出来上がったソースをとんかつに
if($cid==""){
<p>print "RSS内にエラーが見つかりました</p>";
}else{

//以下は http://d.hatena.ne.jp/hirataka522/20080126/1201300282 で
$url = "http://twitter.com/statuses/update.xml?";
$username = "ついったーのID";
$password = "ついったーのパスワード";
$params = "status=". rawurlencode($cm." ".$hrefq[$random]);

$fps = fopen($url.$params, 'r', false, stream_context_create(array(
"http" => array(
"method" => "POST",
"header" => "Authorization: Basic ". base64_encode($username. ":". $password)
)
)));

$result = "";

while(!feof($fps)){
$result .= fgets($fps);
}

fclose($fps);

}
//とんかつ処理ここまで


//複数サイトのRSS取るときに使う
function getRssList($urls)
{
$rssitems = array();
foreach ($urls as $url) {
$obj = fetch_rss($url);
$rssitems = array_merge($rssitems, $obj->items);
}
return $rssitems;
}
?>

流れとしては
RSS解析

それをランダムで抽出

それにランダムで決定した1行コメントつける

それをTwitterに投稿

こんな感じですね。
たぶん、おんなじことするにしても色々方法あるし、レアなコメントを表示するという機能も省いてるので、もっと頭のいいBOTとか見てみたいですね。

それでは、また。



スポンサーリンク

トップへ戻る

Twitter版のネタ帳では毎週月曜~金曜までWeb屋さんに役立つ色んな情報や単なるネタまでをつぶやいています。

関連するエントリー

コメント

この記事にコメントする人はクリック

コメントポリシーをお読みください
管理者にだけ表示を許可する

トラックバック

この記事にトラックバックする人はクリック

[Ruby][Web]Sixamoを使ってTwitterボットを作ってみた

タケルンバさんの言ってたTwitterBOT*ホームページを作る人のネタ帳 を読んで、Rubyの練習も兼ねてTwitterのボットを作ってみた。 元ネタ(botを作りたい - タケルンバ卿日記)はこちらのようです。 で、Rubyでごちゃごちゃと作ってみたんだけれども、会話関係の処理が面倒

四角三乗:2008-12-05 23:22

FC2Ad

広告


IT・Web業界の求人なら転職サイトgreen(グリーン) ホームページテンプレート、WordPressテーマ、Facebookページテンプレートならクラウドテンプレート ネットマーケティングとは│ネットマーケティング検定 SEOコンサルティング&SEO対策 無料レスポンシブWebデザインテンプレート 広告主募集

あわせて読みたい
フィードメーター - ホームページを作る人のネタ帳

人気の記事一覧

あなたのブログの再訪問者を増やす50の方法

私の経験から感じた事を書き記します。全てが全てその時々で、正しいとは限りませんが、一つの指針としてお使いください。因みに全部リスト化すると230くらいありましたが、それはきっとセミナーとかでやるかなぁと。

http://e0166.blog89.fc2.com/blog-entry-824.html

あなたの生活を確実に拘束し時間を浪費させる動画50

今回は生産性を向上させる事ばかり考えて記事を書いてきたので、逆に年末にかけて忙しい皆さんの時間を出来るだけ拘束し、忙しさを倍増させるものが無いかを考えました。その結果、動画で行こうと言う事になったのが1ヶ月以上前。動画閲覧本数はおそらく600本以上。その中から、おもしろそうなものを50個ベストチョイスいたしました。

http://e0166.blog89.fc2.com/blog-entry-820.html

webデザインのセンスを磨く○○系のwebデザインまとめ

webデザインを学ぶならwebデザインから。と言うわけで、今回は海外のエントリを中心に、○○系のまとめをまとめます。

http://e0166.blog89.fc2.com/blog-entry-817.html

jQueryプラグインのベストトレンド総まとめ2010

もはやこの業界ではかなり浸透しつつあるjQuery。今回はそんなjQueryにスポットを当て、本年度紹介された中でも、ホットなトレンドプラグインをご紹介します。

http://e0166.blog89.fc2.com/blog-entry-816.html

ツイッターの日常における35の行動パターン

私が良く見かける35の行動パターンに名前をつけてみようと思う。年末の誰も見てない時に公開しようと思っていた、ただのネタだったのですが、結構時間がかかりこの時期に・・・。

http://e0166.blog89.fc2.com/blog-entry-823.html

ウェブデザイナーのためのウェブアプリ15

OSがWindowsであろうと、ubuntuであろうと、共通のサービスを受けることができるのがウェブアプリケーションです。ウェブデザイナーの中には、自宅ですでにubuntuを利用している人も多い。また、Mac、Windowsと、各自それぞれの使いやすい物を利用していると思います。

http://e0166.blog89.fc2.com/blog-entry-784.html

愛用するGoogleChromeエクステンション12個

この2年でノートPC2台購入。自他のPCはクラッシュしてリカバリー。会社のPCは新しいのがあたり、再セットアップ。そんなこんなで、会社はまぁともかくとして、とりあえず全PCが比較的3ヶ月に一度リカバリーしてもいいように、自分用にメモとして残しておきます。

http://e0166.blog89.fc2.com/blog-entry-784.html

文章や会話のプレゼンテーションを向上させる方法

文章力がないためにプレゼンに失敗した、会話がうまくできずにプレゼンに失敗した。こういう経験はなかなか無い。なぜなら多くの場合、失敗したことに気がつかないからです。

http://e0166.blog89.fc2.com/blog-entry-802.html

サイトの裏側の意識を変え売り上げをアップする方法

ネットショップ運営者が、あることをちょっとだけ始めてみただけでわずか5ヶ月で売り上げが3倍になりました。はたして、webサイト運営がどのように変わったのでしょうか。。

http://e0166.blog89.fc2.com/blog-entry-749.html

webサイトのリピーターを増やすさりげない5つのコツ

多くのビジネスサイトのアクセス数を支えている大手検索サイト、Yahoo、Googleのアルゴリズムが変わる事で、突然商売がひっくり返る事態を回避する方法。

http://e0166.blog89.fc2.com/blog-entry-746.html