Ruby on RailsでTwitterAPIから添付ファイル(動画・画像)付き投稿をする際のサンプル
Ruby on RailsでTwitterAPIから添付ファイル付き投稿をする際のサンプル
今回実験してみて動画(mp4)と画像(jpeg/png/gif)でソースを切り替える必要があったのでメモ代わりにサンプルを!
Gemファイル追記
# Use Twitter gem 'twitter'
ファイル展開用に読み込み
require 'open-uri'
Client設定
@client = Twitter::REST::Client.new do |config| config.consumer_key = Twitterアプリ登録からのconsumer_key config.consumer_secret = Twitterアプリ登録からのconsumer_secret config.access_token = Twitterアプリ登録からのaccess_token config.access_token_secret = Twitterアプリ登録からのaccess_token_secret end
↓Twitterアプリ登録
実処理
## ファイルオープン image = open(file_path) ## 拡張子チェック if File.extname(ile_path) == ".mp4" then ## 動画ファイルの場合 file_size = File.size(image) ## media_id発行 init_request = Twitter::REST::Request.new(@client, :post, "https://upload.twitter.com/1.1/media/upload.json", command: 'INIT', total_bytes: file_size,media_type: 'video/mp4').perform media_id = init_request[:media_id] ## ファイルアップロード Twitter::REST::Request.new(@client, :post, "https://upload.twitter.com/1.1/media/upload.json", command: 'APPEND', media_id: media_id, media: image, segment_index: 0).perform ## ファイナライズ Twitter::REST::Request.new(@client, :post, "https://upload.twitter.com/1.1/media/upload.json", command: 'FINALIZE',media_id: media_id).perform ## Twitter投稿 @client.update("@#{twitter_screen_name}\n#{reply_text}", media_ids: media_id) else ## 画像ファイルの場合 @client.update_with_media("@#{twitter_screen_name}\n#{reply_text}", image) end
備考
返信にしたい場合は
in_reply_to_status_id: 返信したい対象TweetのID
を
@client.update
の引数に追記
続き記事があるので気になる方はこちら!