Hubotで外部から取得した画像を添付してツイートする
1539 ワード
やりたいこと
画像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を一緒に記述
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)
-
twitter API Documentによると以下の形式のみ許可してるようなのでbase64に変換した
ツイート時に画像をアップロードしたときのレスポンスにあるmedia_id_stringを一緒に記述
画像を添付してツイートができました。
Author And Source
この問題について(Hubotで外部から取得した画像を添付してツイートする), 我々は、より多くの情報をここで見つけました https://qiita.com/ishisak/items/af40cf62c4429b2e9291著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .