blog.hekt.org

LaunchBarからポケモン検索

BWで再開してからずっとポケモン徹底攻略のポケモン図鑑を愛用しているのですが、これをLaunchBarから使えるようにします。

問題点として、

  • ポケモン図鑑側がパラメータをPOSTでしか受け取ってくれない(実はGET対応してました
  • LaunchBarのPOSTは日本語が通らない

というのがあるので、AppleScriptで検索キーワードを受け取る→JavaScriptでフォームを作ってsubmit、という感じで強引にやります。

JavaScript

(function(){
	var form = document.createElement('form');
	var input = document.createElement('input');

	form.setAttribute('action', 'http://bw.yakkun.com/zukan/'); //HGSSやDPtの図鑑はyakkun.com/dp/zukan/
	form.setAttribute('method', 'POST');
	form.setAttribute('Accept-charset', 'euc-jp');

	input.setAttribute('name', 'name');
	input.setAttribute('type', 'text');
	input.setAttribute('value', 'トロピウス');

	document.body.appendChild(form);
	form.appendChild(input);

	form.submit();
})();

Accept-charsetを指定してやらないとたぶん文字化けして使えません。11行目はAppleScriptで受け取ったキーワードを使いますが、とりあえずトロピウスさんで。

(function(){var form=document.createElement('form');var input=document.createElement('input');form.setAttribute('action','http://bw.yakkun.com/zukan/');form.setAttribute('method','POST');form.setAttribute('Accept-charset','euc-jp');input.setAttribute('name','name');input.setAttribute('type','text');input.setAttribute('value','トロピウス');document.body.appendChild(form);form.appendChild(input);form.submit();})();

改行とか剥ぎとって縮小しておきます。これの先頭に”javascript:”をつけてアドレスバーに打ち込めばトロピウスのページに移動するはず。

AppleScript(Safariの場合)を書いて登録

on handle_string(_query)
	tell application "Safari"
		tell window 1
			activate
			set current tab to (make new tab)
			do JavaScript "(function(){var form=document.createElement('form');var input=document.createElement('input');form.setAttribute('action','http://bw.yakkun.com/zukan/');form.setAttribute('method','POST');form.setAttribute('Accept-charset','euc-jp');input.setAttribute('name','name');input.setAttribute('type','text');input.setAttribute('value','" & _query & "');document.body.appendChild(form);form.appendChild(input);form.submit();})();" in document 1
		end tell
	end tell
end handle_string

トロピウスだったところを_queryに置き換えます。長くて読みづらいのですが、JavaScript部分を大胆に省略するとこういうことです:

do JavaScript "input.setAttribute('value','" & _query & "');" in document 1

これを ~/Library/LaunchBar/Actions/ に置いて、LaunchBarのインデックスに登録すれば完成。ググったりLaunchBarのビルトインアクションを見たりしながらやったので正しい方法かどうかは分かりませんが、まあ動いたのでよし。

追記(11/12/20)

だいぶ前からGETリクエスト対応していたっぽい……。→ポケモン図鑑BWをGoogle Chromeの検索エンジンに設定する方法 – ポケモン徹底攻略

DS版のほうはGETリクエストに対応していないようで、ちょうどプラチナをやっていてそっちで試していたので気づきませんでした。いいわけ。