【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)
}練習としてちょうどよかったかも。以上です