検索結果のページからFirefoxの検索プラグインを生成するブックマークレット/スマートキーワード

検索結果のページからFirefoxの検索プラグイン*1を生成するブックマークレットです。
ブックマークレットとしても、スマートキーワードとしても使えるようにしています。


↓の1行コードをブックマークに登録して使います。*2

javascript:(function(){ var s = '%s'; var name; var template = location.href; var encoding = document.characterSet || document.charset; if (s.match(/http:\/\//)) { [template, name, encoding] = s.split(/; ?/); } else if (s && !(s.match(/^[%]s$/))) { name = s; } else { name = document.title.replace(/%25s|%2525s/, '').replace(/ [-|/:]{1,2} /, ''); } template = template.replace(/%25s|%2525s/, '{searchTerms}').replace('&', '&amp;'); var re_charset = /^(UTF-8|Shift_JIS|EUC-JP|ISO-2022-JP)$/i; var re_template = /^http:\/\//; if (name.match(re_charset)) { [name, encoding] = [encoding, name]; } if (name.match(re_template)) { [name, template] = [template, name]; } if (encoding.match(re_template)) { [encoding, template] = [template, encoding]; } if (template.match(re_charset)) { [encoding, template] = [template, encoding]; } var filename = name.replace(/[^-a-zA-Z0-9_.()]/g, '').replace(/^[  ]*|[  ]*$/, '').toLowerCase() + '_os.xml'; var text = ('<?xml version="1.0" encoding="UTF-8"?>\n<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/">\n <ShortName>' + name + '</ShortName>\n <Description>' + name + '</Description>\n <InputEncoding>' + encoding + '</InputEncoding>\n <Url type="text/html" method="GET" template=' + template + '" />\n</OpenSearchDescription>'); document.write( '<html><head><title>SearchPlugin Maker</title></head><body></p><a href="' + 'data:application/octet-stream,' + encodeURIComponent(text) + '">' + filename + '</a></p><pre>' + text.replace(/</g, '&lt;').replace(/>/g, '&gt;') + '</pre></body></html>' ); })();

ブックマークレットとしての使い方

検索プラグインを作りたいサーチエンジンで %s で検索します。
そして、検索プラグイン生成のブックマークを選ぶと、検索プラグインファイルのリンクが表示されるので、
Altキー または option キーを押しながらクリックしてダウンロードします。

この使い方の場合、サーチエンジン名は自動生成なので、適切な名前が設定されない場合があります。
(ダウンロードしたファイルをテキストエディタ*3で編集すれば変更できます。)

スマートキーワードとしての使い方

↑のコードを登録したブックマークにキーワードを設定します。(たとえば sp)
検索プラグインを作りたいサーチエンジンで %s で検索します。
そして、アドレスバーに設定したキーワードを入力すると、検索プラグインファイルのリンクが表示されるので、
Altキー または option キーを押しながらクリックしてダウンロードします。


この方法の場合、アドレスバーに入力する文字を「<キーワード> <サーチエンジン名>」とすると、検索バーに表示されるサーチエンジン名が指定できます。*4

Firefoxの検索バーに追加する方法

これで検索プラグインをダウンロードしたら、Firefoxのプロファイルフォルダに検索プラグインのファイルを移動します。
移動させる場所は環境によっても違いますが、


Windows 2000/XP/Vista/7 なら

C:\Documents and Settings\<ユーザ名>\Application Data\Mozilla\Firefox\Profiles\xxxxxxxx.default\

Mac OS X なら

/Users/<ユーザ名>/Library/Application Support/Firefox/Profiles/xxxxxxxx.default/

Linux なら

~/.mozilla/firefox/xxxxxxxx.default/

であるのが一般的です。


検索プラグインFirefoxの再起動後に有効になります。


ソースコード

javascript:(function(){
var s = '%s';
var name;
var template = location.href;
var encoding = document.characterSet || document.charset;

if (s.match(/http:\/\//)) {
 [template, name, encoding] = s.split(/; ?/);
} else if (s && !(s.match(/^[%]s$/))) {
 name = s;
} else {
 name = document.title.replace(/%25s|%2525s/, '').replace(/ [-|/:]{1,2} /, '');
}
template = template.replace(/%25s|%2525s/, '{searchTerms}').replace('&', '&amp;');

var re_charset = /^(UTF-8|Shift_JIS|EUC-JP|ISO-2022-JP)$/i;
var re_template = /^http:\/\//;
if (name.match(re_charset)) {
 [name, encoding] = [encoding, name];
}
if (name.match(re_template)) {
 [name, template] = [template, name];
}
if (encoding.match(re_template)) {
 [encoding, template] = [template, encoding];
}
if (template.match(re_charset)) {
 [encoding, template] = [template, encoding];
}

var filename = name.replace(/[^-a-zA-Z0-9_.()]/g, '').replace(/^[  ]*|[  ]*$/, '').toLowerCase() + '_os.xml';

var text = ('<?xml version="1.0"  encoding="UTF-8"?>\n<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/">\n  <ShortName>' + name + '</ShortName>\n  <Description>' + name + '</Description>\n  <InputEncoding>' + encoding + '</InputEncoding>\n  <Url type="text/html" method="GET" template='  + template + '" />\n</OpenSearchDescription>');

document.write(
  '<html><head><title>SearchPlugin Maker</title></head><body></p><a href="' +
  'data:application/octet-stream,' + encodeURIComponent(text) +
  '">' +
  filename +
  '</a></p><pre>' +
  text.replace(/</g, '&lt;').replace(/>/g, '&gt;') +
  '</pre></body></html>'
);
})();

*1:OpenSearch形式の検索プラグインなので、OpenSearch対応ブラウザなら使用できます。他のブラウザでのブックマークレットの動作は確認していません。

*2:他のブックマークを複製して編集すればやりやすいと思います。

*3:WindowsではoeditMac OS XではmiCotEditorなどがあります

*4:「<キーワード> <%sを含む検索結果URL> <サーチエンジン名> <UTF-8>」という書式にも対応しています。(この場合検索結果以外のページからも使えます)