[ruby][twitter]画像付きのツイートをする
twitter apiを使うとapi経由で画像付きのツイートをすることが可能なので簡単なサンプルを作って検証してみました。
- 適当なディレクトリを作成
mkdir tweet_img
cd tweet_img
mkdir tmp
chmod 777 tmp
2014/09/11 追記
@nobu_ohta からアドバイスをもらい、save_to_tempfileメソッドをなくしてコードが短くなりました。
@nobu_ohta ありがとうございます。
# Gemfile
source 'https://rubygems.org'
gem 'twitter'
gem 'pry'
# tweet.rb
require 'rubygems'
require 'bundler'
require 'open-uri'
Bundler.require
CONSUMER_KEY = 'YOUR CONSUMER_KEY'
CONSUMER_SECRET = 'YOUR CONSUMER_SECRET'
ACCESS_TOKEN_KEY = 'YOUR ACCESS_TOKEN_KEY'
ACCESS_SECRET = 'YOUR ACCESS_SECRET'
begin
twitter_client = Twitter::REST::Client.new do |config|
config.consumer_key = CONSUMER_KEY
config.consumer_secret = CONSUMER_SECRET
config.access_token = ACCESS_TOKEN_KEY
config.access_token_secret = ACCESS_SECRET
end
str_out = "週刊Qiita http://weekly-qiita.tumblr.com/"
# 画像URLを指定して投稿する場合
open('http://31.media.tumblr.com/46357316a82380b30cddcaaed8d608d1/tumblr_n18p7ehIGl1ttxb2qo2_r1_1280.png') do |tmp|
twitter_client.update_with_media(str_out, tmp)
end
# localの画像を指定する場合はこちら
#twitter_client.update_with_media(str_out, open("./sample.png"))
rescue => e
STDERR.puts "[EXCEPTION] " + e.to_s
exit 1
end
- 画像ツイート
bundle exec ruby tweet.rb
これで画像付きツイートができました。
なお TwitterCardsが設定されたURLと画像投稿を一緒にやってみたのですが、この場合は画像表示が優先されました。
TwitterCardはツイートの詳細じゃないと表示されないですが、画像投稿の場合はタイムライン上に表示されるので、他の人から目につきやすくなりますね。