#!/usr/local/bin/perl -T use strict; use warnings; use Encode; use CGI; use LWP::Simple; use XML::Simple; use HTML::Template; use URI::Escape; use XMLRPC::Lite; use utf8; binmode STDOUT, ":utf8"; my $q = new CGI; my $key = $q->param('q') || ""; my $sr_ref = yapi({key => $key, add => " site:chalow.net"}); if (@$sr_ref) { @$sr_ref = grep $_->{url} =~ /(\d{4}-\d\d-\d\d-\d.html|nikki.+html)$/, @$sr_ref; } if (@$sr_ref) { our $EndPoint = 'http://b.hatena.ne.jp/xmlrpc'; my @urls = map {$_->{url}} @$sr_ref; my %oldurl; foreach my $u (@urls) { my $ou = $u; $oldurl{$u} = $ou if $ou =~ s{^http://.+/(\d{4}-\d\d-\d\d-\d+.html)$}{http://nais.to/~yto/clog/$1} } my $map = XMLRPC::Lite ->proxy($EndPoint) ->call('bookmark.getCount', @urls) ->result; my $map2 = XMLRPC::Lite ->proxy($EndPoint) ->call('bookmark.getCount', values %oldurl) ->result; my $rank = 1; foreach my $i (@$sr_ref) { $i->{rank} = $rank++; next if not exists $map->{$i->{url}}; my $num = $map->{$i->{url}} || 0; my $onum = $map2->{$oldurl{$i->{url}}} if $oldurl{$i->{url}}; if ($onum) { $i->{oldurl} = $oldurl{$i->{url}}; $i->{onumicon} = sprintf("http://b.hatena.ne.jp/images/users/normal/%05d.png", $onum); $num += $onum; } $i->{numicon} = sprintf("http://b.hatena.ne.jp/images/users/normal/%05d.png", $num); $i->{num} = $num; } @$sr_ref = sort {$b->{num} <=> $a->{num} || $a->{rank} <=> $b->{rank}} @$sr_ref; } my $template = join("", ); my $t = HTML::Template->new(scalarref => \$template, die_on_bad_params => 0); $t->param(key => decode('utf-8', $key)); $t->param(results => $sr_ref); print $q->header(-charset => 'UTF-8'), $t->output(); sub yapi { my ($args_ref) = @_; my $key = $args_ref->{key}; my $add = $args_ref->{add} || ""; return [] unless $key; my $ec = URI::Escape::uri_escape($key.$add); my $url = "http://boss.yahooapis.com/ysearch/web/v1/$ec?" ."appid=gt33JKTV34FKDv3AXuxs6ZC8prX.uGFZKZnOa3CqrH9dMpgz2HAVEqIoZ3vv2URI27IEDg--&" ."format=xml&count=50&lang=jp®ion=jp"; my $response = get($url); my $xmlsimple = XML::Simple->new(ForceArray => [ 'result' ]); my $xml = $xmlsimple->XMLin($response); return [] unless $xml->{resultset_web}->{result}; return $xml->{resultset_web}->{result}; } __DATA__ たつを検索はてブ順<TMPL_IF name=key> - <TMPL_VAR name=key></TMPL_IF>

たつを検索はてブ順 -

()
Yahoo! Search BOSS - YDN