日記/2007-8-12

最終更新時間:2007年08月12日 10時22分09秒

Amaznode プラグイン

 

 「最新テクノ・ディスク80」をしこしこ打ち込んだときに、「テクノ名盤200+α」と同じTechniqueへのリンクじゃつまらないなあと思い、Amaznodeへのリンクをはるために、FreeStyleWiki用の、Amaznodeプラグインを作ってみました。
 といっても、プラグインと呼ぶのもおこがましい感じの、ホントにリンクをはるだけのものです。
 作っては見たものの、「最新テクノ・ディスク80」からリンクをはっても検索結果がおもしろくない(なんにもでてこないミュージシャンも多い!)ので、結局Techniqueへのリンクにしてしまいました。
 でも、せっかく作ったので、屁みたいなプラグインですが、一応公開しておきます。

使い方

{{amaznode "アルフレッド ベスター",b}}
{{amaznode yanokami,m}}
{{amaznode 驚異,d}}

{{amaznode "アルフレッド ベスター",b}}
{{amaznode yanokami,m}}
{{amaznode 驚異,d}}
 末尾のbとかmとかは商品ジャンルの指定です。

aBlended(すべてのジャンル)
bBooks
mMusic
vVideoGames
sSoftware
dDVD

ダウンロード

ソースコード

 codeプラグインの使い方の練習もかねて、ソースコードを表示してみました。見ていただくとわかるように、ホントに何もしてません。
 59行目の$aidという変数にアマゾンのアフィリエイトIDを入れるといいはずですが、自分がもってないもんで、うまく動くかどうか確かめてません。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
######################################################################
#
# <p>amaznodeで検索</p>
# <pre>
# {{amaznode Phunture,m}}
# </pre>
# <p>
#   word
#   genre
#    a:Blended
#    b:Books
#    m:Music
#    v:VideoGames
#    s:Software
#    d:DVD
# </p>
#
######################################################################
package plugin::amaznode::Amaznode;
use strict;

#=====================================================================
# コンストラクタ
#=====================================================================
sub new {
        my $class = shift;
        my $self = {};
        return bless $self,$class;
}

#=====================================================================
# インラインメソッド
#=====================================================================
sub inline {
  my $self = shift;
  my $wiki = shift;
  my $word = shift;
  my $opt = shift;
  my $cgi = $wiki->get_CGI;

  my %genre = (
    "a" => 'Blended',
    "b" => 'Books',
    "m" => 'Music',
    "v" => 'VideoGames',
    "s" => 'Software',
    "d" => 'DVD',
  );

  if($word eq ""){
      return $wiki->error("検索語が指定されていません。");
   }

  if(($opt eq "") || !(exists($genre{$opt}))){
    $opt = "a";
  }
  $opt = $genre{$opt};

  my $aid = "";
  if ($aid){
    $aid = '&affiliate='.$aid;
  }
  
  my $escape = Util::escapeHTML($word);
  
  return <<"EOD";
<!-- START  -->
<input type="button" value="amaznode $word @ $opt" onClick="window.open('http://amaznode.fladdict.net/#keywords=$word&locale=jp&searchIndex=$opt$aid');return false;"><br>
<!-- END -->
EOD
}
#<a href="http://amaznode.fladdict.net/#keywords=$word&locale=jp&searchIndex=Music&affiliate=xxx" target="_blank">

1;