Hatena::ブログ(Diary)

はてなダイアリー日記 このページをアンテナに追加 RSSフィード

使い方に関するご質問、不具合報告やご要望は、お問い合わせ窓口で承ります。
使い方のコツなどを知りたい時は、人力検索はてなの「はてなの使い方」カテゴリーをご利用ください。
※コメント欄へのご質問には対応できない場合がございますのでご了承ください。

2004/06/15

はてなダイアリーキーワード自動リンクAPIの公開について

16:48

本日、任意のテキストを送信すると、はてなダイアリーキーワードを抽出し、キーワード部分を自動的にリンクして返信するAPIを公開しました。

APIXML-RPC APIを用いて実装を行っており、メソッド名および指定可能な各属性は、以下の通りです。

uri
http://d.hatena.ne.jp/xmlrpc
encoding
utf8
methodName
hatena.setKeywordLink
parameters
以下を参照
  • body(string): キーワードを抽出するテキストを指定します。
  • score(int): 0〜50。キーワードスコアしきい値を指定します。指定された値よりもスコアが大きいキーワードのみが抽出されます。
  • cname(array): キーワードのカテゴリーを指定します。指定があった場合、「一般」と指定されたカテゴリーのキーワードが抽出されます。指定が無かった場合は、全カテゴリーとなります。book,music,movie,web,elec,animal,anime,food,sports,game,comic,hatena,clubが指定可能です。
  • a_target(string): アンカー(a)タグのtarget属性値を指定します。例:_blank
  • a_class(string): アンカー(a)タグのclass属性値を指定します。例:keyword

このAPIを用いてやり取りを行った場合のサンプルは以下のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
   <methodName>hatena.setKeywordLink</methodName>
   <params>
     <param>
        <value>
          <struct>
             <member>
               <name>body</name>
               <value>はてなダイアリーキーワードリンクして!</value>
             </member>
             <member>
               <name>score</name>
               <value><i4>20</i4></value>
             </member>
             <member>
               <name>cname</name>
               <value>
                 <array>
                   <data>
                     <value><string>book</string></value>
                     <value><string>movie</string></value>
                   </data>
                 </array>
               </value>
             </member>
             <member>
               <name>target</name>
               <value>_blank</value>
             </member>
             <member>
               <name>class</name>
               <value>keyword</value>
             </member>
          </struct>
        </value>
     </param>
   </params>
</methodCall>
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
  <params>
    <param>
      <value>
        <string><a href="http://d.hatena.ne.jp/keyword/%a4%cf%a4%c6%a4%ca%a5%c0%a5%a4%a5%a2%a5%ea%a1%bc">はてなダイアリー</a>の<a href="http://d.hatena.ne.jp/keyword/%a5%ad%a1%bc%a5%ef%a1%bc%a5%c9">キーワード</a>をリンクして!</string>
      </value>
    </param>
  </params>
</methodResponse>

サンプルプログラム

17:18

外部アプリケーションにおいて、あるテキストに対してキーワードの自動リンク処理を行う場合のPerlサンプルスクリプトは以下のようになります。

#!/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 $body = 'はてなダイアリーキーワードリンクして!';
my $res = $rpc->call(
  'hatena.setKeywordLink',
  {
    body => XMLRPC::Data->type('string',Jcode->new($body,'euc')->utf8),
    score => 20,
    cname => ['book','movie'],
    a_target => '_blank',
    a_class => 'keyword',
  }
);
if (my $fault = $res->fault){
  for (keys %{$fault}){
    warn $_."=>".$fault->{$_};
  }
} else {
  $body = $res->result;
  $body =~ s/&lt;/</ig;
  $body =~ s/&gt;/>/ig;
  $body =~ s/&quote;/"/ig;
  print Jcode->new($body,'utf8')->euc;
}

naka64naka64 2004/06/15 22:29 http://d.hatena.ne.jp/keyword/%bb%a6%bf%cd%b5%b4?kid=49140&mode=edit ですが、appendの記録が落ちています。何らかの補綴が必要ではないでしょうか。

naka64naka64 2004/06/16 04:38 http://d.hatena.ne.jp/keyword/%c2%e7%b0%e6%c0%ee%ef%c4%c6%bb?kid=49157&mode=edit も同じです。

hatenadiaryhatenadiary 2004/06/16 11:13 naka64さん、ご指摘有難うございます。現在、調査、修正作業中です。

ys_yys_y 2004/06/16 11:24 parameters は struct が正しいのではないでしょうか?あとa_class(stding)という誤字が。

cider_kondocider_kondo 2004/06/16 12:09 「http://d.hatena.ne.jp/keyword/%ca%d1」何らかのバグでしょうか? 編集すると消えるのですが、かなりあるようなので管理側で一括処理できるのであればお任せします。

ys_yys_y 2004/06/16 13:09 補足するとparameters は struct で、struct の要素が body というのが正しい説明ではないかと思うのですがいかがでしょうか。

eiji8poueiji8pou 2004/06/17 14:23 XMLRPC::Riteモジュールを使わず、インストール作業が不要なPerlのサンプルモジュールを作ってみました。皆さん、ご意見ください。