GoLangでコマンドラインからGoogle検索する
最近のミドルウェアやコマンドラインツールに頻繁に使用されているGoLangを使ってみたかったので、コマンドラインからGoogle検索するツールを作った。 open-golang
という便利ツールをラップしたカタチなので、作ったというほど、大したことはしてないです。
前提
Goのインストールは終わっている状態。
hello, world
環境作れてるかは定番のHello, Worldで。
package main import "fmt" func main() { fmt.Println("hello, world") }
実行は go run xxx.go
なので、今回は go run hello.go
で。
標準出力に hello, world
が出ればOK。
コマンドラインツール作る
go get で open-golangをダウンロード
$ go get github.com/skratchdot/open-golang/open
で $GOPATH
にダウンロードします。
Google検索するツールを作る
今回は
- 検索種類(通常/画像)
- 検索ワード
をコマンドライン引数とするツール「gg-search」を作ってみます。
- 検索種類は「-t」
- 検索ワードは「-w」
で指定できるようにして、それぞれ「通常」「一休」をデフォルト値とします。
コードはgoの流儀に従って $GOPATH/src/github.com/kentana20/gg-search/
に作ります。
package main import ( "flag" "net/url" "github.com/skratchdot/open-golang/open" ) func main() { var w = flag.String("w", "一休", "search word") var t = flag.Int("t", 0, "search type 0:normal, 1:image") flag.Parse() var Url *url.URL Url, err := url.Parse("http://www.google.co.jp") if err != nil { panic("doooon!!!!") } Url.Path += "/search" params := url.Values{} params.Add("q", *w) if *t == 1 { params.Add("tbm", "isch") } Url.RawQuery = params.Encode() open.Run(Url.String()) }
flagはコマンドライン引数を扱うパッケージです。
var w = flag.String("w", "一休", "search word") var t = flag.Int("t", 0, "search type 0:normal, 1:image") flag.Parse()
でそれぞれのコマンドライン引数を設定します。第一引数に指定オプション、第二引数にオプションに渡す値、第三引数にhelpに表示されるDescriptionを指定します。
Url, err := url.Parse("http://www.google.co.jp") Url.Path += "/search" params := url.Values{} params.Add("q", *w) Url.RawQuery = params.Encode()
で、ブラウザへ渡すURL、Querystringを設定します。 url.Parse(“”)
でURLを、 url.Values{{}
でQuerystringを指定します。Querystringの設定がすべて終わったら、params.Encode()
でURLを生成します。
open.Run(Url.String())
URLとQuerystringを設定したら open.Run
で生成したURLをブラウザへ渡します。
goファイルをビルドしてバイナリを作る
バイナリを作るには go build
コマンドを使用します。
$ go build gg-sample.go
これで、同階層にgg-searchバイナリが作らるので、go run
を使わなくてもコマンドラインからツールが使えます。
$ gg-search —help
でヘルプメニューが表示されればOKです。
$ gg-search kentana20 # Googleでkentana20を検索 $ gg-search まゆゆ 1 # Google画像検索でまゆゆを検索
とりあえず、「Goを触って何か作ってみた」ってだけなので、Go Toursでもうちょい勉強して、次回は有名ドコロのツールを見ながらもっとためになるものを作ってみようと思います。今回いじったソースは こちら に上がっていますので、「使い方がちげーよ」という場合はご指摘いただけると助かります。