はてなダイアリーキーワード自動リンクAPI (2)

以前ここで試したものはスコアとカテゴリを指定できずに惨敗したが、その後これを見つけたので早速試して見た。


要望どおりスコアとカテゴリを指定できるようになったが、なぜか認識しないキーワードがある。
EmEditorはWebではリンクになるが、このスクリプトでは認識しない。hatenaへ質問済み。(11/9:修正済み)

改造済みスクリプトは以下の通り。これをEmEditorで使用するとキーワードが??キーワード??*1になるので、ハイライトさせることができる。

#!/usr/bin/perl -w
use strict;
use XMLRPC::Lite;
use Jcode;
my $rpc = XMLRPC::Lite->new;
$rpc->proxy('http://d.hatena.ne.jp/xmlrpc');
my $filename = shift;
open(FILE, $filename);
my $body = join('', <FILE>);
close(FILE);
$body =~ s/\?\?//ig; # 以前付加したhatenaタグを除去
my $res = $rpc->call(
'hatena.setKeywordLink',
{
body => XMLRPC::Data->type('string',Jcode->new($body,'euc')->utf8),
score => 0,
cname => ['music','web','elec','sports','hatena'],
a_target => '_blank',
a_class => 'keyword',
}
);
if (my $fault = $res->fault){
for (keys %{$fault}){
print "test";
warn $_."=>".$fault->{$_};
}
} else {
$body = $res->result;
$body =~ s/</</ig;
$body =~ s/>/>/ig;
$body =~ s/"/"/ig;
# 以下の全角?は半角?に変更すること
$body =~ s/<a class="keyword".*?>(.*?)<\/a>/??$1??/ig; # aタグのkeywordクラスはhatenaタグに変更
open(NEWFILE, "> $filename");
print NEWFILE Jcode->new($body,'utf8')->euc;
close(NEWFILE);
}

*1:実際は半角?