APIのお勉強のためにTwitterAPIを使ってツイート検索をしてみた。
まずは、Standard searchからやってみる。
用意するもの
Consumer API keys
Access token
Access token secret
こちらを参照してください:https://ahiru8usagi.hatenablog.com/entry/TwitterAPI_KeyAndToken
ソースコード
まずはOAuth認証
config := oauth1.NewConfig(consumerKey, consumerSecret)
token := oauth1.NewToken(token, tokenSecret)
httpClient := config.Client(oauth1.NoContext, token)
これでAPIの機能を使うことができる。
早速ツイート検索の関数を書く。
//JSONオブジェクトについてはAPIリファレンスを参照してください
func search_tweet(client *http.Client)([]Tweet, error){
values := url.Values{}//クエリの作成
values.Add("q", "#golang")//検索ワード(これだけ必須)
//リクエストの送信
request, err := http.NewRequest("GET","https://api.twitter.com/1.1/search/tweets.json"+"?"+values.Encode(), nil)
if err != nil {
return nil, err
}
//レスポンスの取得
response, err := client.Do(request)
if err != nil {
return nil, err
}
b, err := ioutil.ReadAll(response.Body)
if err != nil {
return nil, err
}
var result Result//検索結果のJSONオブジェクト
json.Unmarshal(b, &result)
response.Body.Close()
return result.Statuses, nil//Tweetオブジェクトを返す
}
これでTweetオブジェクトが返ってくる。
コード全体
func search_tweet(client *http.Client)([]Tweet, error){
values := url.Values{}
values.Add("q", "#golang")
request, err := http.NewRequest("GET","https://api.twitter.com/1.1/search/tweets.json"+"?"+values.Encode(), nil)
if err != nil {
return nil, err
}
response, err := client.Do(request)
if err != nil {
return nil, err
}
b, err := ioutil.ReadAll(response.Body)
if err != nil {
return nil, err
}
var result Search_response
json.Unmarshal(b, &result)
response.Body.Close()
return result.Statuses, nil
}
func main(){
config := oauth1.NewConfig(consumerKey, consumerSecret)
token := oauth1.NewToken(token, tokenSecret)
httpClient := config.Client(oauth1.NoContext, token)
result, err := search_tweet(httpClient)
if err != nil{
fmt.Println(err)
}
for _, tweet := range result{//デフォルトでは15個のTweetを拾ってくる
fmt.Println("text:"+tweet.Text)//テキストの表示
}
}
実行すると15個のツイートが表示される。
Standard searchでできることは限られていて、検索可能なツイートが1週間以内の物だけだったりする。(多分)無制限にツイートの検索ができるPremium search APIの無料バージョンがあるのでそっちのほうで現在開発(?)中。
今回TwitterAPIで使うJSONオブジェクトの説明を飛ばしましたが、下記のリンクにTwitterAPIのリファレンスが載っているのでそちらを参照してください。
https://developer.twitter.com/en/docs/tweets/search/api-reference/get-search-tweets.html