LoginSignup
3
1

More than 5 years have passed since last update.

Hubotで外部から取得した画像を添付してツイートする

Last updated at Posted at 2016-10-22

やりたいこと

画像URLを使って画像を取得。その画像を添付してツイート

環境

Mac OSX El Capitan
Hubot 2.19.0
hubot-twitter 2.1.1

コード

request({method: 'GET', url: image_url,  encoding: null}, (err, res, body) ->
      if err
        console.log err
        return
      @client = new twit(keys)
      @client.post('media/upload', {media_data: btoa(body)}, (err, data, response) ->
        if err
          console.log err
          return

        @client.post('statuses/update', { status: "ツイート内容!", media_ids: [data.media_id_string] }, (err, data, response) ->
          if err
            console.log err
            return
        )

ポイント

  • 画像添付には画像のアップロードとツイートの2ステップ必要
  • robot.httpモジュールじゃなくて、requestモジュールを使う
    • encoding: nullが重要で、これによってレスポンスのbodyがbufferのまま返される。
  •  画像データをbase64でエンコード

    • twitter API Documentによると以下の形式のみ許可してるようなのでbase64に変換した
      • raw binary (media parameter)
      • base64-encoded contents (media_data parameter)
  • ツイート時に画像をアップロードしたときのレスポンスにあるmedia_id_stringを一緒に記述

画像を添付してツイートができました。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1