読者です 読者をやめる 読者になる 読者になる

Alfred付属のSuggest系ワークフローを一行で正常動作させる方法

Alfred

 ということで、さっきの記事のつづき。

 日本語環境では正常に動作しない、AlfredのSuggest系ワークフローを修正する方法を紹介するよ。

 一行って言ったのはわりかしうそじゃないよ!
 すっごい楽だから誰にでもできるんだ。

Google Suggest Workflowを修正する

 Alfred3に付属するGoogle Suggestのワークフローは、日本語は通るようになっているんだけど、候補が表示されないことがあるんだ。


 これを修正するには、まずAlfred3環境設定のWorkflow一覧から、"Google Suggest"を選ぶ。

f:id:escolar:20160523215649p:plain

 次に、ワークフロー画面に表示されている、上に"g"、下に"Script Filter"と書かれたアイコンをダブルクリックする。

 ダイアログが表示されたね!
 下半分に表示されているのが、Suggestを取得して表示するためのソースコードだよ。


 修正するのはこれの5行目と6行目:

$xml = $wf->request( "http://google.com/complete/search?output=toolbar&q=".urlencode( $orig ) );
$xml = simplexml_load_string( utf8_encode($xml) );

 になっている場所を、

$xml = $wf->request( "http://google.co.jp/complete/search?hl=ja&ie=utf_8&oe=utf_8&output=toolbar&q=".urlencode( $orig ) );
$xml = simplexml_load_string( $xml );

 に修正して、右下のSaveボタンを押す。
(↑のエリアは右にスクロールするよ!)


 これだけで、表示される予測候補の数が大幅に増加するよ。

 編集するのめんどいという人のために、Gistにソースを置いておいたよ。
 https://gist.github.com/baramutu/56f3411e848978bd847ce73543ba4d82

Amazon Suggest Workflowを修正する

 Alfred3に付属するAmazon Suggestのワークフローでは、日本語が通らない。
 日本語のクエリーを投げると、文字化けした結果が表示されてしまうんだ。


 これを修正するには、まずAlfred3環境設定のWorkflow一覧から、"Amazon Suggest"を選ぶ。

 次に、ワークフロー画面に表示されている、上に"amazon"、下に"Script Filter"と書かれたアイコンをダブルクリックする。


 修正するのは6行目:

$url = "http://completion.amazon.com/search/complete?method=completion&q=".urlencode( $in )."&search-alias=aps&mkt=1&x=updateISSCompletion&noCacheIE=1295031912518";

 の部分を、

$url = "http://completion.amazon.co.jp/search/complete?method=completion&q=".urlencode( $in )."&search-alias=aps&mkt=6&x=updateISSCompletion&noCacheIE=1295031912518";

 に置き換える。
(↑のエリアも右にスクロールするよ!)


 これでとりあえず日本語は通るようになるんだけど、まだゴミが表示されちゃうんだ。
 だから、

// Strip off the "header" data
$str = substr( $str, strlen( 'completion = ["'.$in.'",[' ) );

// Remove the node info
$str = substr( $str, 0, strpos( $str, ']' ) );

 の部分を、

// Strip off the "header" data
$substr = mb_substr( $str, 0, mb_strpos( $str, ',' ) );
$str = mb_substr( $str, strlen( $substr ) + 2);

// Remove the node info
$str = mb_substr( $str, 0, mb_strpos( $str, ']' ) );

 に修正してもらいたいな。
 そうすれば、検索結果にゴミが表示されなくなるよ。

 こっちもGistにソースを置いておいたよ。
 https://gist.github.com/baramutu/497865498d5160a219e8ecfc223c9500


 どう、簡単だったでしょ?
 変更個所は一行じゃなくて、二行と四行だったけど!
 これに関しては素直に謝るよ。
 ごめんなさい。


 でもこの程度の些細な行きちがい、どうってことないよね。
 心の広いあなたなら許してくれるって信じてるよ。
 グッドトリップ!