【Go】Twitter Search APIを使ってみる
はじめに
やりたいことはキーワードでtwitterの投稿を取得してくるだけ
ちょっとだけプログラムいじった箇所は以下
・1回で取得できる件数の上限(100件)が決まっているので複数回取得するようにする
・タイムゾーンをJSTに
パッケージ
今回使ったパッケージは以下なのでgo getしておく
github.com/dghubble/go-twitter/twitter github.com/dghubble/oauth1
実装
package main import ( "fmt" "os" "time" "github.com/dghubble/go-twitter/twitter" "github.com/dghubble/oauth1" ) const( CONSUMER_KEY string = "xxxxx" CONSUMER_SECRET string = "xxxxx" ACCESS_TOKEN string = "xxxxx" ACCESS_SECRET string = "xxxxx" ) func main() { config := oauth1.NewConfig(CONSUMER_KEY, CONSUMER_SECRET) token := oauth1.NewToken(ACCESS_TOKEN, ACCESS_SECRET) httpClient := config.Client(oauth1.NoContext, token) client := twitter.NewClient(httpClient) // 検索キーワード keyword := "キーワード" // xxx回リクエストしてまとめる tweets := []twitter.Tweet{} var min_id int64 for i := 0; i < 3; i++ { search, _, err := client.Search.Tweets(&twitter.SearchTweetParams{ Query: keyword, Count: 100, MaxID: min_id - 1, }) if err != nil { Error(err) } for j := 0; j < len(search.Statuses); j++ { tweets = append(tweets, search.Statuses[j]) if min_id == 0 || search.Statuses[j].ID < min_id { min_id = search.Statuses[j].ID } } } // データを整形して表示 jst := time.FixedZone("Asia/Tokyo", 9*60*60) for i := 0; i < len(tweets); i++ { // タイムゾーンをJSTに t, _ := time.Parse(time.RubyDate, tweets[i].CreatedAt) t = t.In(jst) fmt.Printf("%s\t%s\t%s\n",tweets[i].IDStr,t,tweets[i].Text) } } func Error(err interface{}) { fmt.Println(err) os.Exit(1) }
練習としてちょうどよかったかも。以上です