Twitterのジョセフbotに返信機能が付きました

Twitterのジョセフbotにreply機能を付けてみました。
twitter上で@joseph_jobsonで話しかけると、ランダムで何か返信します。
例によってソースコードを公開しているので、ご自由にお使いください。

Twitter Reply ver.1.0

<?
/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Twitter Reply ver.1.0

https://palemag.kazeki.net/blog/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */

$username = "アカウント";
$password = "パスワード";
$logfile = "reply.txt";
$tmpfile = "tmp.txt";

$tmp = file($tmpfile);
if(count($tmp)>0){
$since_id = "since_id=".$tmp[0];
}
$mentions = "http://".$username.":".$password."@twitter.com/statuses/mentions.xml?".$since_id;

$xml = simplexml_load_file($mentions);
if($tmp[0] < $xml->status[0]->id){

$lines = file($logfile);
srand(time());
shuffle($lines);

$update = "http://twitter.com/statuses/update.xml?";

for ($i=0; $i<count($xml); $i++) {
$id = $xml->status[$i]->id;
$screen_name = "@".$xml->status[$i]->user->screen_name;
$name = $xml->status[$i]->user->name;
$text = $xml->status[$i]->text;

if(preg_match("/おやす|お休/u",$text)){
$content = "………zzz";
}
elseif(preg_match("/おはよ|お早/u", $text)){
$content = "状況は?";
}
elseif(preg_match("/林檎|リンゴ|りんご/u", $text)){
$content = "ありがとう。$name";
}
else{
$content = $lines[0];
}

$message = $screen_name." ".$content;
$params = "status=". rawurlencode($message)."&in_reply_to_status_id=".$id;
$result = file_get_contents($update.$params , false, stream_context_create(array(
	"http" => array(
		"method" => "POST",
		"header" => "Authorization: Basic ". base64_encode($username. ":". $password)
	)
)));
}

$fp = fopen($tmpfile, "w");
fputs($fp, $xml->status[0]->id);
fclose($fp);
}
?>

特徴

  • 前回の実行時のbot宛のreplyの記録を残し、新着replyがあった時にはそれ以降のreplyに対してのみ返信します。プログラム実行時にbot宛のreplyが無い時には処理をスキップするので安心。
  • in_reply_status_idを指定する事により、返信先のpostに対して「○○宛」というリンクが貼られる為、元発言が参照しやすくなっております。
  • pear等のライブラリの類は一切未使用で分かりやすくなっております。
    いや自分がpearのインストールが上手く行かなくて躓いたので、そういうの使ってないスクリプトが欲しかっただけです。
  • PHP5専用です。PHP4以下の環境では作動しません。

使い方

  1. zipファイルを解凍。twitter_reply.php、reply.txt、tmp.txtの3つのファイルが出てくる。
  2. twitter_reply.phpのユーザー名とパスワードを変更し、reply.txtに返信させたい内容を一行ずつ記入する。
    返信内容の本文中に$nameと入れると、投稿時にその部分が相手の名前に置き換わる。

  3. アップロードしたら以下のファイルのパーミッションを変更する。
    twitter_reply.php …755
    tmp.txt …666
  4. あとは前の記事と同じようにcronを設定する。

また、今回はreplyに特定の語句が含まれていると専用の台詞を返す機能を試験的に実装しています。
真ん中のあたりにこんな感じのソースがあるので、適宜変更して使ってください。

if(preg_match("/おやす|お休/u",$text)){
$content = "………zzz";
}
elseif(preg_match("/おはよ|お早/u", $text)){
$content = "状況は?";
}
elseif(preg_match("/林檎|リンゴ|りんご/u", $text)){
$content = "ありがとう。$name";
}
else{
$content = $lines[0];
}

1行目〜3行目、4行目〜6行目、7行目〜9行目でそれぞれ一セットになっています。最初の一塊の場合はbot宛のreplyの中に「おやす」「お休」という文字が含まれていた場合、「……zzz」というreplyを返します。
パターンを増やしたい場合は4行目〜6行目のelseifから}までをコピーして次の行に貼り付けてください。
当該機能を使わない場合は上記の部分のコードを削除し、代わりに以下の一行を入れてください。

$content = $lines[0];

ちなみにcron経由で動かした時に上手く行かなかった原因としては、コマンドが宜しくなかった模様。前の記事に書いたコマンドでも動く事は動きますが、あれだけではサーバーのデフォルトであるPHP4として実行してしまっていた模様。その結果としてPHP5から実装された関数であるsimplexml_load_fileが上手く作動せず、エラーを起こしてしまっていたらしいです。
エラー出さないようにPHP5として動かすには、php -f の代わりに以下のコマンドを使うといいようです。


cd /var/www/home/users/public_html/twitter_bot; /usr/local/php5/bin/php twitter_reply.php

cdはUNIXコマンドでディレクトリを指定するという意味で、その次の青文字が異動先であるスクリプトの入ったディレクトリの絶対パス、その次の赤文字がphp5のパス、そして最後の緑文字が動かしたいスクリプトになる。色の違う文字の間には半角スペースを入れること。
赤文字と青文字の部分はサーバーによって設定が違うので、そこらへんは使う環境に合わせて調べていただきたい。

Twitterでジョセフbotはじめました

Twitterの方でジョセフbotというものを作ってみました。
一定時間ごと(現在では3時間に1回)に作中の台詞をpostするだけのプログラムです。
ちなみに現段階では未完成で、話しかけられてもreplyを返すことができず、台詞も一部しか搭載できてません(現段階では2話、9話、23話、24話のみ)。
(reply機能追加しました。台詞もほとんど追加完了しています)

reply機能は某所で公開されていたソースコードを試してみたのですが、どういうわけだかcronでの定期実行がうまく動かず、無茶な動かし方をしようとしたところ暴走しましたorz。これは参考にしたソースコードが悪かったというよりも、中途半端に改変したのが悪かったのかもしれません。
ブラウザ経由で動かした時には上手いこと動いたのですが、cronでphpファイルを定期的に実行させようとした時に限ってエラーが出て動きませんでした。なんでだ。

ひとまず現段階でのソースコードを公開しておきます。大元のソースはこちらのページを参考にさせていただきました。

Twitter Post ver.1.0

<?
/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Twitter Post ver.1.0

https://palemag.kazeki.net/blog/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */

$username = "twitterユーザー名";
$password = "twitterパスワード";
$logfile = "bot.txt";

$lines = file($logfile);
srand(time());
shuffle($lines);

$message = $lines[0];

$params = "status=". rawurlencode($message);
$url = "http://twitter.com/statuses/update.xml?";
$fp = fopen($url.$params, 'r', false, stream_context_create(array(
	"http" => array(
		"method" => "POST",
		"header" => "Authorization: Basic ". base64_encode($username. ":". $password)
	)
)));

$result = "";

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

fclose($fp);
?>

これが一体何をするもんかっちゅーと、「設定したtwitterアカウントに決められた文章をpostする」というプログラムで、つまりphpの動くレンタルサーバーに置いてやったら、アクセスされる度にランダムで1回postするというもの。
基本的な手順としては大体こんな感じになります。

  1. twitterにbot用のアカウントを作成する。
    キャラbotの場合は名前欄にキャラ名を入れたり、プロフィール欄に「○○のbotです」みたいな説明文を入れたり、アイコンをそのキャラの画像にしてみたり色々カスタマイズしてみると宜しいかと思います。
    とりあえず今はアカウントだけ作っておけば、アイコンの変更とかは後からゆっくりやっても可。
  2. 上記のzipファイルをダウンロードして解凍し、「twitter_post.php」の以下の行の””の中身を先ほど作ったtwitterのユーザー名とパスワードに書き換えて保存。

    $username = “twitterユーザー名”;
    $password = “twitterパスワード”;

  3. 「bot.txt」をテキストエディタで開き、botに喋らせたい内容を一行ずつ書いていって保存。一行につきpost一つ分の内容になるので、一行が140文字を越えないように注意。

    ※twitter_post.php、bot.txt共に文字コードはUTF-8、改行コードはLFで保存してください。

  4. 上記のファイル2つをphpの使えるサーバーにアップロードする。
    無料サーバーでも、xrea.comとかland.toとか@PAGES等ではphpが使用可能。
  5. twitter_post.phpのパーミッションに実行権限を与える。
    サーバーによって違うかもしれませんが、とりあえず755にしておけば間違いはないはず…

あとはアップロードしたtwitter_post.phpにアクセスしてやれば、そのたびにbotがランダムで発言するわけですが、何もしなくても一定時間事に喋らせたい場合はもう一手間必要になります。
ちなみに自分が借りている80code.comではphpも4と5が使い分けられる上にcronも使用可能という安い割に至れり尽くせりなサーバーなのですが、生憎現在は新規登録を停止している様子です。

cronが使えないレンタルサーバーの場合は、cron-job.orgというサービスを使うのがいいかと思います。指定したurlに指定した時間ごとにアクセスしてくれる大変便利なサービスなのですが、ドイツ語のサイトなのでこのへんのページを参考に登録してください。
cron タスクの設定 【 Cron-job.org の利用】

cronが使える場合は、管理画面のどっかにこんな感じのフォームがあるはずなので、以下のような感じで入力します。

曜日 コマンド
0 */3 * * * php -f /var/www/hogehoge/public_html/twitter_post.php

コマンドの欄にはファイルの絶対パスを放り込めば動くと思っていたのですが、実はそれだけでは動きません。PHPを動かしたいときは絶対パスの前に「php -f 」というのを付けてあげると動くようです。
一時間に一度発言させたい場合はフォームの「分」のところに0〜59の数値を、それ以外の時間のところには「*」と入れてください。3時間に1度の場合は「時」のところを「*/3」にすれば、3時間おきに発言するようになります。
この赤字の部分はphpファイルへの絶対パスを入れる必要があるわけですが、サーバーによって違うのでお使いの環境に合わせて変更してください。

ちなみに自分が説明するまでもなく、ぐぐれば参考になるページは色々と出てきます。はてなブックマークに色々と放り込んでおいたので、参考にしてみてください。

装甲悪鬼村正の予約特典メモ

装甲悪鬼村正の予約特典が続々と明らかになりつつある。
現時点で分かっている限りではSofmapが特製ブックレット付きCDケース+スペシャルコンテンツディスク、Amazon.co.jpが不明、げっちゅ屋やアニメイト等のヲタショップがテレカ。

個人的にはSofmapの特典が一番良さそうな感じ。テレカ貰っても使いどころがないので、それよりはシステムボイスとかが色々収録されてるDVDの方がまだお得感がある。
Amazonが一番安そうなんだけど、こういう場合に特典が付かないのがどうにも困る。そうなるとSofmapで予約するのが現時点での最良策になるんだろうけど、後から他の特典が出てきたりしないだろうかと思うともうちょっと待った方がいいかな。待ちすぎてうっかり忘れて発売日になってたりしたら困るけど。

しかしよくよく考えてもみたら初回限定生産は木箱なんだよな。どこで買っても木箱。ゲームのパッケージが木箱なんて今まで見た事無いお。

特典情報ページ – 装甲悪鬼村正 -公式サイト

Vガン26話まで見た

・マリアさん傀儡政権のお飾り女王か何かなのかな。ギロチン止められないということは。
・クロノクルが廊下でばったり遭遇したウッソぶん殴ってたのがどう見ても八つ当たりです。本当にありがとうございました。
・あと何故か一緒に処刑されそうになってたタシロ大佐に盛大にフイタw なんでやねんw

っていうか次回予告でネタバレするのはデフォなのかこのアニメ。25話と26話で連続して「○○は死んでしまってうんたらかんたら」を聞いたぞ。
しかし同じ年に放映されたジーンダイバーだと、次回予告は無かった代わりにタイトルコールでいつも盛大にネタバレぶちかましてたから、この年代のアニメとしてはよくあることなんだろうか。

ネタバレといえば、「おかしいですよ、カテジナさん」という台詞がどこで出てくるんだったか調べようとぐぐったら、うっかりネタバレ見てもうた。きぃぃぃorz
古いアニメ故、公式サイトとかないから登場人物の顔と名前が一致しなくなった時に調べようとしても画像付きの人物解説みたいなのがなかなか出てこないのが困る。サイトがあってもwikiとかはネタバレの危険性を秘めているので迂闊に覗けないし。どうしたものか。キャラ名でぐぐったら上位に出てくるのが「○○死す」だの「○○の最後」なんてのはもう嫌だおorz
とはいえ、SSだの同人誌だのは諦めて読んでるけど。「これは本編とは無関係だから」と自分に言い聞かせながら。探せば結構あるもんだね。個人的なツボに大当たりな本の含有率が高いので万々歳ではある。ウッソたんハァハァ

そういえば例のアレがあると聞いたのは29話だったっけか。そこまで見てから寝ようかの。けどその前にキャラbotも作りたいしSnow Leopardもインストールしたいし、うーん…

ニコニコ動画でブラスレイター公式配信中@もうすぐ終了

ニコニコ動画ではブラスレイター1話〜6話までの公式配信を9月19日までやってます。見てない人はこの機会に是非、見た人もこの機会にもう一度是非。

ついったーなどでは時折実況なぞしておりましたが、ブログの方で宣伝するのに機会を逃して完全に出遅れてしまっていたので、あと一週間ぐらいで終わっちゃう前にひとつ。

※以下、動画内容のネタバレを含みます

後半にさしかかり、コメントはわりとまったり具合になっていますが、ゲルトが出てきた時やOP冒頭等ではやはり「ゲルトオオオオオオおおおおおおおおお」弾幕が画面を埋め尽くしています。そしてジョセフが出てきた時には「寝太郎」で画面が埋め尽くされています。「目を開けたまま寝ています」とかもありました。この時点ではまだジョセフ寝てないのに(´・ω・`)
あとはジルが出てきた時に「ビッチ氏ね」「ビッチ死ね」で画面が埋め尽くされてるのも想定の範囲内。そして4話のマレクの「ニトロプラスのゲーム」のくだりでコメント数が瞬間最大風速に。その後ゲームが出てくる度に、どのニトロゲーかについての談義が盛り上がっていましたが、エロゲは確定なのなw その後に続くシーンが涙無しでは見られないけれど(つД`)

それにしてもこの頃の作画は本当にクオリティ高いなぁと思いました。全編通してクオリティは高いけど、このへんのジョセフやマレクやヘルマンは本当にいい顔をしている。
欲を言えばやっぱり12話あたりまで流してほしかった気がしないでもないけれど、販促になるんならこのぐらいが丁度いいのかなと。しかしザーギン様出てないのに、投稿者コメントのキャストに名前があるのは詐欺ではあるまいか(笑

装甲悪鬼村正 体験版感想記

Nitro+の新作、「装甲悪鬼村正」の体験版をプレイした。

いやあやっぱり面白い。相変わらず胸がすくような躊躇いの無い基地外っぷりだ。いっそ清々しくもある。
奈良原氏の手法には、論理と論理による力と力のせめぎ合いみたいなところがあるわけだが、それが斬り合いのときだけでなく、対立の時にもきっちり応用されている。ヤクザの暴虐に対して自分の身とプライドと引き換えに主人公達守ろうとした湊斗とか。主人公達を正論でねじ伏せようとした校長に対して、それを上回る理想と、自分の羞恥心を引き換えにした情とを切り札として対抗した先生とかね。
そしてその駆け引きによる緊張感を見事にぶち壊すかのように要所要所で入る不条理極まりないギャグも相変わらず健在でした。というかAAが出てきたときには笑い氏にかけたw

刃鳴散らすの時はわりとリアリティ重視だった(らしい)けど、今回はトンデモ度合いの方がでっかい印象を受けた。人間よりちょっと大きいサイズのロボットが斬り合いで空中戦繰り広げるスーパーロボット。
なにせ奈良原さんなので、多少の基地外じみた展開は覚悟してたし、こっちの頭もそれに合わせて奈良原論理モードに切り替えていたから、淡々と説明が繰り広げられる描写だけで済んでいた時にはわりと冷静に付いていけてた気がする。
けどあのHシーンは流石に付いていけなかったお!

そして主人公は雄飛だと思っていたら、公式サイトのキャラクター紹介の右上の方にいるどんよりと暗い青年、湊斗景明という人が主人公らしい。なんだかジョセフに似た人が居るなぁと思っていたら、扱いまでジョセフそっくりだったとは。その位置はどう見ても主人公の立ち位置じゃねぇw
どっかで「和風ブラスレイター」とか言われていたような気がするが、劔冑(ツルギ)ではなく主人公の性質からそう言われていたんだろうか。
しかしニトロ本スレでプロモーションムービーが出ていたので見てみたら、やっぱりブラスレイターというか板野サーカスそっくりだった。
ちなみにyoutubeにいつの間にかニトロプラスの公式チャンネルが出来たらしく、PVを見られるようになっていた。

何にせよ、なんだか実に久方ぶりのニトロ分を補給できそうだ。発売が非常に楽しみである。

ターミネーター4とバイオハザード3

仕事で梅田まで行く用事があったので、帰りにターミネーター4を見てきた。
スカイネットの核攻撃によって廃墟になった地球で、ジョン・コナー率いる人類側のレジスタンスが機械軍に総攻撃をかけるという話である。ちなみに今作にも人間型ターミネーターは出てくるけど、残念ながらシュワちゃんではない。

核攻撃で崩壊した世界というのが今回の舞台なわけだけど、人類側の火力とか戦力はまだまだ余裕あるなーと感じた。核で世界中がボロボロになったという割にミサイルやら潜水艦やら戦闘機はまだあるし、軍隊もわりと健在だし。似たような世界背景の映画版バイオハザード3と比べてしまったせいでそう感じるのかもしれないが。
とはいえバイオは人類側にアンブレラ社というどーしょーもないのが居るからなー。むしろアンブレラ社が諸悪の根源なのに世界ボロボロになった後でもなお力を保持したままだから始末が悪いというか。
最後が「人類のスカイネットとの闘いはまだ終わらない」みたいな締め方だったのでシリーズはまだまだ続きそうな印象。そういえばバイオハザード4はいつ出るんだろう。3のラストは「闘いは続く」というよりも「以下次号」みたいな感じの中途半端なところで終わってるし。

しかし知能と攻撃力の上ではスカイネットの機械の方が遥かに脅威な気がする。頑丈さと倒しにくさの点ではゾンビの方が始末悪いが、雑魚の方はただ漫然と襲ってくるだけで統制取れてないし。機械群はより戦略的かつ統率的、その上積極的に人類滅ぼそうとしてくるから始末が悪い。
ブラスレでもあのままデモニアックが世界中に拡散していたらターミネーター4とかバイオハザード3みたいになってたんだろうか。あんだけの数の融合体が世界中の主要な都市を同時に襲撃すればバイオハザード3状態になりそうな気がする。個々の耐久性と攻撃力が高い、感染したら人類もお仲間に、という点ではゾンビと共通してるし。そうなると人類の生き残りを率いて世界各地を放浪する難民のリーダーにはアマンダ辺りがなってそうな。

DVD12巻

[tmkm-amazon]B001UPL3YQ[/tmkm-amazon]

最後の最後で公式がやってくれました。
12巻ジャケット絵はエレアだと思ってたら……+αでザージョセがついてきた! そしてジャケ絵でジョセフが脱ぐのは仕様か? もはや仕様なのか!?
にしー絵だとジョセフだけ脱いでる回数が多い気がするのは何故だろう。ザーギン様は今回きっちり着込んでるみたいだし。
しかし最近は公式でザージョセが頑張ってるような気がする今日この頃。放映が終わっても時折こうやって燃料の投下があるのはいいことだ。

何はともあれ最後まで出て良かった。途中でGONZOなくなってしまったらどうなることかと心配していたが、何とか最後まで出せそうで本当に良かった。

拍手レス

[2009/06/28 (Sun) 22:45:25]
こんばんは。たかのんと申します。NSSの件、ブログを拝見しました。公式からそんな燃料投下があるとは思いませんでした!!是非ともDVD化して欲しいものです。凄い情報をありがとうございました!!!

こんばんは、拍手ありがとうございます。
一応ニトロ作品のひとつですし、ブラスレイターからも一曲ぐらい出るといいなーとは思っていましたが、まさかここまで濃いのが来るとは嬉しい予想外でした。というか予想を遥かに上回るサービスっぷりに何の陰謀かと激しく動揺しました。
ライブDVDは過去のライブの時も出ていたので、今回も出るんじゃないかと思っています。