「埋め込み e-Words: blog.bulknews.net」にて、オンライン IT 用語辞典 "e-Words" が「埋め込み e-Words」なんてのを始めたことを知りました。
「埋め込みe-Words」は、あなたの Web ページに関連する IT 用語リストを表示するプラグインです。埋め込まれたページに含まれる IT 用語の一覧を表示します。各項目をクリックすると、対応する e-Words の解説ページを参照できます。
[IT用語辞典 e-Words : 埋め込み e-Words]
どんな仕組みで用語を表示してんのかなーと調べて見たところ、Referer を見て元ページを取得してるようだったので、これは……ってな感じでちとごにょってみました。以下の Perl モジュールを利用することにより、特定ページに含まれる IT 用語のリストを簡単に取得することができます。ていうか、超テケトウなクラス名にしちゃってるけど、こんなことしていいのかしらん?(w
package WWW::eWords;
use strict;
use LWP::UserAgent;
our $VERSION = 0.02;
sub new {
my $class = shift;
my $ua = LWP::UserAgent->new;
$ua->agent("WWW::eWords/$VERSION");
bless {ua => $ua}, $class;
}
sub get_words {
my ($self, $uri, $encoding) = @_;
my $response = $self->{ua}->get(
"http://e-words.jp/embed.x?t=s&e=$encoding",
Referer => $uri,
);
$response->is_success or die "Request failed: ", $response->code;
my $content = $response->content;
my @words;
while ($content =~ s|<li><a href=\\"(.+?)\\">(.+?)</a></li>||) {
push @words, {
uri => $1,
word => $2,
};
}
return \@words;
}
1;
御覧の通りの短いスクリプトで特に説明することもないのでテケトウに。まずは new して、用語を取得したいページの URI と出力文字コードをわたして get_words したら、用語と URI のハッシュリファレンスの配列リファレンスを返します。それだけ。なんの役に立つかはわかりません。アサマシキーワードとかにでも使うといいかも。あるいは、IT 用語をリストするんじゃなくて、はてなダイアリのキーワードみたいに直接リンクを張るような MT プラグインを作るのも、技術解説系ブログとかだとそれなりに使えたり使えなかったりするかも。あと、出力文字コードの指定ができるはずなのですが、なんかうまくいきません…。うまくいくように直すのも面倒なので、放置です!
?e=param で指定したパラメタを、ちゃんと見てくれてないような気がする…? よくわかりません…。
出力文字コードをある程度自動判別するよう変更しました。元のページのHTMLヘッダに文字コードの指定があれば、パラメータを指定しなくても適切なコードに変換して出力されます
とのことなので、パラメタを見てないんじゃなくて、自動判別してくれてるようです。
…ってな感じでコード投げっぱなしじゃ意味不明だろうからってんで実演 CGI も作ったけど、しかしやっぱりこれはちとおおっぴらにするとマズいだろうな(明らかにサービス提供者の意図に反したことをしてるので…)、というわけで、お蔵入り?。
んでもって、「トイレの落書き」のブタすんが「埋め込みe-Wordsでアサマシってみる」とかゆって、取得した用語を元にアサマシ広告を表示するようにしたら、e-Words からアク禁くらったりして、さらに別ドメインから取得したらそこもまたまたアク禁、そんな感じでいたちごっこが繰り広げられ、そうやってる間にも「IT 用語辞典 e-Words : 埋め込み e-Words」はどんどん機能や項目が追加されていき……なんつーか面白過ぎる…。こうしてリアルタイムで事が進んでいくのは一種、祭り的な楽しさがありますね。いやぁ、面白い(無責任