GoのTwitter APIライブラリのanacondaを利用して、iTunesで再生中の曲名を取得してツイートできるようにしてみました。
曲名の取得にはAppleScriptを利用しました。
Goでやる意味もあんまりなかったのですが、Goで何か書きたかっただけです。
anacondaのインストール
go get github.com/ChimeraCoder/anaconda
でインストールできます。
詳しくはこちら https://github.com/ChimeraCoder/anaconda
iTunesで再生中の曲名を取得する
tell application "iTunes"
set trackName to name of current track
set trackArtist to artist of current track
return trackName & " - " & trackArtist
end tell
参考元からの丸パクリです。
AppleScriptを利用しています。
ここでは曲名とアーティスト名のみですが、アルバム名などその他の情報も取得可能です。
AppleMusicの場合は取得できないみたいですが、マイミュージックに追加されていると大丈夫のようです。
私の場合は大丈夫でした。
ツイートする
package main
import (
"fmt"
"github.com/ChimeraCoder/anaconda"
"log"
"os/exec"
)
func getTrackInfo() string {
info, err := exec.Command("osascript", "getTrack.scpt").Output()
if err != nil {
log.Fatal(err)
}
return string(info)
}
func main() {
anaconda.SetConsumerKey("consumerKey")
anaconda.SetConsumerSecret("consumerSecret")
api := anaconda.NewTwitterApi("accessToken", "accessTokenSecret")
tweet := fmt.Sprintf("NowPlaying: %s", getTrackInfo())
api.PostTweet(tweet, nil)
}
exec.Command("osascript", "getTrack.scpt").Output()
で上記のAppleScriptを実行し、
曲名を取得しています。
そして、tweet := fmt.Sprintf("NowPlaying: %s", getTrackInfo())
でツイート内容を整形し、
api.PostTweet(tweet, nil)
でツイートしています。
consumerKeyなどは各個人の値を入れてください。
ターミナルからコマンドで実行
詳しく書いてあるところがあると思うので方法は割愛しますが、
${GOPATH}/src
以下にソースファイルを置いてgo install
とすると${GOPATH}/bin
以下に実行ファイルができ、${GOPATH}/bin
にパスが通っていればコマンドで実行することができます。
私はnowでツイートできるようにしてみました。
本当は...
本当は、Goのプログラムを実行させておいて曲が変わったら自動的にツイート、みたいなことがしたかったのですが、
曲が変わったことを感知するまたは曲が変わったのをトリガーとして何かさせる方法がよく分からなかったのでとりあえずここまでにしています。
何かいい方法があればまた改良します。
参考元
iTunesで聴いている曲をSlackに通知するアプリをswiftで書いた
情弱だがGoで画像付きツイートしたい
非常に役に立ちました。ありがとうございます。