PHPで、はてなハイクのボットを作ることにしました。
Twitterのボットは作ったことがあります。
しかし、はてなハイクと認証の方式が違います。Twitterの投稿はOAuth認証ですが、はてなハイクはベーシック認証です。
ネットで調べて見つけたのがこちらのページ。
はてブの WebHook を利用して PHP スクリプトではてなハイクに投稿するサンプル – カミクズヒロイ /bin
そのものズバリのサンプルが載っていたので、そのまま使わせていただきます。ありがとうございます。
サンプル
function haikuPost
($st, $kw, $id, $pw, $src, $url){
require_once 'HTTP/Request.php';
$req = &new HTTP_Request();
$req->setURL($url);
$req->setBasicAuth($id, $pw);
$req->setMethod(HTTP_REQUEST_METHOD_POST
);
$req->addPostData('keyword', $kw);
$req->addPostData('status', $st);
$req->addPostData('source', $src);
$req->sendRequest();
return $req->getResponseBody();
}
説明
- $st
投稿の本文です。
- $kw
キーワードです。はてなハイクは投稿の本文だけでなく、タイトルのようなキーワードを付けることができます。
なお、この項目を省略し、投稿の本文を「キーワード=本文」とすることでもセットされるようです。
- $id
はてなハイクのユーザーIDです。
- $pw
はてなハイクのパスワードです。
はてなハイク – APIで調べます。
- $src
クライアント名をセットします。実際ははてなハイクのキーワードを指定します。
- $url
「http://h.hatena.ne.jp/api/statuses/update.format」をセットします。「format」のところは「json」や「xml」をセットします。情報をどのように取得するかが問題になりますが、投稿の場合は帰ってくる情報はさほど重要ではないかもしれません。詳しい使い方ははてなハイク – APIで確認して下さい。
これらを適当にセットして次のとおり書けば投稿できます。
$result = haikuPost($st, $kw, $id, $pw, $src, $url);
echo $result;
補足
気になったのは「HTTP/Request.php」の部分。
「PEARのHTTP_Requestとやらをインストールしなければならない?」と思い、色々調べましたが、分かりません。
私はロリポップのレンタルサーバを使っているのですが、「ひょっとすると元からインストールされているのかも」と思い、試しに上のサンプルを実行したところ、投稿できてしまいました。
このブログはWordPressを使っています。
はてなハイクで投稿した内容をバックアップを兼ねて、このブログに貼り付けていたのですが、(似たような投稿を表示するプラグイン)で、このはてなハイクばかりが表示されるという不具合があります。10日分をまとめて貼り付けているため文章が長く、言葉の一致数が相対的に多いからかもしれません。
というわけで、このはてなハイクのまとめをこのブログから外し、はてなダイアリーに移行しようと思います。
はてなダイアリーは他のブログからのインポートに対応しています。
しかしそのデータ形式はMovableType形式(MT形式)のみのようです。
一方、WordPressは内容のエクスポートに対応していますが、出力形式はXML形式のみ。
つまり、このままでは移行することができません。
ネットで調べてみたところ、MovableTypeからWordPressへの移行については情報が多いのですが、逆にWordPressからMovableTypeへの移行については、とても少ないのです。
エクスポートしたXML形式のデータをMT形式に変換する方法が見つかりません。
ようやく見つけた「PHPを使って変換する方法」を試しましたがダメ。
「MovableTypeをインストールしてXML形式をインポートする方法」というのがあり、実現性は高そう。しかし、そもそもMovableTypeが嫌でWordPressに乗り換えたのに今さら、という気がします。
途方に暮れて、昨夜は寝てしまいました。
今朝、ひらめいたのは「MySQLからデータを引き抜いてMT形式に整形する方法」。そもそもWordPressのデータはすべてMySQLにデータベース化されて保存されているのです。何もXML形式に変換したものをさらに変換する必要はないのです。
というわけで、この方法を採用することにします。
ただし、MT形式に整形するプログラムを自分で書かなければならないので、いつになることか。
追記
成功しました。
You Look Too Cool » WordPressからMovableTypeへの移行
はてなハイクのAPIはTwitterと互換性があるとのこと。
私はJavaScriptではてなハイクとTwitterの過去の投稿を抽出しているのですが、確かに同じコードで動きます。
しかし若干、異なる点があるので、書いておきます。
続きを読む…
はてなハイクを利用しています。
はてなハイクAPIを使うと簡単にデータが取り出せます。
JSON形式にしてJavaScriptで過去の投稿を整形してみました。
せっかくなのでこのブログに貼り付けてみました。
ありがたいのはブラウザで表示されている文章をコピーして、WordPressの編集画面に貼り付けると、リンクや画像も期待通りに貼り付けられること。
これはとても便利です。
編集画面の「精度」の高さはWordPressの優れた点の一つだと思います。
追記
2010年1月29日にはてなダイアリーに貼り付け直しました。
シンプルに。
はてなブックマーク用のブックマークレットです。
探すといろいろ出てくるのですが、シンプルなのがないので自分で試してみました。
これで充分だと思います。
はてなブックマーク
最近のコメント