Ruby で Twitter に画像を投稿&ダウンロードする
7720 ワード
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
参考資料
- twitter_api | RubyGems.org | your community gem host https://rubygems.org/gems/twitter_api
- POST media/upload — Twitter Developers https://dev.twitter.com/rest/reference/post/media/upload
- POST statuses/update — Twitter Developers https://dev.twitter.com/rest/reference/post/statuses/update
- GET statuses/show/:id — Twitter Developers https://dev.twitter.com/rest/reference/get/statuses/show/id
Author And Source
この問題について(Ruby で Twitter に画像を投稿&ダウンロードする), 我々は、より多くの情報をここで見つけました https://qiita.com/niwasawa/items/ddec18ad77d6e944795f著者帰属:元の著者の情報は、元の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 .