はじめに
TwitterAPIライブラリ「anaconda」を用いて、Go言語(golang)からツイート検索を行います。
尚、TwetterAPIの取得やanacondaライブラリの利用に関しては過去記事を参考ください。
コマンド実行環境
$ go version go version go1.12.9 linux/amd64
ツイートをGo言語から取得する
anaconndaのSearchResponse型に情報を格納します。
具体的な格納法はapi.GetSerach("検索したい文字列",value)
です。value部分には検索時のオプションが指定でき、今回はツイート取得数のみを指定しました。
v := url.Values{} v.Set("count","5")
それらの検索結果を格納し
searchResult, _ := api.GetSearch(text, v)
以下でそれぞれのツイートを抜き出し
for i, tweet := range searchResult.Statuses
ツイート本文のみを表示します。
fmt.Println(tweet.FullText)
以下はサンプルコード全体です。
package main import ( "fmt" "anaconda" "net/url" "flag" ) func main() { anaconda.SetConsumerKey(consumer_key) anaconda.SetConsumerSecret(consumer_secret) api := anaconda.NewTwitterApi(access_token, access_secret) flag.Parse() text := flag.Arg(0) v := url.Values{} v.Set("count","5") searchResult, _ := api.GetSearch(text, v) for i, tweet := range searchResult.Statuses { fmt.Println(i,":",tweet.FullText) } }
引数である検索文字列を「golang」とした際の実行方法および実行結果は下記のようになります。
$ go run twitter_search.go golang 0 : RT @slayyywthwanaa: @glsxy_09 golang sis basta dm mo lang ako :)) 1 : “API GatewayとLambdaとGolangで作るサムネイル生成システム - ランサーズ(Lancers)エンジニアブログ” (1 user) https://t.co/j8v2RM7zhk 2 : @glsxy_09 golang sis basta dm mo lang ako :)) 3 : API GatewayとLambdaとGolangで作るサムネイル生成システム | ランサーズ(Lancers)エンジニアブログ https://t.co/DzEuqu0rLS 4 : RT @gp_pulipaka: Python Climbing Most Popular #Programming Languages List. #BigData #Analytics #DataScience #AI #MachineLearning #IoT #IIoT…
以下、補足です。
補足
格納した検索結果ですが
searchResult, _ := api.GetSearch("golang", v)
そのままsearchResult.Statuses
を出力すると
[{[] <nil> Mon Aug 26 04:39:34 +0000 2019 [0 65] {[] [] {[]} [{0926.? [3 18] slayyywthwanaa 1150278681203318784 1150278681203318784} {negs?? [20 29] glsxy_09 1116339902092730368 1116339902092730368}] []} {[] [] {[]} [] []} { [] {[] [] {[]} [] []} {[] [] {[]} [] []}} 0 false RT @slayyywthwanaa: @glsxy_09 golang sis basta dm mo lang ako :)) false 1165846221107253248 1165846221107253248 0 0 false tl {map[] {[] } [] {[] } [] } 0 <nil> false false 1 false 0xc00006a300 <a href="http://twitter.com/download/iphone" rel="nofollow">Twitter for iPhone</a> map[] RT @slayyywthwanaa: @glsxy_09 golang sis basta dm mo lang ako :)) {false Thu Apr 11 13:59:08 +0000 2019 true false {[] [] {[]} [] []} 3067 false 214 false 196 false true 1116339902092730368 1116339902092730368 false false 0 Drei negs?? false F5F8FA false https://pbs.twimg.com/profile_banners/1116339902092730368/1566784088 http://pbs.twimg.com/profile_images/1165803054714605568/OGGSN3HM_normal.jpg https://pbs.twimg.com/profile_images/1165803054714605568/OGGSN3HM_normal.jpg 1DA1F2 C0DEED DDEEF6 333333 true false glsxy_09 false <nil> 13575 0 false [] } false
上記のようにプロフィール含めた情報として出力されます。
ちなみにGetSearchの結果は以下形式で格納されているのでそのまま出力すると「Statuses」と「Metadata」が表示されます。
type SearchResponse struct { Statuses []Tweet `json:"statuses"` Metadata SearchMetadata `json:"search_metadata"` }
また、今回はTweetの本文のみを取得するためFullText
を指定していますが例えば
終わりに
anacondaライブラリを利用したツイッターでの情報取得です。
Statuses []Tweet
箇所にかなり大量の情報が格納されているので、使いようによっては色々な応用ができそうです。
以上、ご参考になれば幸いです。