LoginSignup
7
5

More than 5 years have passed since last update.

Ruby で Twitter に画像を投稿&ダウンロードする

Posted at

twitter_api ライブラリのインストール

Twitter API のラッパー・ライブラリ https://rubygems.org/gems/twitter_api をインストール。

$ gem install twitter_api

サンプルコード

require 'twitter_api'
require 'json'
require 'open-uri'

# Twitter API の認証情報をセット
t = TwitterAPI::Client.new({
  :consumer_key => 'YOUR_CONSUMER_KEY',
  :consumer_secret => 'YOUR_CONSUMER_SECRET',
  :token => 'YOUR_ACCESS_TOKEN',
  :token_secret => 'YOUR_ACCESS_SECRET'
})

# PNG画像をアップロードして media_id を取得
image_1 = File.open('sample1.png', 'rb').read
res_1 = t.media_upload({'media' => image_1})
media_id_1 = JSON.parse(res_1.body)['media_id_string']

# JPEG画像をアップロードして media_id を取得
image_2 = File.open('sample2.jpg', 'rb').read
res_2 = t.media_upload({'media' => image_2})
media_id_2 = JSON.parse(res_2.body)['media_id_string']

# media_id を指定して画像付きツイートを投稿
res_3 = t.statuses_update({
  'status' => "hello, こんにちは #{Time.now.to_i}",
  'media_ids' => media_id_1 + ',' + media_id_2 # カンマ区切り
})
status_id = JSON.parse(res_3.body)['id_str']

# ツイート情報を取得して画像をダウンロード
res_4 = t.statuses_show_id({'id' => status_id})
tweet = JSON.parse(res_4.body)
puts tweet['text'] # ツイートのテキストを出力
tweet['extended_entities']['media'].each do |media|
  url = media['media_url']
  puts url # 画像のURLを出力
  name = File.basename(url)
  # 画像をダウンロードして保存
  open(name, 'wb').write(open(url).read)
end

参考資料

7
5
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
7
5