Lesson34.グーグルサジェストを使う
ワークフロー
Alfredワークフローサンプルでお馴染みのWEBツールです
キーワードに関連する検索候補を挙げてくれるものです
Google検索ボックスでも使えるので、わざわざワークフローにすることもないですが・・
フロー構成は単純でScriptFilterとWebSearchです
なお、今回のScriptFilterの出力はURLではなく検索ワードとなるので
OpenURLでなくWebSearchを使っています
キーワードは『グーグル』としています
ちょっと長いです。検索ワードが日本語となることを想定して、
キーワードを日本語としていますが、1文字キーワードにするのも良いですし、
Lesson4のようにバイリンガル起動にしてもよいでしょう
グーグルサジェストのURLは以下のもの
「q=」の後にキーワードをつけますがargの日本後をそのまま記述してもOKでした
https://suggestqueries.google.com/complete/search?output=toolbar&q=
と、ここまでは良かったのですが実際に動かしてみるとちょっと想定外なことが起きました
一つは、リターンされるXMLのデータが文字コードでリターンされること
もう一つは、リターンされるワードが複数あるときに半角ブランクがはいること
たとえば「オミクロン」とすると、ブラウザではこう返ってくるのですが
実際にCURLでリターンされているのは下記となります
<?xml version="1.0"?>
<toplevel>
<CompleteSuggestion>
<suggestion data="オミクロン"/>
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="オミクロン株"/>
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="オミクロン 潜伏期間"/>
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="オミクロンとは"/>
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="オミクロン株とは"/>
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="オミクロン株 空気感染"/>
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="オミクロンの次"/>
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="オミクロン後遺症"/>
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="オミクロン 意味"/>
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="オミクロン感染期間"/>
</CompleteSuggestion>
</toplevel>
XMLのdata=の部分がサジェストされるキーワードですが書式が1文字ずつ
「&#xnnnn;」となっています
調べてみるとUTF16BEのようですが、実は対処は簡単で下記のnkfのオプションでokです
nkf --numchar-input
半角ブランクはスクリプト上、重要な役割を果たしています
XML解析のgrepで抽出の際の区切り文字となり、そのまま配列に代入しています
もしXMLのリターンに半角ブランクがあると、区切り文字として捉えてしまい
配列が想定外に増加してしまいます
そこで下記のように半角ブランクを全角ブランクに変換して対応しました
sed 's/ / /g'
XMLのリターンの一番先頭は、もとの検索ワードのそのままなので
2つ目からを表示させています
titleとargにサジェストされる文字をセットしてできあがりです
グーグルサジェストをAlfred出力フォーマットで表示する
1.alfredworkflowをダウンロード
2.ファイルをダブルクリックしてワークフローに登録
Alfredからキーワード『グーグル』で起動。続けて検索したい語句を入力する
トップページに戻る