Both sides previous revisionPrevious revisionNext revision | Previous revision |
jp:popfilemodules:xmlrpc [2007/05/23 19:38] – amatubu | jp:popfilemodules:xmlrpc [2009/09/25 18:11] (current) – external edit 127.0.0.1 |
---|
| |
===== サンプルコード ===== | ===== サンプルコード ===== |
| |
| |
==== 簡単な例 ==== | ==== 簡単な例 ==== |
=== Perl の例 1 === | === Perl の例 1 === |
<code> | <code perl> |
use strict; | use strict; |
use XMLRPC::Lite; | use XMLRPC::Lite; |
| |
=== Python の例 1 === | === Python の例 1 === |
<code> | <code python> |
from xmlrpclib import ServerProxy | from xmlrpclib import ServerProxy |
POPFile = ServerProxy("http://localhost:8081") | POPFile = ServerProxy("http://localhost:8081") |
| |
=== Delphi の例 === | === Delphi の例 === |
<code> | <code delphi> |
program popdelphi; | program popdelphi; |
{$APPTYPE CONSOLE} | {$APPTYPE CONSOLE} |
| |
=== NSBasic/CE for Windows CE Example === | === NSBasic/CE for Windows CE Example === |
<code> | <code nsbasic> |
AddObject "PocketXMLRPC.Factory","xmlrpc" | AddObject "PocketXMLRPC.Factory","xmlrpc" |
Set popfile = xmlrpc.proxy("http://192.168.200.1:8081/RPC2","POPFile/API.") | Set popfile = xmlrpc.proxy("http://192.168.200.1:8081/RPC2","POPFile/API.") |
| |
この実装では、 [[http://www.nsbasic.com/ce/| NS Basic/CE for Windows CE]] を使用しています。 | この実装では、 [[http://www.nsbasic.com/ce/| NS Basic/CE for Windows CE]] を使用しています。 |
[[http://www.pocketsoap.com/pocketHTTP/| **PocketHTTP**]] と [[http://www.pocketsoap.com/pocketXMLRPC/| **PocketXML-RPC**]] COM コンポーネントも必要になります。 | [[http://www.pocketsoap.com/pocketHTTP/| PocketHTTP]] と [[http://www.pocketsoap.com/pocketXMLRPC/| PocketXML-RPC]] COM コンポーネントも必要になります。 |
| |
覚えておきましょう、ここでは、localhost にアクセスしているのではなく、POPFile をインストールしたのとは別のマシンを使用しています。そのため、モバイルマシンが、POPFile が稼働しているマシンの有効なネットワーク IPアドレスをさす必要があります。上記の例では、192.168.200.1 が POPFile が稼働しているあなたのデスクトップ PC のIP アドレスです。あなたのモバイルマシンが ブルートゥースや無線LANを経由して、XMLRPC インターフェースにアクセスすることになります。 | 覚えておきましょう、ここでは、localhost にアクセスしているのではなく、POPFile をインストールしたのとは別のマシンを使用しています。そのため、モバイルマシンが、POPFile が稼働しているマシンの有効なネットワーク IPアドレスをさす必要があります。上記の例では、192.168.200.1 が POPFile が稼働しているあなたのデスクトップ PC のIP アドレスです。あなたのモバイルマシンが ブルートゥースや無線LANを経由して、XMLRPC インターフェースにアクセスすることになります。 |
==== 応用例 ==== | ==== 応用例 ==== |
=== Perl の応用例 1 (もっと複雑なエラーチェック) === | === Perl の応用例 1 (もっと複雑なエラーチェック) === |
<code> | <code perl> |
use strict; | use strict; |
use XMLRPC::Lite; | use XMLRPC::Lite; |
=== 応用例 2 ==== | === 応用例 2 ==== |
pipe.pl を XMLRPC のクライアントとして実装します。 | pipe.pl を XMLRPC のクライアントとして実装します。 |
<code> | <code perl> |
-!/usr/bin/perl | #!/usr/bin/perl |
use strict; | use strict; |
use XMLRPC::Lite; | use XMLRPC::Lite; |
| |
- 安全な一時ファイルを使用したいのですが、このスクリプトはふつうひとりのユーザとして動くでしょう | # 安全な一時ファイルを使用したいのですが、このスクリプトはふつうひとりのユーザとして動くでしょう |
use File::Temp qw/tempfile tempdir/; | use File::Temp qw/tempfile tempdir/; |
| |
- アクセスすることができるフォルダはスクリプトが終了したときに削除されるでしょう | # アクセスすることができるフォルダはスクリプトが終了したときに削除されるでしょう |
my $temp_dir = tempdir( CLEANUP => 1); | my $temp_dir = tempdir( CLEANUP => 1); |
| |
- フルパスが指定された一時ファイル | # フルパスが指定された一時ファイル |
my ($fh_in, $filename_in) = tempfile('popfileinXXXXXXX', SUFFIX => ".msg", UNLINK => 1 , DIR => $temp_dir); | my ($fh_in, $filename_in) = tempfile('popfileinXXXXXXX', SUFFIX => ".msg", UNLINK => 1 , DIR => $temp_dir); |
| |
- パイプとして動くため、標準入力 (STDIN) から読み込みます | # パイプとして動くため、標準入力 (STDIN) から読み込みます |
while (<STDIN>) { | while (<STDIN>) { |
print $fh_in $_; | print $fh_in $_; |
} | } |
| |
- POPFile は、ファイルが閉じられていることを前提とします | # POPFile は、ファイルが閉じられていることを前提とします |
close $fh_in; | close $fh_in; |
| |
- 安全な出力ファイルを作成します | # 安全な出力ファイルを作成します |
my ($fh_out, $filename_out) = tempfile('popfileoutXXXXXXX', SUFFIX => ".msg", UNLINK => 1, DIR => $temp_dir); | my ($fh_out, $filename_out) = tempfile('popfileoutXXXXXXX', SUFFIX => ".msg", UNLINK => 1, DIR => $temp_dir); |
| |
- XMLRPC のプロキシ | # XMLRPC のプロキシ |
my $xmlrpc = XMLRPC::Lite ->proxy('http://localhost:8086/RPC2'); | my $xmlrpc = XMLRPC::Lite ->proxy('http://localhost:8086/RPC2'); |
| |
- POPFile に挨拶して、セッションキーを取得します | # POPFile に挨拶して、セッションキーを取得します |
my $sk = $xmlrpc-> call('POPFile/API.get_session_key','admin',//) | my $sk = $xmlrpc-> call('POPFile/API.get_session_key','admin',//) |
-> result; | -> result; |
| |
- ここで仕事をします | # ここで仕事をします |
$xmlrpc-> call('POPFile/API.handle_message',$sk,$filename_in,$filename_out) | $xmlrpc-> call('POPFile/API.handle_message',$sk,$filename_in,$filename_out) |
-> result; | -> result; |
| |
- POPFile にお別れをします | # POPFile にお別れをします |
$xmlrpc-> call('POPFile/API.release_session_key',$sk); | $xmlrpc-> call('POPFile/API.release_session_key',$sk); |
| |
- パイプとして動くために、標準出力 (STDOUT) に書き込みます | # パイプとして動くために、標準出力 (STDOUT) に書き込みます |
while (<$fh_out>) { | while (<$fh_out>) { |
print $_; | print $_; |
} | } |
| |
- 終了します。File::Temp が(一時ファイルを)片付けてくれます | # 終了します。File::Temp が(一時ファイルを)片付けてくれます |
exit(0); | exit(0); |
| |
| |
||**サブルーチン名**||**使用方法**|| | ||**サブルーチン名**||**使用方法**|| |
||get_session_key||<code>call('POPFile/API.get_session_key','admin',//)</code> セッションキーを返します|| | ||get_session_key||<code>call('POPFile/API.get_session_key', 'admin', '')</code> セッションキーを返します|| |
||release_session_key||<code>call('POPFile/API.release_session_key','session_key')</code> セッションキーを解放します || | ||release_session_key||<code>call('POPFile/API.release_session_key', 'session_key')</code> セッションキーを解放します || |
||classify ||<code>call('POPFile/API.classify', 'session_key', 'filename')</code> バケツ名を返します。ファイル名(filename)は **POPFile が起動しているマシンの** popfile ディレクトリに存在しなければいけない(あるいはフルパスが指定されなくてはいけません)ことに注意してください。|| | ||classify ||<code>call('POPFile/API.classify', 'session_key', 'filename')</code> バケツ名を返します。ファイル名(filename)は **POPFile が起動しているマシンの** popfile ディレクトリに存在しなければいけない(あるいはフルパスが指定されなくてはいけない)ことに注意してください。|| |
||classify_and_modify||**ファイルハンドルを必要とするため、XmlRpc では動作しません。代わりに handle_message を使用してください。**|| | ||classify_and_modify||**ファイルハンドルを必要とするため、XmlRpc では動作しません。代わりに handle_message を使用してください。**|| |
||handle_message||<code>call('POPFile/API.handle_message', 'session_key', 'inputfilename', 'outputfilename')</code> バケツ名を返します。classify に似ていますが、POPFile の履歴にメッセージを追加し、POPFile の追加ヘッダとともにメッセージを出力ファイルに書き込みます。**この命令には既知の問題がありますので注意してください。現在のところ、処理するメッセージの最後に . と 0x0d0a を追加します。**|| | ||handle_message||<code>call('POPFile/API.handle_message', 'session_key', 'inputfilename', 'outputfilename')</code> バケツ名を返します。classify に似ていますが、POPFile の履歴にメッセージを追加し、POPFile の追加ヘッダとともにメッセージを出力ファイルに書き込みます。**この命令には既知の問題がありますので注意してください。現在のところ、出力するメッセージの最後に . と 0x0d0a を追加します。**|| |
||get_buckets ||<code>call('POPFile/API.get_buckets','session_key')</code> バケツ名の配列を返します || | ||get_buckets ||<code>call('POPFile/API.get_buckets', 'session_key')</code> バケツ名の配列を返します (「unclassified」バケツを除く) || |
| ||get_pseudo_buckets ||<code>call('POPFile/API.get_pseudo_buckets', 'session_key')</code> 疑似バケツの名前の配列を返します (「unclassified」バケツ) || |
| ||get_all_buckets ||<code>call('POPFile/API.get_all_buckets', 'session_key')</code> すべてのバケツの名前の配列を返します (「unclassified」バケツを含む) || |
| ||is_bucket ||<code>call('POPFile/API.is_bucket','session_key', 'bucketname')</code> バケツが存在する場合 1 を返し、存在しない場合、あるいはバケツが疑似バケツ (「unclassified」バケツ) の場合 0 を返します || |
| ||is_pseudo_bucket ||<code>call('POPFile/API.is_pseudo_bucket', 'session_key', 'bucketname')</code> バケツが存在し、かつ疑似バケツ (「unclassified」バケツ) である場合 1 を返し、バケツが存在しない、あるいはバケツが疑似バケツでない場合 0 を返します || |
||get_bucket_word_count ||<code>call('POPFile/API.get_bucket_word_count', 'session_key', 'bucketname')</code> (指定された)バケツの単語数を返します|| | ||get_bucket_word_count ||<code>call('POPFile/API.get_bucket_word_count', 'session_key', 'bucketname')</code> (指定された)バケツの単語数を返します|| |
||get_bucket_word_list||<code>call('POPFile/API.get_bucket_word_list', 'session_key', 'bucketname')</code> (指定された)バケツに含まれる単語の配列を返します|| | ||get_bucket_word_list||<code>call('POPFile/API.get_bucket_word_list', 'session_key', 'bucketname')</code> (指定された)バケツに含まれる単語の配列を返します|| |
||get_word_count ||<code>call('POPFile/API.get_word_count','session_key')</code> すべてのバケツに含まれる単語数の合計を返します|| | ||get_bucket_word_prefixes||<code>call('POPFile/API.get_bucket_word_prefixes', 'session_key', 'bucketname')</code> (指定された)バケツに含まれる単語の頭文字の配列を返します|| |
| ||get_count_for_word||<code>call('POPFile/API.get_count_for_word', 'session_key', 'bucketname', 'someword')</code> (指定された)バケツに含まれる (指定された) 単語の数を返します|| |
| ||get_word_count ||<code>call('POPFile/API.get_word_count', 'session_key')</code> すべてのバケツに含まれる単語数の合計を返します|| |
||get_bucket_unique_count||<code>call('POPFile/API.get_bucket_unique_count', 'session_key', 'bucketname')</code> (指定された)バケツに含まれる固有単語数を返します|| | ||get_bucket_unique_count||<code>call('POPFile/API.get_bucket_unique_count', 'session_key', 'bucketname')</code> (指定された)バケツに含まれる固有単語数を返します|| |
||get_bucket_color||<code>call('POPFile/API.get_bucket_color', 'session_key', 'bucketname')</code> (指定されたバケツの)色を文字列で返します|| | ||get_bucket_color||<code>call('POPFile/API.get_bucket_color', 'session_key', 'bucketname')</code> (指定されたバケツの)色を文字列で返します **注意: この API の使用は推奨されません。代わりに get_bucket_parameter に「color」パラメータをつけて使用してください**|| |
||set_bucket_color||<code>call('POPFile/API.set_bucket_color', 'session_key', 'bucketname', 'colorstring')</code> (指定されたバケツの)色を設定し、文字列で返します|| | ||set_bucket_color||<code>call('POPFile/API.set_bucket_color', 'session_key', 'bucketname', 'colorstring')</code> (指定されたバケツの)色を設定します。成功すれば 1 を返します。**注意: この API の使用は推奨されません。代わりに set_bucket_parameter に「color」パラメータをつけて使用してください**|| |
||get_bucket_parameter||<code>call('POPFile/API.get_bucket_parameter', 'session_key', 'bucketname', 'parameter')</code> (指定されたバケツの)パラメータの値を返します。パラメータは //count//、//fpcount//、//fncount// のいずれかひとつです|| | ||get_bucket_parameter||<code>call('POPFile/API.get_bucket_parameter', 'session_key', 'bucketname', 'parameter')</code> (指定されたバケツの)パラメータの値を返します。パラメータは //count// (分類数)、//fpcount// (誤検出)、//fncount// (見逃し)、//subject// (件名の変更)、//xtc// (X-Text-Classification ヘッダ)、//xpl// (X-POPFile-Link ヘッダ)、//quarantine// (隔離)、//color// (バケツの色) のいずれかひとつです|| |
||set_bucket_parameter||<code>call('POPFile/API.set_bucket_parameter', 'session_key', 'bucketname', 'parameter', 'value')</code> (指定されたバケツの)パラメータの値を設定します。**なにも返しません**。パラメータは //count//、//fpcount//、//fncount// のいずれかひとつです || | ||set_bucket_parameter||<code>call('POPFile/API.set_bucket_parameter', 'session_key', 'bucketname', 'parameter', 'value')</code> (指定されたバケツの)パラメータの値を設定します。**成功すれば 1 を返します**。パラメータは //count// (分類数)、//fpcount// (誤検出)、//fncount// (見逃し)、//subject// (件名の変更)、//xtc// (X-Text-Classification ヘッダ)、//xpl// (X-POPFile-Link ヘッダ)、//quarantine// (隔離)、//color// (バケツの色) のいずれかひとつです|| |
||get_html_colored_message||**注意: get_html_colored_message は間違って 0.22 で削除されてしまいましたが、0.22.1 では戻っています。** <code>call('POPFile/API.get_html_colored_message', 'session_key', 'filename')</code> 色を付けたメッセージを含んだ文字列が返ります。ファイル名(filename)は popfile ディレクトリに存在するか、フルパスが指定される必要があることに注意してください|| | ||get_html_colored_message||**注意: get_html_colored_message は間違って 0.22 で削除されてしまいましたが、0.22.1 では戻っています。** <code>call('POPFile/API.get_html_colored_message', 'session_key', 'filename')</code> 色を付けたメッセージを含んだ文字列が返ります。ファイル名(filename)は popfile ディレクトリに存在するか、フルパスが指定される必要があることに注意してください|| |
||create_bucket||<code>call('POPFile/API.create_bucket', 'session_key', 'bucketname')</code> **なにも返しません**|| | ||create_bucket||<code>call('POPFile/API.create_bucket', 'session_key', 'bucketname')</code> 成功すれば 1 を返します|| |
||delete_bucket||<code>call('POPFile/API.delete_bucket', 'session_key', 'bucketname')</code> **常に 1 を返します**|| | ||delete_bucket||<code>call('POPFile/API.delete_bucket', 'session_key', 'bucketname')</code> 成功すれば 1 を返します。「unclassified」バケツを削除することはできないことに注意してください|| |
||rename_bucket||<code>call('POPFile/API.rename_bucket', 'session_key', 'bucketname', 'newname')</code> 失敗したら 0 を、成功したら 1 を返します|| | ||rename_bucket||<code>call('POPFile/API.rename_bucket', 'session_key', 'bucketname', 'newname')</code> 失敗したら 0 を、成功したら 1 を返します|| |
||add_message_to_bucket||<code>call('POPFile/API.add_message_to_bucket', 'session_key', 'bucketname', 'filename')</code> 失敗したら 0 を、成功したら 1 を返します。ファイル名(filename)は popfile ディレクトリに存在するか、フルパスが指定される必要があることに注意してください。|| | ||add_message_to_bucket||<code>call('POPFile/API.add_message_to_bucket', 'session_key', 'bucketname', 'filename')</code> メールファイルを用いて POPFile を鍛えます(メールファイルを指定されたバケツに再分類します)。失敗したら 0 を、成功したら 1 を返します。ファイル名(filename)は popfile ディレクトリに存在するか、フルパスが指定される必要があることに注意してください|| |
||remove_message_from_bucket ||<code>call('POPFile/API.remove_message_from_bucket', 'session_key', 'bucketname', 'filename')</code> 失敗したら 0 を、成功したら 1 を返します。ファイル名(filename)は popfile ディレクトリに存在するか、フルパスが指定される必要があることに注意してください|| | ||add_messages_to_bucket||<code>call('POPFile/API.add_messages_to_bucket', 'session_key', 'bucketname', 'filelist')</code> 複数のメールファイルを用いて POPFile を鍛えます(メールファイルを指定されたバケツに再分類します)。失敗したら 0 を、成功したら 1 を返します。ファイル(filelist)は popfile ディレクトリに存在するか、フルパスが指定される必要があることに注意してください|| |
||get_buckets_with_magnets ||<code>call('POPFile/API.get_buckets_with_magnets', 'session_key',)</code> バケツ名とマグネットの配列を返します || | ||remove_message_from_bucket ||<code>call('POPFile/API.remove_message_from_bucket', 'session_key', 'bucketname', 'filename')</code> POPFile のトレーニングを取り消します。失敗したら 0 を、成功したら 1 を返します。ファイル名(filename)は popfile ディレクトリに存在するか、フルパスが指定される必要があることに注意してください|| |
| ||magnet_count ||<code>call('POPFile/API.magnet_count', 'session_key',)</code> すべてのバケツに登録されているマグネットの数の合計を返します || |
| ||get_buckets_with_magnets ||<code>call('POPFile/API.get_buckets_with_magnets', 'session_key')</code> いずれかのマグネットに関連づけられたバケツ名の配列を返します || |
||get_magnet_types_in_bucket ||<code>call('POPFile/API.get_magnet_types_in_bucket', 'session_key', 'bucketname')</code> (指定された)バケツに対するマグネットタイプの配列を返します || | ||get_magnet_types_in_bucket ||<code>call('POPFile/API.get_magnet_types_in_bucket', 'session_key', 'bucketname')</code> (指定された)バケツに対するマグネットタイプの配列を返します || |
||clear_bucket||<code>call('POPFile/API.clear_bucket', 'session_key', 'bucketname')</code> バケツを空にします。**なにも返しません**|| | ||clear_bucket||<code>call('POPFile/API.clear_bucket', 'session_key', 'bucketname')</code> バケツを空にします。成功すれば 1 を返します|| |
||clear_magnets||<code>call('POPFile/API.clear_magnets','session_key',)</code> **なにも返しません**|| | ||clear_magnets||<code>call('POPFile/API.clear_magnets','session_key')</code> すべてのマグネットを削除します。成功すれば 1 を返します|| |
||get_magnets||<code>call('POPFile/API.get_magnets', 'session_key', 'bucketname','type')</code> (指定された)バケツについて特定のタイプのマグネットの配列を返します || | ||get_magnets||<code>call('POPFile/API.get_magnets', 'session_key', 'bucketname','type')</code> (指定された)バケツについて特定のタイプのマグネットの配列を返します || |
||create_magnet||<code>call('POPFile/API.create_magnet', 'session_key', 'bucketname', 'magnettype','magnetvalue')</code> **なにも返しません**|| | ||create_magnet||<code>call('POPFile/API.create_magnet', 'session_key', 'bucketname', 'magnettype', 'magnetvalue')</code> 新しいマグネットを作成します。成功すれば 1 を返します|| |
||get_magnet_types||<code>call('POPFile/API.get_magnet_types','session_key')</code> POPFile がサポートしているマグネットタイプの配列を返します|| | ||get_magnet_types||<code>call('POPFile/API.get_magnet_types', 'session_key')</code> POPFile がサポートしているマグネットタイプとメールヘッダのハッシュリストを返します|| |
||delete_magnet||<code>call('POPFile/API.delete_magnet', 'session_key', 'bucketname', 'magnettype','magnetvalue')</code> **なにも返しません**|| | ||delete_magnet||<code>call('POPFile/API.delete_magnet', 'session_key', 'bucketname', 'magnettype', 'magnetvalue')</code> マグネットを削除します。成功すれば 1 を返します|| |
||get_stopword_list||<code>call('POPFile/API.get_stopword_list','session_key')</code> 無視する文字列(stop words)の配列を返します || | ||get_stopword_list||<code>call('POPFile/API.get_stopword_list', 'session_key')</code> 無視する単語(stop words)の配列を返します || |
||add_stopword||<code>call('POPFile/API.add_stopword', 'session_key', 'mystopword')</code> 失敗したら 0 を、成功したら 1 を返します|| | ||add_stopword||<code>call('POPFile/API.add_stopword', 'session_key', 'mystopword')</code> 無視する単語リストに新しい単語を追加します。失敗したら 0 を、成功したら 1 を返します|| |
||remove_stopword||<code>call('POPFile/API.remove_stopword', 'session_key', 'mystopword')</code> 失敗したら 0 を、成功したら 1 を返します|| | ||remove_stopword||<code>call('POPFile/API.remove_stopword', 'session_key', 'mystopword')</code> 無視する単語リストから指定した単語を削除します。失敗したら 0 を、成功したら 1 を返します|| |
| |
注意: 上記の API の呼び出しにおいて、'session_key' は get_session_key API で取得することができるキーを使用します。 | 注意: 上記の API の呼び出しにおいて、'session_key' は get_session_key API で取得することができるキーを使用します。 |
| |
POPFile の古いバージョンでは、"Classifier/Bayes" を "POPFile/API" と読み替えてください。 | POPFile の古いバージョンでは、"Classifier/Bayes" を "POPFile/API" の代わりに使用してください。 |
| |
[[POPFileModules:XmlRpc | 原文]] | [[POPFileModules:XmlRpc | 原文]] |
| |