300億円欲しい

メジャーリーグのデータ解析します

何を食べたらいいのかを教えてくれるbotを作りたい

序論

お腹が空いて, 何食べようかな...と考えても, 何も思い浮かばないときってありますよね.

友達や家族と一緒にいるなら, 「何食べたい?」と尋ねればいいと思います..
しかし, 僕は基本的に1人でいます.
どうすればいいのでしょう.

こんな状況を打開したいので, botを作ります.
「何食べようかな」とつぶやくと, 適当な料理名を返してくれるようなbotが欲しいです.

作りました.

TwitterBotを作る

Rubytwitterライブラリを利用して, botを作成します.
タイムラインから「何食べよう」という言葉を見つけたら,
つぶやいた人に適当な料理名を含むメンションを飛ばす, というものです.

手順1 BotTwitterアカウントを作る

Twitterアカウントを作ります.
アカウント作成の際にメールアドレスを要求されます.

Gmailアカウント1つで無限にメールアドレスを作成できます.

http://www.tabroid.jp/news/2013/10/gmail-manyservice.html

Gmailアドレスに "."や "+hoge"をつければ新しいアドレスになります.

手順2 いろいろKeyを取得する.

ここからConsumer Key, Consumer Secret, Access token, Access Secretを取得します.

https://dev.twitter.com

よく分からなければググってください.

手順3 料理名の入ったファイルを作る

料理名がたくさん入ったファイルを作ります.
ここから料理名をサンプルして, メンションを飛ばすようにします.

豆腐丼
トマトとなすのカレー
トマトのチキンドリア
鶏雑炊
ねぎとろ丼
バターライス
ひつまぶし
ピザ
豚丼
豚の生姜焼き丼
ほうれん草のグラタン
舞茸丼
ミラノ風ドリア
ミートソースドリア
焼きおにぎり
ライスバーガー
レタス炒飯
(以下, 1000個くらい続く)

適当なWebサイトなどからコピペして整形します.
ファイルの名前はryouri.txtとして保存しておきます.

豆腐丼は美味しんぼ快楽亭ブラックさんが作っていました.
f:id:gg_hatano:20131106230719j:plain
究極メニューvs至高のメニューの豆腐対決の回で出てきました.

美味しんぼ(22) (ビッグコミックス)

美味しんぼ(22) (ビッグコミックス)

手順4 コードを書く

rubytwitterライブラリを利用します. gemとかでインストールしてください.

#!/usr/bin/ruby -Ku

# which ruby として, rubyの場所を確認して入力

require 'twitter'
require 'pp'
require 'rubygems'
require 'kconv'

# 取得したKEYなどを入力
@client = Twitter::Client.new(
  :consumer_key => "CONSUMER_KEY", 
  :consumer_secret => "CONSUMER_SECRET", 
  :oauth_token => "OAUTH_TOKEN",
  :oauth_token_secret => "OAUTH_TOKEN_SECRET
)

username = 'gg_hatnao_bot' # botの名前

loop{
  begin
    timeline = @client.home_timeline()
  rescue Timeout::Error, StandardError
    puts "タイムラインが取得できませんでした"
  else
    timeline.each{|status|
      if status[:text].include?("何食べよう") && status[:user][:screen_name] != username
        ryouri_array = open("ryouri.txt").read.split("\n").delete_if{|tweet| tweet.strip.empty?}
        ryouri = ryouri_array.sample
        str = "@#{status[:user][:screen_name]} #{ryouri}"
        pp str
        @client.update(str)
      end
    }
  end
  sleep 60  # 60秒に1回タイムラインを取得して反応
}

手順5 実行してみる

このrbファイルを実行すると...

ちゃんと反応してくれました.

f:id:gg_hatano:20131106225843p:plain

ほうれん草のグラタン食べます.

感想

これでぼっち飯が捗りますね!