ブックマークを自動で追加するスクリプト
暑かったり、寒かったりのこの頃にちょっと嫌気がさすこの頃です。
さて、先日画像の自動収集が可能そうと書いたら、スクリプト書けよ
というご意見を頂いていたので、、
まずブックマークで実装してみました。はてな検索の結果からそのURLが
特定数以上ブックマークされていたら、自分のブックマークにも
追加するというものです。
あとは、cronか何かで自動で動かしておいて、
自分のはてなブックマークのRSSをリーダーに登録しておけば、
はてな検索に新しく人気のページがヒットするようになったら、
簡単にわかるかと。
web2.4ぐらいになると自分のRSSを登録しておくだけで
すべてが事足りるようになると思います(嘘です.ごめんなさい.
テストスクリプトはこんな感じです。
なんか毎回、factoryメソッドでつくるのが面倒になってきたので、
なんとかしたいなと思いました。
(テストスクリプトを実行して、発生したいかなる被害も責任を負えません。
ごめんなさい。)
<?php require_once 'Services/Hatena.php'; $hatena_s = Services_Hatena::factory('Search'); $result_s = $hatena_s->execute('Google'); //! 検索したいワード.utf8 $user = 'xxx'; //! 自分のアカウント $pass = 'xxx'; $hatena_b = Services_Hatena::factory('Bookmark'); $hatena_b->hatena_login($user, $pass); $hatena_n = Services_Hatena::factory('Bookmarknum'); foreach ( $result_s as $entry ) { $title = $entry['title']; $url = $entry['link']; $num = $hatena_n->execute($url); if ( $num >= 3 ) { //! 3人以上ブックマークしているURLのみ登録 $hatena_b->add_bookmark($url, 'auto'); } } ?>
次は、ethnaかZend FrameworkあたりのPHPフレームワークに組み込んでみたいなと思いました。
Services_Hatenaはこちらからどうぞ。
Services_Yahoo_Ja オークション対応
雲ひとつない快晴が待ち遠しいこの頃です。
さて、Services_Hatena のかたわらで作成をはじめた、
Services_Yahoo_Ja パッケージですが、Yahoo!JAPAN デベロッパーで
最近公開されたYahoo! オークション用のWebサービスAPIを
利用できるように修正いたしました。
オークションカテゴリ情報や、特定カテゴリの出品物リストなどの
取得が容易にできるようになりました。
Yahoo!JAPAN は先日、社長さんが全サービスでAPIを公開すると
おっしゃっていましたが、実際にどんどん増えてきているようですね。
デモページ : http://hetena.com/y/demo/demo_auction.php
バージョンを0.0.2にあげました。インストールは以下のようにお願いいたします。
pear install http://hetena.com/y/pkg/Services_Yahoo_Ja-0.0.2.tgz
出品リストを得るテストスクリプトは以下のようになります.
<?php require_once 'Services/Yahoo/Ja/Auction.php'; $yahoo = Services_Yahoo_Ja_Auction::factory('goods'); $yahoo->setAppID('peartest'); // please, use your AppID. $yahoo->setCategory(2084032471); $result = $yahoo->getGoodsList(); foreach ( $result as $entry ) { $title = $entry['title']; $url = $entry['url']; print($title . " ($url)" . "\n"); } ?>
出品タイトルと実際のページURLが得られるはずです。
直したいところもまだ多く含んでいますが、、とりあえず公開です。
よろしければお試しください。
Services_Hatena x Services_Yahoo_Ja はてな検索
夜は思ったより寒いなと思ったこの頃です。
さて、かなり前に公開したServices_Hatenaですが、利用例などをどんどん示して
いければなと思っております。
表題にありますように、自作の'Services_Yahoo_Ja'と掛け合わせることで、
はてなの検索の真似が容易にできるかと。
はてなでは検索されたページがはてなでどれくらいブックマーク化されているか、
最後にでています。
今回はこれを実現するための入り口となる簡単なコードを示します。
(両パッケージのダウンロードなどはHetena.com - Ready For Developmentをご参照ください。)
コード. Services_Yahoo_JaはPHP5専用です。(ごめんなさい
<?php require_once 'Services/Hatena.php'; require_once 'Services/Yahoo/Ja/Search.php'; $hatena = Services_Hatena::factory('Bookmarknum'); $yahoo = Services_Yahoo_Ja_Search::factory('web'); $yahoo->setAppID('peartest'); //! please, use your AppID. $yahoo->setQuery(PHP); //! utf8 $result = $yahoo->submit(); foreach ($result as $entry) { $title = $entry['Title']; $url = $entry['Url']; $num = $hatena->execute($url); //! get number of bookmark print($title . ' (' . $num . ")\n"); } ?>
すると以下のような結果を得ることができます。
あとは、'70 users'のようにして、赤くして、、と加工してやれば、近づけるでしょうか。
PHP研究所 PHP INTERFACE (8) 日本PHPユーザ会 (70) レッツPHP! (109) PHP: Hypertext Preprocessor (29) PHP: PHP マニュアル - Manual (115)
これをちょっとひねってやると画像検索結果から、はてなフォトへ追加すると
いうことができそうな。画像の自動収集になりますかね。
(運用には気をつける必要がありそうですが。)
Services_Hatena リリースしました
そろそろ上着を脱ごうかというこの頃です。
さて、かなり前に公開したServices_Hatena パッケージですが
本日PEARにて正式リリースが無事できました。
パッケージ情報はこちらになります。
http://pear.php.net/package/Services_Hatena/
正式リリースされたため、以下のようなコマンドでインストール可能となります!
pear install Services_Hatena-alpha
コードを書き始めて、約一ヶ月ですが、こうして無事リリースできまして、
なかなか感慨深いものがあります。
ぜひ、皆さんも登録してみていくださいませ。
また、このパッケージの使い方などの紹介用として、以下のWebページを用意致しましたので、
よろしければご覧ください。
http://hetena.com/
さて、実はリリースに際して少し手間取ったところがありますので、メモしておきます。
アカウント申請によって、アップロードする権限はもらっていたのですが、
実際にはパッケージをアップロードすることができませんでした。
"New Package"というメニューから、先にパッケージ情報を登録する必要があるとか。
Package Name,License,Category,SummaryやCVSのURLを入力して、
submitを行います。しばらくすると受付けましたというメールがきますので、
これで晴れてアップロードできるようです。
アップロードは"Upload Release"というメニューからtgzファイルを指定してsubmit
するだけでできます。
ちょうど、これを書いている今、PEAR申請中にコメントを頂いていた方から、
Congrats!(おめでとう!)のメールを頂きました。感じの良いコミュニティは素敵ですね^^
Services_Yahoo_Ja パッケージもつくってみました
別のものをつくる時間があれば早くアップしろという話ですが、、
ヤフーの公開しているWebサービスAPIを利用するパッケージも作ってみました。
(ヤフーの公開APIについて http://developer.yahoo.co.jp/)
今度はJPRC (Japan PHP Repository Channel) の動きがあればこれに登録してみたいところです。
これはすでにPEARに米ヤフーのAPIを利用するServices_Yahooパッケージ
があるので、これを一部継承する形でつくってみました。
検索では、APIのURLを新たにセットし直しているだけです。
(実は、米ヤフーのAPIでも言語を指定すれば日本語検索できるのですが)
最近ヤフーが公開した、カテゴリWebサービスも対応させてみました。
(一部対応しきれていませんが。。)
以下にインストールとテストスクリプトを示しておきます。
例によっていかなる被害も責任を負えませんが、ぜひお試しくださいませ。
pear install Services_Yahoo-alpha pear install http://hetena.com/y/pkg/Services_Yahoo_Ja-0.0.1.tgz
テストスクリプト
<?php require_once 'Services/Yahoo/Exception.php'; require_once 'Services/Yahoo/Ja/Category.php'; $yahoo = Services_Yahoo_Ja_Category::factory('dir'); $yahoo->setAppID('peartest'); // please, use your AppID. $yahoo->setId(2075289519); // Category ID try { $result = $yahoo->submit(); $space = $result['Space']; printf("このカテゴリのタイトル : %s (%s)\n", $space['Title'], $space['Id']); $category = $result['Category']; foreach ($category as $entry) { printf("子カテゴリのタイトル : %s (%s)\n", $entry['Title'], $entry['Id']); } $site = $result['Sites']; foreach ($site as $entry) { printf("登録サイトのタイトル : %s (%s)\n", $entry['Title'], $entry['Url']); } } catch (Services_Yahoo_Exception $e){ print($e); } ?>
結果はこのような感じで、カテゴリ名やカテゴリIDを取得できます。
このカテゴリのタイトル : アウトドア (2075289519) 子カテゴリのタイトル : 海水浴場 (2076303950) 子カテゴリのタイトル : 環境と自然 (2075722160) 子カテゴリのタイトル : キャンプ (2075289522) .. 略 ..
これを利用して、デモページとしてこんなページを用意してみました。
http://hetena.com/y/demo/demo_category.php
まだまだつくりかけといった感じですが、これから充実させていきたいと思います。
公開に向けて 指摘事項を修正
微妙に寒いという言葉がよく似合うこの頃です。
さて、少し前に公開したServices_Hatena PEARパッケージですが、
投票プロセスにて、いくつか指摘事項を頂いていたので、
これを修正しております。
大体完了しており、あとはひたすらテストして今月中には
正式にアップロードしたいところです。
修正点は、html_entitiy_decode関数の使用や空のelse文の削除、
関数名の変更などです。
またPHP4でも使えるように変更しました。
(publicなど修飾子の削除とオブジェクトの呼び方の修正で対応)
ぜひお試しください。バージョンを0.1.0にあげました。
pear install http://hetena.com/pkg/Services_Hatena-0.1.0.tgz
※オブジェクト作成のための関数名も変更されておりますので、
今までのテストスクリプトはエラーとなります。(すみません)
あらためて、テストスクリプトを記述しておきます。
<?php require_once 'Services/Hatena.php'; // $type = 'Search'; $type = 'Autolink'; // $type = 'Bookmarknum'; // $type = 'Asin'; // $type = 'Similar'; // $type = 'Exist'; $datum = array( 'Search' => 'PHP', 'Autolink' => 'I like PHP.', 'Bookmarknum' => 'http://www.yahoo.co.jp/', 'Asin' => '4774124966', 'Similar' => 'PHP', 'Exist' => 'http://www.yahoo.co.jp', ); $data = $datum[$type]; $hatena = Services_Hatena::factory($type); if (PEAR::isError($hatena)) { print('i have an Error : ' . $hatena->getMessage()); exit(); } $result = $hatena->execute($data); var_dump($result); ?>
Todo
- テスト、テスト、テスト