Ruby から gem を使って Twitter API を操る(2015 夏)

Twitter API を使っていろいろやるの、前はたくさんやってたんだけど最近久々に触ったら色々違ったのでメモ。とりあえず 2015 年 6 月現在のやり方。環境は以下。Ruby そろそろ新しいの入れないとダメな気がする。

alea12@alea12-VirtualBox:~$ uname -a
Linux alea12-VirtualBox 3.16.0-23-generic #31-Ubuntu SMP Tue Oct 21 17:56:17 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
alea12@alea12-VirtualBox:~$ ruby -v
ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-linux]
alea12@alea12-VirtualBox:~$ gem search --local ^twitter$

*** LOCAL GEMS ***

twitter (5.14.0, 5.13.0)

このページ から Twitter Application を作成して、

  • consumer key
  • consumer secret
  • access token
  • access token secret

を入手しておきましょう。アプリ作成に際しては Twitter アカウントに電話番号を登録する必要があってビビった。前はいらなかった気がする。

REST API

以下のようにして作る client インスタンスに生えてる様々なメソッドを呼び出すことにより様々できます。様々については twitter gem の Rubydoc を参考にしましょう。

require 'twitter'

client = Twitter::REST::Client.new do |config|
  config.consumer_key        = ''
  config.consumer_secret     = ''
  config.access_token        = ''
  config.access_token_secret = ''
end

# 自分宛のリプライを20件取得する
client.mentions_timeline.each do |post|
  puts post.text
end

# 標準入力から受け取った文字列を投稿する
puts "入力してね: "
str = STDIN.gets.chomp.to_s
client.update(str)

# ふぁぼる
client.favorite('607472636386369536')

Streaming API

とりあえず以下でターミナル上にタイムラインをだだ流しできます。上述の REST API と組合せることで、特定のキーワードを含む POST を自動的にふぁぼれたりします。これについても活用方法は Doc に書いてあるので色々やっていきたい。

require 'twitter'

client = Twitter::Streaming::Client.new do |config|
  config.consumer_key        = ''
  config.consumer_secret     = ''
  config.access_token        = ''
  config.access_token_secret = ''
end

client.user do |object|
  if object.kind_of? Twitter::Tweet
    puts object.user.screen_name + ' ' + object.text
  end
end

感想

前は Streaming API 使うのに HTTPS の証明書とか必要だった気がする)し、もともと低かった Twitter API の敷居は更に低くなっている気がする。時間を作ってまた学生の頃みたいにくだらないアプリ量産したい。