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 便利ですねぇ。