2006年04月24日

それPlaggerでもできるよ


- module: Subscription::YahooJ
config:
results: 10
keyword:
- plagger
- dankogai
- naoya
Plagger::Plugin::Subscription::YahooJYahooJ::Searchを入れてね。
YahooJ::Searchのref1:YappoLogs: YahooJ::Search - Yahoo!デベロッパーネットワークAPIを叩くモジュールを作った
YahooJ::Searchのref2:YappoLogs: YahooJ::Search 0.02 Released


経緯とかは下のURLで。自分はめんどくさいから斜め読みしかしてないけど。
無精で短気で傲慢なプログラマ | 続・これ、読みやすいの?
404 Blog Not Found:perl - even more best practices
naoyaのはてなダイアリー - 勝手に添削 - WEB DB Press Vol.32 オレオレコード版


ついでにdanさんのコードをYahooJ::Search使うように書き換えてみた。
めんどくさいからロジックはコピペ。
#!/usr/bin/perl -T
use strict;
use warnings;
use CGI;
use Encode qw/encode_utf8/; # to drop utf8 flag from YahooJ::Search
use Readonly;
use YahooJ::Search;

Readonly my $MAX_RESULTS => 10;
Readonly my $MYYDN_APPID => 'YahooDemo';
my $q = CGI->new;

sub search_result{
my $q = shift;
return unless $q->param("query");

my $response = YahooJ::Search->Query( METHOD => 'Web',
appid => $MYYDN_APPID,
query => $q->param("query"),
results => $MAX_RESULTS);
return $response->error_msg if $response->error_msg;

my @result = ($response->totalResultsAvailable, "hits");
push @result, "<ol>";
for my $r ( $response->Results ){
push
@result,
encode_utf8(sprintf qq(<li><a href="%s">%s</a></li>),
$r->{'ClickUrl'}, $r->{'Title'});
}
push @result, "</ol>";
return @result;
}

print
$q->header(-charset => 'UTF-8'),
$q->start_html(-lang=> 'ja', -title=>$ENV{SCRIPT_NAME}, -encoding=>'UTF-8'),
$q->start_form(),
$q->textfield("query"),
$q->submit(-value=>"search"),
$q->end_form(),
search_result($q),
$q->end_html();

ほとんど変らNeeeeeeeeeeeeeeee!


何がすばらしいというとXML周りの処理が隠蔽された事。
naoyaさんの
検索周りのロジックは別モジュールに切り出してすっきりさせる。
モジュールは OO インタフェースにする
ってあたりが自然と実践できる感じ。




もうめんどくさいから〆ると
  • YahooJ::Searchがカテゴリ検索に対応したよ!

  • オークション対応と、少しリファクタリングしたらYahooJ::SearchをCPANにうpするよ!

  • はてブ
    2005年12月07日 naoya yahoo, perl, cpan Yahoo::Search との互換性とか考えなくていいんかな
    言われた江戸、Y!とY!Jは会社違うしなんかAPI仕様も違くてめんどくさいから強行うpするよ!

  • これよりきれいなリファクタリングはAcme::Oppaiで実現できるはずだよ!

  • なんか「傲慢」ってフレーズがよく出てきた気がするから「怠慢」してみたよ



  • Yappo the 'insupaiya' master.

    Posted by Yappo at 2006年04月24日 20:10 | TrackBack | Perl
    Comments
    Post a comment









    Remember personal info?






    コメントを投稿する前に↓の場所にnospamと入力してください。