以前書いた記事2つのつづきで Twitter Bot を作った話。
Xrea + CakePHP + MeCab で日本語形態素解析
CakePHP + OAuth + Twitter API で Bot を作る
上記のことがクリアできれば、あとは自分の好みの Bot を作るだけ。という状態。
今回作ったのが、ご当地ロボ (gotohchi) on Twitter。
以前書いた記事2つのつづきで Twitter Bot を作った話。
Xrea + CakePHP + MeCab で日本語形態素解析
CakePHP + OAuth + Twitter API で Bot を作る
上記のことがクリアできれば、あとは自分の好みの Bot を作るだけ。という状態。
今回作ったのが、ご当地ロボ (gotohchi) on Twitter。
前回作った Xrea + CakePHP + MeCab で日本語形態素解析 を組み合わせてマルコフ連鎖でカオスな文章をつぶやく予定だが、今回は OAuth で Twitter API とやり取りして自分のアカウントに「つぶやけ」とツイートする Bot を作るまで。
PHP で日本語形態素解析が使いたい。
Yahoo!デベロッパーネットワーク – テキスト解析 – 日本語形態素解析 は手軽に使えそうだけど登録しないと使えないというのが好みじゃない。
MeCab と chasen は、Xrea で使えた実績があるらしいことがわかって、そっちを使うことにする。
MeCab を使うだけなら、CakePHP を使う必要はないが、元文章は RSSなどの XML または、XHTML から自動的に取得 → マルコフ連鎖でカオスな文章を生成 → つぶやく。という圧縮新聞みたいなのを作ってみたいと思った。
XML または XHTML の取得、蓄積は CakePHP で過去に作ったことがあるので、それを流用することにするのが CakePHP を使う理由。
分類待ち – まとめのインテリア / デザイン雑貨とインテリアのまとめ。
分類待ちの文字がきれい。
→ どうやっているのかわからないから、調べてみると BeautifulJapaneseKit を使っているみたい。
→ 自分も使ってみたくなった。
ダウンロードから導入まで。
下記ページからダウンロード。
BJKit(BeautifulJapaneseKit)|その他アイデアマンズの製品・無料ツール|アイデアマンズ株式会社(ideaman’s Inc.)
※ダウンロード時のバージョンはVer.0.7.0
ブログの更新を Twitter に流すプラグインのインストールから設定まで。
プラグインの新規追加からインストール。
WordPress › WordTwit « WordPress Plugins
下記を参照。
ブログの更新情報はFriendfeedじゃなくて、WordTwitでTwitterに流すことにした – IDEA*IDEA ~ 百式管理人のライフハックブログ
記事どおり、URL Shortening を bit.ly にしたけど、TinyURL.com だとユーザ登録とか面倒なことをしなくてものよかったのか?と登録後に思った。
基本的にはここの Username と Password を設定しておけば問題ない。
Message は、『New blog posting,』 を消して、『[title] – [link]』 に変えておくほうがいいと思う。
VALUE DOMAIN でダイナミックDNSを利用するための更新スクリプト。
DiCE DynamicDNS Client (自宅でインターネットサーバー) などのDNS更新ツールを使えばいい話だけど、Linux にインストールする方法や使い方を覚えるよりも、シェルスクリプト + Cron で自作したほうが早そうだったので自作した。
以前、Xrea SSHホスト登録に シェルスクリプト + Cron で自作したのでそのとき参考にしたものを元に改造することにする。
SSHホスト登録用のスクリプトは下記を参考にした。
xrea(coreserver) SSHホスト登録スクリプト – Kerosoft : Modus Operandi
自分のサイトの記事は滅多にはてなブックマークされないもんだから、たまにブックマークされるとうれしくて、どの記事がブックマークされたか気になるけどよくわからない。
新着ブックマークというのがあってあっさり解決した。
はてなブックマーク – 新着ブックマーク – www.zontheworld.com
http://b.hatena.ne.jp/bookmarklist?url=http://www.zontheworld.com/blog/
※非公開のブックマークは表示されないのでそこが難点。
今までは、人気エントリーで差分を何とか探していた。
www.zontheworld.com の人気エントリー – はてなブックマーク
http://b.hatena.ne.jp/bookmarklist?url=http://www.zontheworld.com/blog/
はてなブックマーク件数取得APIに新しいAPIが追加されたらしいので試してみた。
テーマの index.php とか single.php などの表示したい所に以下のコードを挿入する。
<a href="http://b.hatena.ne.jp/entry/<?php the_permalink() ?>"> <script type="text/javascript" src="http://api.b.st-hatena.com/entry.count?url=<?php the_permalink() ?>&callback=document.write"></script> users </a>
はてなブックマークのような見た目にしたい場合は、strong タグをつけて、CSS を追加。
テーマのPHPファイルに追加
<strong class="hb_users"> <a href="http://b.hatena.ne.jp/entry/<?php the_permalink() ?>"> <script type="text/javascript" src="http://api.b.st-hatena.com/entry.count?url=<?php the_permalink() ?>&callback=document.write"></script> users </a> </strong>
スタイルシートに追加
strong.hb_users a:link,
strong.hb_users a:hover,
strong.hb_users a:visited {
color: #F00 !important;
background: #FCC !important;
}
Google Code で提供されている API で Google検索結果を取得できる Google AJAX Search API ですが、検索結果をDBにキャッシュすれば、Google のサーバにも余計な負荷がかからないし、1日あたりのクエリ発行回数に制限があるはず(※)なので、その辺の問題を解消するためにも、どのようにすれば実装可能か考えていました。
※クエリ発行回数に制限については、2005年あたりの書かれている記事は1000回/1日とあるのですが、最近の記事の解説では見つけれないし、公式の利用規約にもそれらしい記述が見つけれませんでした。
正直、AJAX は用意されているAPIをそのまま実装する程度のことしかしたことがないので、なにをどこまで出来るとか突っ込んだことはよく分からないのですが以下の記事の見た感じ、JSONPというのを使えば簡単に出来るのではないかと気がしました。
次の様なURLをリクエストすればよいみたいです。詳しい解説は上記のリンク先を参照してください。
http://www.google.com/uds/GwebSearch?callback=handleWebResults&context=0&lstkp=0&rsz=10&hl=ja&q=%E4%BB%8A%E6%B2%BB%E5%B8%82&key=ABQIAAAA8sIaWMGpb7cFeAQjzNmTQhSgxx03qR9JK3UItoDYsuRdbT1gGBQC--KhlY0sbIlKGaHsZnC8e2m57A&v=1.0
JSONP というのはよく分かっていないけど、JSONは要求したデータを配列で返してくれるってイメージで、実際に参考サイトの通りのURLを叩いたら配列風のデータが返ってきたので問題ないでしょう。
使えれば問題ないのであまり突っ込んで調べないけど、JSONPは以下の記事に「JSONデータを括弧でくくった上でこっちが指定した文字列を頭につけて返してね?」と書かれているので多分間違いない。と思う。
zontheworld
うまい焼肉が喰いたい。
HTML convert time: 0.450 sec. ( Login )