hello-world
webエンジニアのメモ。とりあえずやってみる。

[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はツイートの詳細じゃないと表示されないですが、画像投稿の場合はタイムライン上に表示されるので、他の人から目につきやすくなりますね。

参考


Related #Ruby

[Rails]find_or_create_byとfind_or_initialize_by

Rails4で確認。

capistranoで世代管理する際の注意点

最近、デプロイツールに capistranoを使っているのですが、世代管理の設定を勘違いしていたのでメモを残しておきます。

[rails]unicornでpryを使う

先日、pryでデバッグする という記事を書きましたが、こちらはrails server(フォアグランド)でアプリを立ち上げた際のデバッグ方法でした。