AlfredWorkflowで遊ぶページ

Lesson4.シェルスクリプトでURLエンコードする

開発メモ

ワークフロー

1.検索結果のURLを解析する

 試しに価格コムで『時計』と検索してみましょう
 リターンされたブラウザのURLはこうなっています
 https://kakaku.com/search_results/%8E%9E%8Cv/
 %の部分は日本語をエンコードしたものでしょう
 URLでたまに見かけますが、日本語のままではうまく稼働しないブラウザに
 対応するためコード化しています
 URLでは基本的にUTF-8を使うものと思っていたのですが違うようです
 
 ネットの世界は便利なもので、デコードサイトがあるので確認したら
 Shift-JISでした
 ということは、上記リターンのURLの%部分を作ればOKですね

2.シェルスクリプトで%エンコードする

 シェルスクリプトで実施するにはnkfコマンドを利用するそうです
 試しにターミナル.appで叩いてたら、nkfがない!
 nkfコマンドはインストールが必要なようです
 その前提のパッケージ管理ソフトhomebrewも導入が必要でした
 
 苦労して前提ができたところでAlfredのスクリプトを作成
 実装したコードはたった3行。キモとなるのは下記のコード

open "https://kakaku.com/search_results/"`echo -n $query | nkf -WsMQ | tr = % ` 


 バックスラッシュはコマンドの結果を返します
 結果の文字列をそのままURLと連結してOpenしています
 シェルスクリプトはワンライナーで書くことがよくあるので慣れが必要
 ちなみに$queryはalfredの入力パラメータ=検索キーワード
 nkfでs-jisに変換すると=つきのコードが返ってくるので
 trで=を%に置き換えています

RunScript

そのた

 ・Alfredのインプットキーワドを”価格”、”Kakaku”として、
  日本語でも英数でも起動できるようにしています(バイリンガル起動)
 ・nkfのパスを環境変数PATHに指定しています
  なので、それぞれの環境にあわせた変更が必要です 
  (そもそもnkfをパスの通った場所におくべきだったかな)

背景

 価格コムはカメラ、パソコン、家電関連を買う時に参考にするぐらいですが
 URLに%エンコードがあったので題材としました 

取扱説明

機能:

 価格コム を検索する
 ※URLのための%エンコードを実装したワークフローです

インストール:

 1.alfredworkflowをダウンロード
 2.ファイルをダブルクリックしてワークフローに登録

使い方:

 Alfredからキーワード『kakaku』or『価格』 + 検索したい文字列

トップページに戻る