PEARパッケージとして整備

雨が降りしきる今日この頃。

さて、今まで本体しか入っていませんでしたが、テストコード,ドキュメント,サンプルコードを含めてパッケージとしました。
PEAR::DBパッケージを参考にしています。
これによって、パッケージをインストールすると以下のディレクトリが作られます。

php/lib/php/Services/Hatena (本体)
php/lib/php/test/Services_Hatena (テストコード)
php/lib/php/doc/Services_Hatena (ドキュメント)
php/lib/php/data/Services_Hatena (サンプルコード)

そのため、バージョンを0.0.7に上げました。
インストールはこのように行ってください。

pear install http://hetena.com/pkg/Services_Hatena-0.0.7.tgz

PEARのパッケージは"PEAR_PackageFileManager"を用いて作成していますが、
なにせ作り方もまったくわからないところからはじめたので、
今回もどのようにしてドキュメントを含めるか苦労しました。。
ので記録に残しておきます。
setOptionsに以下のようなパラメータを渡すことで解決する模様です。

$package = new PEAR_PackageFileManager;
$result = $package->setOptions(array(
   .. 略 ..
   'dir_roles' => array('doc' => 'doc', 'tests' => 'test', 'data' => 'data'),
   ));

Todo..

  • 利用例と使い方説明ページをつくろうかなと。
  • エラーハンドリング、、悩んでますがなんとかせねば。
  • etc..

phpDocumentorにてドキュメント整備

春が待ち遠しい季節になりました。

さて、最近公開したServices_Hatena パッケージですが、
phpDocumentorを使用してドキュメントページを作成しました。
以下のページになります。
http://hetena.com/doc/index.html

それに伴って、各ファイルのコメントを日本語にしてしました。
せっかく日本産ということで。。
バージョンは上げていません。インストールはこちらからお願いいたします。

pear install http://hetena.com/pkg/Services_Hatena-0.0.6.tgz
  • Memo

phpDocumentorにはいくつか出力レイアウトを指定できるようです。
今回は"HTML:Smarty:PHP"を使用しました。
他に"HTML:frames:phpedit"などもできるとか。どれが一般的なんでしょうか。。

さて、ToDoは、、

  • 利用例の整備
  • 細かいパラメータのセット関数作成
  • エラーハンドリング
  • etc

Servies_Hatena の検索デモページ設置しました

冬の服か春の服かどちらを買うか迷う季節になりました。

さて、そろそろ利用の仕方もまとめなければということで、まず検索周りのデモから。
ついでに、検索結果の2ページ目以降から表示できたりするように調整しました。
(パッケージのバージョンを上げました。後述)

デモはとっても簡素なものでキーワードを入力すると、
はてなキーワード連想語とともに、検索結果を表示するというものです。
http://hetena.com/demo/demo_search.php
上記URLがデモページになります。デフォルトでPHPが入っていますので、
そのまま「Search」ボタンを押していただくだけでもかまいません。

かなり簡単なコードでこれだけが行えてしまいます。
(途中でHTML表示のためのところを少し省略。ソースは2,3日中に公開します。すいません、現状汚すぎて、、)

$type = "search";
$hatena = Services_Hatena::create($type);
$p = ($_GET["p"]) ? $_GET["p"] : 1;
$hatena->setStartPage($p); // 何ページ目を表示するか
$hatena->execute($keyword);

$resultNum = $hatena->getTotalSearchResult();
$prev = $hatena->getPrevPage(); // 前のページ
$next = $hatena->getNextPage(); // 次のページ

print("<b>検索結果 : </b>" . $resultNum . " 件 ");

$search_results = $hatena->getResult();

foreach ( $search_results as $result ) {
    $title = mb_convert_encoding($result["title"], "euc-jp", "auto");
    $link  = mb_convert_encoding($result["link"], "euc-jp", "auto");
    $description = mb_convert_encoding($result["description"], "euc-jp", "auto");

print <<<__HTML__
<a href=$link>$title</a>
<br>
$description
<br>
<br>
__HTML__;
    }

と、いうわけで、バージョンを0.0.6に上げました。
以下のようにダウンロードしてくださいませ。

pear install http://hetena.com/pkg/Services_Hatena-0.0.6.tgz

次なる課題は
PHPDocumentorを使ってのドキュメントも整備したいと思っています。
関数の充実。でもだんだん利用するスクリプトでやるべきかパッケージ内で
やるべきかわからなくなってきました。。要検討.

-
巡回していたら、ワタシのよりはるかに見た目も良い、
AjaxOpenSearchはてなダイアリーキーワード連想語 API を使ったはてな検索のデモ」
というものを作られた方がいたのでご紹介。
http://cl.pocari.org/2006-02-20-1.html
いい感じです。(今度、Servics_Hatena 使って頂きたいところです。。

はてなexist APIに対応させました。

さて午前頃にはてなフォトライフ対応を致しましたが、日が変わろうかという今。

いろんなところを勝手に参考にさせて頂きながら
はてなexist API対応を致しました。
任意のURLに関するいくつかの情報を知ることができます。

バージョンを0.0.5に上げました。
インストールするにはこちら。依存パッケージなど詳細はhttp://d.hatena.ne.jp/gooooooogle/20060214#1139880129

pear install http://hetena.com/pkg/Services_Hatena-0.0.5.tgz

結果の取得の仕方がはっきりいってかなり粗悪です。改善予定です。
テストコードはこんな感じです。

<?php
require_once("Services/hatena.php");

   // $type  = "search";
   // $type  = "autolink";
   // $type  = "bookmarknum";
   // $type  = "asin";
   // $type  = "similar";
   $type  = "exist";

   $datum = array( "search"      => "PHP",
                   "autolink"    => "本日は良い天気ですね。",
                   "bookmarknum" => "http://www.yahoo.co.jp/",
                   "asin"        => "4774124966",
                   "similar"     => "PHP",
                   "exist"       => "http://www.yahoo.co.jp",
                 );
   $data  = $datum[$type];
   $hatena = Services_Hatena::create($type);

   $result = $hatena->execute($data);
   var_dump($hatena->getResult());
?>

うーん、ようやく対応数が増えてきました。
コメントも形だけながらつけておきました。
次はエラー処理ですかね。

はてなフォトライフAtomAPIに対応させました。

冬のアイスが美味しい季節になりました。
ところで最近公開しました、Services_Hatena PEARパッケージですが、
いろんなところを勝手に参考にさせて頂きながら
はてなフォトライフAtomAPIで以下の操作が可能になりました。

  • 新規写真の投稿 (PostURI への POST)
  • 投稿した写真のタイトルの変更 (EditURI への PUT)
  • 投稿した写真の削除 (EditURI への DELETE)
  • 投稿した写真の参照 (EditURI への GET)

バージョンを0.0.4に上げました。
インストールするにはこちら。依存パッケージなど詳細はhttp://d.hatena.ne.jp/gooooooogle/20060214#1139880129

 pear install http://hetena.com/pkg/Services_Hatena-0.0.4.tgz

テストコードはこんな感じです。
(試してみてくださいと言いつつ大変申し訳ないですが、
ベータ版ということもあり、重要なデータを損なう可能性がありますので
ご注意くださいませ。。もちろん、ワタシのデータでは確認済。)

<?php
require_once("Services/hatena.php");

$hatena = Services_Hatena::create("photo");

/** テストされるユーザー名とパスワード */
$user = "";
$pass = "";

$hatena->hatena_login($user, $pass);

/** フォトライフへ追加処理 with image, title */
$hatena->add_photo("./d.gif", "hatena_diary");

//! テストされるフォトURLの末尾の数値部
$fid = "";

/** フォトライフからタイトル取得 */
// $hatena->get_photo($fid);
// var_dump($hatena->getResult());

/** フォトライフを編集 with fid, title */
// $hatena->edit_photo($fid, "test");

/** フォトライフから削除 */
// $hatena->delete_photo($fid);
?>

さてこれでようやく以下のAPIに対応することができました。
もちろんまだまだ細かい設定など残っておりますが、、

そろそろコメントの整備でもやりましょうかね。。

はてなブックマークAtomAPIに対応させました

さて最近公開しました、Services_Hatena PEARパッケージですが、
いろんなところを勝手に参考にさせて頂きながら
はてなブックマークへ以下の処理ができるように対応させました。

  • はてなブックマークへブックマークを新規投稿 (POST)
  • 特定のブックマークを参照 (GET) (タイトル取得)
  • タイトル / コメントの編集 (PUT)
  • ブックマークの削除 (DELETE)

バージョンを0.0.3に上げました。
インストールするにはこちら。依存パッケージなど詳細はhttp://d.hatena.ne.jp/gooooooogle/20060214#1139880129

 pear install http://hetena.com/pkg/Services_Hatena-0.0.3.tgz

ログイン周りとかブックマーク周りに関しては何も知らなかったので、
id:shomaさんのコードを参考にさせて頂きながらなんとか処理が行える状態
まで。ただワタシの技量が低く綺麗に取り込めてないという衝撃の事実。。
Atom APIからコメントを取得などはぜひつけたいところです。

テストコードはこんな感じです。
(試してみてくださいと言いつつ大変申し訳ないですが、
ベータ版ということもあり、重要なデータを損なう可能性がありますので
ご注意くださいませ。。もちろん、ワタシのデータでは確認済。)

<?php
require_once("Services/hatena.php");

$hatena = Services_Hatena::create("bookmark");

/** テストされるユーザー名とパスワード */
$user = "";
$pass = "";

$hatena->hatena_login($user, $pass);

/** ブックマークへ追加処理 */
$hatena->add_bookmark("http://php.net", "php");

//! テストされるブックマークURLの末尾の数値部
$eid = "";

/** ブックマークからタイトル取得 */
// $hatena->get_bookmark($eid);
// var_dump($hatena->getResult());

/** ブックマークを編集 with eid, title, comment */
// $hatena->edit_bookmark($eid, "PHP", "PHP");

/** ブックマークから削除 */
// $hatena->delete_bookmark($eid);
?>

戻り値の判定とかほとんど入れていないという罠。。

さて、今後は細かいパラメータを変更できる関数の追加と
はてなフォトライフAtomAPIに対応させたいと思います。
まぁ、細かいことは置いておくとしてようやく形になってきましたでしょうか。。

はてなダイアリーキーワード連想語API に対応

さて、もともと機能が貧弱という事実を痛感しておりまして、
少しずつでも増やしていきたいということで。
昨今より公開致しました、Services_Hatenaですが、2/15に公開された
はてなダイアリーキーワード連想語APIに対応致しました。

キーワードを入れるとそれに連想されるキーワードリストを返すというものです。
ぜひお試しくださいませ。

バージョンを0.0.2に上げました。

 pear install http://osdn.dl.sourceforge.jp/services-hatena/18948/Services_Hatena-0.0.2.tgz

テストコードはこんな感じです。

 <?php
 require_once("Services/hatena.php");

 $hatena = Services_Hatena::create("similar");

 $result = $hatena->execute("PHP");
 var_dump($hatena->getResult());
 ?>

結果はこんな感じです。

array(11) {
  [0]=>
  string(4) "PEAR"
  [1]=>
  string(12) "デバッグ"
  [2]=>
  string(4) "HTML"
  [3]=>
  string(6) "雑誌"
  [4]=>
  string(27) "プログラミング言語"
  [5]=>
  string(9) "ウェブ"
  [6]=>
  string(5) "Hello"
  [7]=>
  string(6) "言語"
  [8]=>
  string(24) "スクリプティング"
  [9]=>
  string(10) "HelloWorld"
  [10]=>
  string(12) "PHP研究所"
}

HelloWorldが入ってるところに笑ってしまいました^^

作成時間は30分ぐらいでしょうか。
設計がいい(という冗談はさておき)、まだまだシンプルすぎるのが理由ですが、
簡単にできたところに喜びを。。

課題として、エラーハンドリングがザル状態なのでなんとかしたいところです。