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

AWS SAMを使って署名付きURL発行APIを作る

S3の署名付きURL発行機能の検証を兼ねて、S3のキーをパラメータとして受け取り、署名付きURLを発行するAPIを作ってみました。

Rails Application Templateを使ってみた

やろうやろうと先延ばしにしていたRails Application Templateを使ってみました。

bundle install 時に An error occured while installing json (1.7.7)

mac で bundle install を実行した際に下記エラーが発生