はじめに
TwitterAPIライブラリ「anaconda」を用いれば、Go言語(golang)が利用できる環境ではTwitterAPIを利用して簡単にツイートプログラムを作成可能で以下記事ではテキストをツイートしました。
本記事では、テキスト共に画像を付与する流れについて説明します。
コマンド実行環境
# uname -a Linux instance-1 4.9.0-9-amd64 #1 SMP Debian 4.9.168-1+deb9u5 (2019-08-11) x86_64 GNU/Linux $ /usr/local/go/bin/go version go version go1.12.9 linux/amd64
画像を文字列に変換する
base64コマンドを用いて画像を文字列に変換します。
# which base64 /usr/bin/base64
今回は以下のような画像をローカルに配置して
# file test.jpg test.jpg: JPEG image data, JFIF standard 1.01, resolution (DPI), density 72x72, segment length 16, Exif Standard: [TIFF image data, big-endian, direntries=11, manufacturer=Apple, model=iPad Pro (11-inch), orientation=upper-left, xresolution=172, yresolution=180, resolutionunit=2, software=14.0, datetime=xx, GPS-Data], baseline, precision 8, 122x91, frames 3
以下でテキスト化。パイプで改行をなくして一行の文字列にしています。
# base64 test.jpg | awk 'BEGIN{ORS=""}{print $0}' > test.txt
ちなみにファイルサイズは以下で微増していました。
.. 13825 .. test.jpg .. 18436 .. test.txt
画像をツイートするGoプログラム
package main import ( "fmt" "anaconda" "log" "flag" "net/url" ) func main() { ... anaconda.SetConsumerKey(consumer_key) anaconda.SetConsumerSecret(consumer_secret) api := anaconda.NewTwitterApi(access_token, access_secret) flag.Parse() text := flag.Arg(0) var base64String="/9j/4AAQSk...LT09DojFy1Z//2Q==" media, _ := api.UploadMedia(base64String) v := url.Values{} v.Add("media_ids", media.MediaIDString) tweet, err := api.PostTweet(text, v) if(err != nil){ log.Fatal(err) } fmt.Println(tweet.Text) }
...の部分でconsumer_key&consumer_secret&access_token&access_secretに値を格納し、base64Stringに先程の文字列を淹れます。
このプログラムを以下のように実行すると
# go run test.go test
以下が標準出力に表示されて
test https://t.co/xx
ツイッター上で画像付きツイートが投稿されています。
終わりに
base64で画像をエンコードする必要はありますが、それさえしてしまえばテキスト同様に気軽に画像を投稿するBOTを作成できます。
以上、ご参考になれば幸いです。