DesignAssembler

備忘録に近い

Rubyで書いたTwitterのbotをRaspberry Piで動かす

こんにちは。

現在web周りの勉強をしていて、とりあえずTwitterbotRubyで作りました。

Raspberry Piで動かすのになんでPythonじゃないんだ!って話ですけど、Rubyを勉強したかったので

手順

・キーの取得
twitter gem のインストール
Rubyスクリプトを書く
・cronに登録

キーの取得

botスクリプトを実行させるためにTwitter Developerに登録します。

まずはTwitterDeveloperのサイト Twitter Developers にアクセス

f:id:hyottokoaloha:20150420152407p:plain

まずTwitterアカウントでログインをしてください。

次にフッターにある"TOOLS"の"Manage Your Apps"にアクセスします。

f:id:hyottokoaloha:20150420152519p:plain

そしたら以下のような画面になると思うのでCreate New Appボタンをクリックしてください

以下を適当に入力して同意にチェックしたらCreate your Twitter applicationボタンを押してください
f:id:hyottokoaloha:20150420152919p:plain

するとエラーが・・・
f:id:hyottokoaloha:20150420153005p:plain

Twitterアカウントに電話番号を登録しろと怒られるので登録します。業者対策ですね。

※電話番号の登録の時に+81の続きを入力するのですが、この時電話番号の最初の0を抜いた番号を入力しないと登録できません。

無事に登録できました。
f:id:hyottokoaloha:20150420153629p:plain

ここでKeys and Access Tokensタブに移動してConsumer KeyとConsumer Secretをメモします。

アクセストークンはToken ActionsのCreate my access tokenボタンをクリックして生成します。これもメモしてください。

以上でキーの取得は終了です。


twitter gemを追加する

Raspberry PiにRubyをインストールする手順は別記事にします。(メチャクチャ手間取った)

※追記:Rubyのインストール方法書きましたhyottokoaloha.hatenablog.com


Rubyにはgemという便利な機能があります。

gemというのは簡単に言うとコマンド一発でライブラリをネットからダウンロード、インストールし使える状態にしてくれるものです。

ここではTwitterAPIを使用するため twitter gem をインストールします。

以下のコマンドを入力してください。

$ sudo gem install twitter

※事前にアップデートしてください。

これでスクリプトを書く準備が整いました。

Rubyスクリプトを書く

事前に投稿したい文章をsentences.txtに1行ずつ書いてください。

ではスクリプト部分に移ります。

require 'twitter'

client = Twitter::REST::Client.new do |config|
  config.consumer_key          =  "コンシューマーキー"
  config.consumer_secret       =  "コンシューマーシークレット"
  config.access_token          =  "アクセストークン"
  config.access_token_secret   = "アクセストークンシークレット"
end

s=[]
File.open("sentences.txt","r") do |l|
  l.each_line do |line|
    s.push(line)
  end
end
client.update(s.sample)

事前にTwitterDeveloperで取得した各キーをここで使います。

テキストファイル(ここではsentences.txt)から1行ずつ文章を読んで配列sに代入して最後にその配列の要素1つをランダムに取ってTwitterに投げています。

cronに登録する

cronとは、コマンドをスケジュール実行してくれるOSの機能です。

例えば、1時間おきにbotに呟かせたい時はcronに1時間ごとにスクリプト実行コマンドを叩くよう設定します。

以下のコマンドを入力してください

$ crontab -e

出てきた入力画面に以下のように追加します。

00 * * * * ruby ~/twitterbot/bot.rb

これは毎時00分に1度コマンドを実行せよという意味になります。

これが完了すればtwitter botの出来上がりです。


まとめ

Raspberry PiにRuby入れたりtwitter gemを入れたりするのにかなり手間取りました。。。

14行でbotが作れるのは素晴らしいですね。twitter gemに感謝です。

以下のサイトを参考にさせてもらいました。ありがとうございます。

qiita.com

nwpct1.hatenablog.com


Raspberry Pi 2 ラズベリー・パイ 超小型パソコン Pi 2 MODEL B

Raspberry Pi 2 ラズベリー・パイ 超小型パソコン Pi 2 MODEL B