monolithic kernel

golang で Twitter の UserStream を使う

golang から Twitter の UserStream を使おうと思い、公式で紹介されいていてかつ GitHub での人気が高かった anaconda を選んだはいいものの、全然サンプルが転がっていなかったので貼っておきます。まぁソースを見れば普通にできると思いますけど、逆に言うとソースを見ないと全然やり方がわからないです。

package main
import (
"fmt"
"github.com/ChimeraCoder/anaconda"
"github.com/joho/godotenv"
"log"
"net/url"
"os"
)
func main() {
// .env を読み込む
err := godotenv.Load()
if err != nil {
log.Fatal("Error loading .env file")
}
anaconda.SetConsumerKey(os.Getenv("TWITTER_CONSUMER_KEY"))
anaconda.SetConsumerSecret(os.Getenv("TWITTER_CONSUMER_SECRET"))
api := anaconda.NewTwitterApi(os.Getenv("TWITTER_OAUTH_TOKEN"), os.Getenv("TWITTER_OAUTH_TOKEN_SECRET"))
api.SetLogger(anaconda.BasicLogger) // logger を設定
v := url.Values{}
stream := api.UserStream(v) // 接続
for {
// 受信待ち
select {
case item := <-stream.C:
switch status := item.(type) {
case anaconda.Tweet:
// Tweet を受信
fmt.Printf("%s: %s\n", status.User.ScreenName, status.Text)
default:
}
}
}
}

いやぁ、goroutine と channnel 便利ですねぇ。


Related articles