LoginSignup
3
2

More than 5 years have passed since last update.

Golang + anaconda + AppleScriptでNowPlayingツイート

Last updated at Posted at 2016-11-20

GoのTwitter APIライブラリのanacondaを利用して、iTunesで再生中の曲名を取得してツイートできるようにしてみました。
曲名の取得にはAppleScriptを利用しました。
Goでやる意味もあんまりなかったのですが、Goで何か書きたかっただけです。

anacondaのインストール

go get github.com/ChimeraCoder/anaconda
でインストールできます。
詳しくはこちら https://github.com/ChimeraCoder/anaconda

iTunesで再生中の曲名を取得する

getTrack.scpt
tell application "iTunes"
    set trackName to name of current track
    set trackArtist to artist of current track
    return trackName & " - " & trackArtist
end tell

参考元からの丸パクリです。
AppleScriptを利用しています。
ここでは曲名とアーティスト名のみですが、アルバム名などその他の情報も取得可能です。
AppleMusicの場合は取得できないみたいですが、マイミュージックに追加されていると大丈夫のようです。
私の場合は大丈夫でした。

ツイートする

nowPlaying.go
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で画像付きツイートしたい

非常に役に立ちました。ありがとうございます。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2