2017年05月28日
go-itunesを作ってみた
自分のgolang力の低さに絶望したので、golang力をあげるためにライブラリを作ってみた。
go-itunes
https://github.com/polidog/go-itunes
itunesの操作をgolangでするためのライブラリ。
実際はJavaScriptでitunesの操作を行っていて、golangはexecしているだけなのですが・・・。
jsファイルをどうするか問題
コンパイルするときにどうやってjsファイルを扱うか悩んでいたんですが、go-binddata使うことになりました。
この辺の話かなhttps://t.co/4jsa0kFUqU
— Ikeda Daigo (@hogedigo) May 23, 2017
$ cd script
$ go-bindata -pkg script files/...
って感じでつかってfiles
以下にあるjsを埋め込んでます。
埋め込んだデータをこんど使う方法がわからなかったので、実行時に添付ディレクトリに展開する感じの実装にしてしまいました。。
https://github.com/polidog/go-itunes/blob/bdf8b72edf7d81962e5a9d8e6f0ff0cb0f797a34/script/script.go#L63
曲が変わったら検知する
watcher.goで実装しました。
package main
import (
"fmt"
"github.com/polidog/go-itunes"
)
func main() {
watcher := itunes.NewWatcher(800)
for {
if (watcher.Watch()) {
fmt.Println("change track")
fmt.Println(watcher.Track)
}
}
}
テストに関して
なんとなくテスト書いてみたけど、どうモックすればいいのかその辺がいまいち掴めていないので誰か相談に乗ってもらいたいです。
execをどうテストするべきなのか、そのへんに悩んでいます。
最後に
golangで書く必要はまったくもってなかったんですが、何かと勉強になりました。
もう少しgolang力を高めるために実装頑張ります。
そうそうwindowsでは動かないので動くようにこれから頑張ります。