今回はgo言語でTwitterへ自動投稿やデータ収集に対する方法について載せておこうと思います!!
最近、ブログやSNSに自動投稿するためのAPIの使い方が知りたくて調査してきました。
今回はTwitterに対して投稿したデータの閲覧やブログへの自動投稿手段についてまとめたいと思います。
プログラミング言語は題名の通り、go言語を用います。
■Twitter API登録手順
Twitterへ自動投稿するためにはTwitter APIを用いる必要があります。
Twitter APIを用いるためにはTwitter開発アカウントへの登録が必要になります。
■認証・動作確認
では、認証動作の確認を行っていきます。
まずはTwitter APIを利用するためのライブラリをダウンロードしておきます。
go get github.com/ChimeraCoder/anaconda
そして、先ほどのAPI登録時に得られた「Consumer API Keys」、「アクセストークン情報」を用いてこちらのようなコードを作成します。
package main import ( "github.com/ChimeraCoder/anaconda" ) func main() { anaconda.NewTwitterApiWithCredentials(AccessToken, AccessTokenSecret, ConsumerKey, ConsumerSecret) }
こちらを実行し、エラーなく返ってくれば認証はOKです!!
■Twitterデータ収集
では実際にTwitterのタイムラインからデータを収集します。
こちらが全体のコードです。
package main import ( . "fmt" "github.com/ChimeraCoder/anaconda" "io" "net/http" "net/url" "os" ) func GetTwitterApi() *anaconda.TwitterApi { anaconda.SetConsumerKey("ConsumerKey") anaconda.SetConsumerSecret("ConsumerSecretKey") return anaconda.NewTwitterApi("APIKey", "APISecretKey") } func main() { api := GetTwitterApi() v := url.Values{} v.Set("count", "20") ←抽出データ. searchResult, _ := api.GetSearch("検索文字列 exclude:retweets filter:images", v) tweets := searchResult.Statuses for _, tweet := range searchResult.Statuses { Println("=======================================") Println(tweet.CreatedAt, tweet.Text) } }
こちらにて、Twitterの認証を行います。
api := GetTwitterApi()
GetTwitterApi関数はこちらのように認証を行っております。
func GetTwitterApi() *anaconda.TwitterApi { anaconda.SetConsumerKey("ConsumerKey") anaconda.SetConsumerSecret("ConsumerSecretKey") return anaconda.NewTwitterApi("APIKey", "APISecretKey") }
そして、
v := url.Values{} v.Set("count", "20") ←抽出データ. searchResult, _ := api.GetSearch("検索文字列 exclude:retweets filter:images", v) tweets := searchResult.Statuses
にて、抽出するデータ数や検索する文字列等の設定を行い、twitterのタイムラインからデータを収集します。
最後にこちらにて収集したデータをログ出力。
for _, tweet := range searchResult.Statuses { Println(tweet.CreatedAt, tweet.Text) }
ついでに、、、
searchResult, _ := api.GetSearch("検索文字列 exclude:retweets filter:images", v)
を
tweets, err := api.GetHomeTimeline(v)
に置き換えると自分の最新タイムラインデータの取得が行えます。
■Twitter自動投稿
先ほどのデータ収集とは反対にこちらから投稿するコードを書いてみます。
全体のコードはこちらです。
package main import ( "github.com/ChimeraCoder/anaconda" "net/http" "io" "os" ) func GetTwitterApi() *anaconda.TwitterApi { anaconda.SetConsumerKey("ConsumerKey") anaconda.SetConsumerSecret("ConsumerSecretKey") return anaconda.NewTwitterApi("APIKey", "APISecretKey") } func main() { api := GetTwitterApi() sendText := "すいません。Testです" tweet_ret, err := api.PostTweet(sendText, nil) if err != nil { panic(err) } Println(tweet_ret.Text) }
先ほどのデータ取集と異なる点は下記です。
sendText := "すいません。Testです" tweet_ret, err := api.PostTweet(sendText, nil) if err != nil { panic(err) } Println(tweet_ret.Text)
sendTextへ投稿したいメッセーを記載。
tweet_ret, err := api.PostTweet(sendText, nil)
にてTweetします。
■最後に
認証のためのアクセスキーを取得する部分が結構面倒ですが、そこさえクリアすれば簡単にデータ収集や投稿が行えました!!
自分で作成するWebアプリにも利用しようかな??🤔