monolithic kernel

golang で Twitter の UserStream を使う

July 28, 2015

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