Skip to content

Instantly share code, notes, and snippets.

@seratch
Last active August 29, 2015 14:05
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save seratch/668b7925e8b9bec2c040 to your computer and use it in GitHub Desktop.
Save seratch/668b7925e8b9bec2c040 to your computer and use it in GitHub Desktop.
Twitter Bot for Web Designers

Twitter Bot つくろうず

Twitter Bot ってどういう仕組み?

A Twitterbot is a program used to produce automated posts on the Twitter microblogging service, or to automatically follow Twitter users. (Wikipedia)

利用者の Twitter アカウント関する操作権限をもらって何かするもの。つぶやいたり、フォローしたり、ふぁぼったり。

Ruby でやる

Ruby のライブラリは「gem」と呼ばれる。Ruby の実行環境をインストールすると gem というコマンドが使えるようになっているので gem install xxx で gem をインストールする。

https://rubygems.org/

ちなみにこれは私がつくって公開している gem の一覧。

https://rubygems.org/profiles/seratch

twitter gem

ずばりそのまま twitter という名前の gem があるので今回はそれを使う。

gem install twitter

Ruby を試すのには REPL(Read Eval Print Loop) という対話環境を使う。Ruby をインストールしてあれば irb というのが使える。 もう少しリッチな pry というのもあるので、この辺は好みで。gem install pry で pry コマンドを使えるようになる。

gem install twitter してあれば irb 上で以下のようなアプリケーションが実行できる。

# モジュールを読み込む、起動したら必ずやる
require 'twitter'

# https://apps.twitter.com/ で app を作ってその API Keys タブに行くと以下の 4 つのキーが得られる
# デフォルトでは Read-only になっているので Permissions から Read-Write な access token を re-generate してください
client = Twitter::REST::Client.new do |config|
  # 注意:これらは GitHub などで公開してはいけない設定
  # 環境変数は ENV['HOME'] のようにして Ruby のコード上で取得できるので
  # export TWITTER_CONSUMER_KEY=xxx のようにして 
  # ENV['TWITTER_CONSUMER_KEY'] として取得する方がよいです
  config.consumer_key    = "YOUR_CONSUMER_KEY"
  config.consumer_secret = "YOUR_CONSUMER_SECRET"
  config.access_token        = "YOUR_ACCESS_TOKEN"
  config.access_token_secret = "YOUR_ACCESS_SECRET"
end

# この辺を見るとたいがいのことはできる 
# http://rdoc.info/gems/twitter#Usage_Examples
# http://rdoc.info/gems/twitter/Twitter/REST/Client

# つぶやいてみる
tweet = client.update('デザイナーの皆さんに twitter gem の使い方を教えているところ #m3dev')
tweet.attrs

# follow me!
client.follow('seratch_ja')

# タイムラインを見る
tweets = client.home_timeline
tweets.size

# 分かりづらいので属性を見てみる
tweet = tweets.first
tweet.attrs
# ざっと全部見る
tweets.map { |t| t.attrs }

# 必要なものだけ取り出す
user_names = tweets.map { |t| t.user.screen_name }.uniq
tweets.map { |t| "#{t.text} by @#{t.user.screen_name}" }

# オプションを指定する
# http://rdoc.info/gems/twitter/Twitter/REST/Timelines#home_timeline-instance_method
tweets = client.home_timeline(count: 100, include_rts: false)
tweets.map { |t| t.text }

そんな感じで色々遊んでみましょう。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment