YOwatari's blog

思うままに。

Alfred2でGoogleサジェスト

AlfredというMac向けのランチャーアプリを使ってるのですが、その中でWorkflowという拡張機能みたいなものがあります。
有料ユーザのみが使える機能ですが、せっかく課金したので、Workflowを作りました。

Google検索+サジェスト

元々、exampleにGoogleSuggestというサジェスト機能つきのGoogle検索できるWorkflowがあります。
exmapleは大体phpで書かれてるっぽい。
Workflowは、シェルスクリプトを始めphp,perl,ruby,pythonといったスクリプトで、Alfredから受け取った文字列(クエリー)を処理できる。
exampleでは英語優先だったので、日本語優先にします。
URLいじるだけでいいかと思ったら、文字化けしだしたので、面倒になってPythonで作ってみることに

Python向けAlfred Workflowモジュール

はじめは、APIがどうなってるのかわからず、探り探りで作っていたわけですが、
alpというWorkflow向けの良いモジュールがあったので、利用させてもらいました。
phyllisstein/alp

作ったもの

f:id:wata88:20130729200942p:plain

Google日本語サジェスト

日本語優先でサジェストしてくれます。
とりあえず、使ってみて問題無さそうですが、文字によっては化けてしまうかもしれない。
あと、サジェストが無い時の処理とかしてないので、色々不完全

所感

xmlを渡すことで、Alfredで処理できるわけですが、文字コードに悩まされまくり。
UnicodeDecodeErrorで悩まされるのはPython2.x使ってるとしばしば感じることですが、とにかくUnicode使ってれば大丈夫の精神でやり過ごしました。
alpに渡した後であれば、alp.log()でalfredが処理する文字列を観察できるので、捗ります
と、ここまでやって、検索してみたら、同様のものを作られた方がいました。

日本語のGoogleサジェストAPIを使って検索するAlfredのプラグインを作ってみた。 - 「ひとかじりのりんご」
こちらは使ってみたら、複数単語で上手く動作しませんでした。

Alfred2-google-workflow by zhaocai
一方こっちは、urlいじるだけで日本語向けにできますし、機能も豊富で素晴らしい