🕊️

【Go】TwitterAPIを使って、ツイート・検索・タイムライン取得

2022/10/09に公開約2,500字

はじめに

GoでTwitterAPIを使い、タイトルの機能を実装してみました。
TwitterAPIの申請文は、適当に書くと落とされてしまうので、注意してくださいね (自戒も込めて)

TwitterAPI登録

TwitterAPI登録に関しては、私が参考にさせていただいた記事を紹介します。
凄く分かりやすかったので是非!

【2022年度最新版】Twitter API 申請方法(Twitter v1.1 v2対応)

上記記事を参考に、各種APIキーを取得します。

  • API Key
  • API Secret
  • Access Token
  • Access Secret

anaconda導入・準備

TwitterAPIを使うために、anacondaパッケージを使います。

go install github.com/ChimeraCoder/anaconda

anacondaとTwitterAPIの各種キーを使って、TwitterApi構造体を返します。
TwitterAPIの各種キーは環境変数から取得しています。

func getTwitterAPI() *anaconda.TwitterApi {
	loadEnv()
	anaconda.SetConsumerKey(os.Getenv("CONSUMER_KEY"))
	anaconda.SetConsumerSecret(os.Getenv("CONSUMER_KEY_SECRET"))
	api := anaconda.NewTwitterApi(os.Getenv("ACCESS_TOKEN"), os.Getenv("ACCESS_TOKEN_SECRET"))
	return api
}

func loadEnv() {
	err := godotenv.Load(".env")
	if err != nil {
		fmt.Printf("failed to load environment variables: %v\n", err)
	}
}

ツイート機能

TwitterAPIを使って、ツイート機能を実装します。

	api := getTwitterAPI()
	
	// ツイート
	tweet, err := api.PostTweet("テストです", nil)

	if err != nil {
		fmt.Printf("failed to tweet: %v\n", err)
	}

	fmt.Println(tweet.Text)
  • コンソール
❯ go run main.go                         
テストです
  • Twitterアカウント
    • 余談ですが、アイコンのGopherくんとツイッターバードがかわいいです。

検索機能

検索機能を実装します。

	api := getTwitterAPI()
	// 検索したいワードを第一引数に渡す
	searchResult, err := api.GetSearch("Gopherくん", nil)

	if err != nil {
		fmt.Printf("failed to get search: %v\n", err)
	}

	for _, tweet := range searchResult.Statuses {
		// ツイート本文のみ出力
		fmt.Println(tweet.FullText)
	}

  • コンソール (自分以外のツイートは載せていません)
❯ go run main.go
Gopherくん、イカしてる
Gopherくん、かわいい

ホームタイムライン取得機能

ホームタイムライン(設定したアカウント)からツイートを取得します。
最新ツイートから、指定した件数内でツイート取得しています。

	api := getTwitterAPI()
	// 取得したい件数 (3) をセット
	v.Set("count", "3")
	
	// 最新ツイートから3件取得
	tweets, err := api.GetHomeTimeline(v)

	if err != nil {
		fmt.Printf("failed to get home timeline: %v\n", err)
	}

	for i, tweet := range tweets {
		fmt.Printf("%d, tweetname:%v\n tweet: %v\n", i, tweet.User.Name, tweet.FullText)
	}
  • コンソール
❯ go run main.go
0, tweetname:golang-api-test
 tweet: テストです3
1, tweetname:golang-api-test
 tweet: テストです2
2, tweetname:golang-api-test
 tweet: テストです1

さいごに

TwitterAPIを使い、簡単な機能を実装してみました。
今度は「いいね」や「DM」、「画像を含めた予約ツイート」も実装したいです。
また、本記事のコードはこちらのリポジトリで確認できます (若干ディレクトリ構成が異なります)
最後までお読みいただき、ありがとうございました!

参考記事

Discussion

ログインするとコメントできます