2006年4月25日

Amazonの商品画像へのリンク作成用 Bookmarklet

 画像へのリンクを簡単につくってくれるBookmarklet(Javascriptのワンポイント・アプリ。お気に入りにいれてつかえる)がほしいなと思って、さがしてみたところ、徒波さんのところでよさそうなものをみつけました。

 うーん、でも、うごいてくれない。
 タイトル文字にリンクをつけてくれる「テキストリンク」は出力されるリンクがちょっとおかしいもののうごくのですが、「画像へのリンク」はまったくうごいてくれません。

 どうやらIE6のBookmarkletには文字数制限があるらしく508文字以内だということ。うーんでも、508文字以内だと思うけどな、と悩みましたが、文字をいくつか削ってみると、あれ、うごく。やっぱり文字数制限にひっかかっているようです。

 さらjに調べていくと、文字数制限をかわす方法がみつかりました。
川o・-・)<2nd life - bookmarkletの文字数制限を無くす
 「createElementでscript要素を作って、その中にソースを指定」する方法です。外部スクリプトの呼び出しで文字数制限を回避するというわけです。
 リンク先ではサーバー上に置いていましたが、ローカルに置くこともできます。たとえば、"http://example.com/example.js"となっているところを"file:///C:/Program%20Files/Fenrir%20%26%20Co/Sleipnir/bookmarklet/example.js"のように書き換えます。

 さっそく変更。それと、商品ページへのリンクがうまくできない場合への対応と、プロンプトでアドレスを返してくるのではなく、クリップボードにアドレスを送るようにしました。

Bookmarklet: A-Img(alt)改


javascript:
var aid='451f-22';
var altimg='http://shimakuma.com/archives/images/noimage.gif';var t=document.title;
var u=document.location.href;
var i=u.search('ail\/-\/|\/ASIN\/|oduct\/|..\/dp\/');
var asin=u.substring(i+6,i+16);
var imglink='<a href="http://www.amazon.co.jp/exec/obidos/ASIN/'+asin+'/'+aid+'/ref=nosim" title="'+t+'"><img src="http://images-jp.amazon.com/images/P/'+asin+'.09.MZZZZZZZ.jpg" alt="'+t+'" onload="if(this.width==\'1\') this.src=(\''+altimg+'\')" /></a>';
clipboardData.setData('text',imglink);
 赤い太文字で示した2行目のaidは自分のアソシエイトIDに変えてください。その下は商品画像がなかった場合に表示する画像のリンクです。自分で用意した画像のリンクに書き換えてください。

 表示例
Amazon.co.jp:新ゲノム 1 メガストアコミックス: 本 Amazon.co.jp:ゲノム 4 (4)カラフルコミックス: 本


変更点
(2006/7/11) 個別商品ページのURLの表記法が変わっていたのでちょっと変更。青い部分をつけくわえました。

(2006/8/31) さらに変更。の部分を追加。URLからASINの部分を切り取っているだけです。ASINの直前の文字列を指定しています。

(2007/1/6) リンクにしているブックマークレットが、エディタに貼って保存すると空白部分が文字化けしてしまうのを修正しました。空白文字や&lt;などは、&nbsp;や&lt;と書き換えないとリンクとしてうまく認識してくれないんだけど、この空白の&nbsp;がくせ者のようです。&nbsp;ではなく&#32;のほうを使うと大丈夫なようなので、そちらに変更しました。

2006年4月 3日

SpamLookupプラグインの基準値の正体

 MT3.2は、自分のサイトのリンクを書き込むだけのコメント/トラックバック・スパムを弾く機能が充実しています。
 でも設定画面をみるとどうしていいかよくわからないんですよね。
 検索してみるとblog.bulknews.netさんの"MT SpamLookup Best Practices"がわかりやすい記事でした。

 いくつか自分で投稿を実験してみてわかったのですが、Keyword Filterは、一行ずつ書いていく方法は英字だとうまくいくんですが、日本語だとひっかけてくれません。でも、"/エッチ/"のように、スラッシュで囲うとちゃんと機能してくれます。(このスラッシュは正規表現のパターンマッチング演算子です。Keyword Filterの例にも"/online-?casino/i"というのが載っていましたよね。パターンマッチングについては KENT WEB のここがくわしいです。?とか正規表現の記号については 【なかま】's HPの"サルにもわかる正規表現入門"がいちばんわかりやすい解説でした)。

 さてそれでもわからないのはプラグイン設定の基準値というやつです。検索してみると、スパムの判定の度合いみたいなことが書かれているけれど、度合いといわれてもどういう基準の度合いなのかよくわかりません。しかし、自分で基準値をいじってためしてみると正体がわかりました。

 プラグインの設定画面にでてくる基準値は、評価の点数なんです。迷惑判定の項目だったらその点数がマイナス点になり、迷惑判定からはずす項目だったらプラス点になります。たとえば、"リンクが含まれていないコメント/トラックバックを「問題のないもの」として処理します "だったら、コメントやトラックバックになんにもリンクに関する記述がなければプラスの点がつけられます。ほかの迷惑判定の項目がマイナスでも、ここのプラス点が高ければ、スパムにならないわけです。
 この基準値はプラグインごとに集計され、総合評価をうけてから最終判断が下されます。どう評価されているかは管理画面でコメント/トラックバックの一覧をみられる場所へ行き、コメント/トラックバックのタイトルをクリックするとその内容の編集画面がでてきますが、そこに表示されます。
その例:
spam-plugin1.gif
 プラグインごとの評価点を合計してプラグインの数で割っています。
 この総合評価の点数のどこからをスパムとするかは、ブログの設定(メインメニューの設定ではない)の迷惑コメント/トラックバック→迷惑コメント/トラックバックの判断基準値で調整できます。(さいしょに「基準値」で検索したときにひっかかった"スパムの判定の度合い"というのはこれのことだったんですね)。なお、プラグインひとつの点数はだいたい-1なので、評価点をいじってない場合、総合の点数の大部分は0から-1の小さな範囲におさまるので判断基準値をずらしただけではスパム判定の結果は変わってきません(重要)。

 スパム対策プラグインの組みあわせとその設定、配点を、実際の振り分けの状態をみながら調整していけば強力にスパム排除ができそうです。