茶漬けの技術メモ

Golang, Rubyで趣味開発します。テックニュース書いたり。ガジェット触ったり。

GoでTwitter(画像付きツイート編)

以前 Go でツイートの取得や実際にツイートをしてみました

o-tyazuke.hatenablog.com

この勢いで画像付きツイートをしてみよう思うと

一筋縄ではいかなかったのでそのメモです
※前回の記事を理解しておく必要があります


画像付きツイートを1度にする方法はない

これはどういうことかというと

画像付きツイートをするには、2回 Twitter API を叩く必要があり

  1. 画像をアップロードする
  2. アップロードした画像を指定してツイート

という手順になります


画像をアップロード

まず、画像を Twitter 上にアップロードし MediaID なるものを取得する必要があります

upload_image.go

package main

import (
    "log"
)

func main() {
    api := getClient()

    encodedImage := encoding("./tmp/image/DXWgT2bU0AAPyNv.jpg")

    tweet, err := api.UploadMedia(encodedImage)
    if err != nil {
        log.Fatal(err)
    }

    log.Printf("mediaID: %#v", tweet.MediaID)
}

Twitter API を叩いた時のレスポンスに含まれる tweet.MediaID を保存しておきます。


MediaID を指定してツイート

先ほど保存しておいた MediaID を指定してツイートします

tweet_with_image.go

package main

import (
    "net/url"
)

func main() {
    api := getClient()

    text := "hello world from golang"
    v := url.Values{}
    v.Add("media_ids", "3281498273489723987")   // ここで先ほど保存しておいた MediaID を指定します
    v.Add("type", "photo")

    tweet, err := api.PostTweet(text, v)
    if err != nil {
        log.Fatal(err)
    }
}

これで画像付きでツイートができます


こちらもどうぞ

o-tyazuke.hatenablog.com