twitterのダイレクトメッセージを受信するプログラムをrubyで
この記事は古いので、プログラムが使えない可能性が高いです。
今ならrubygemのtwitterライブラリを使うのがよいと思います。Oauthも必要です。
こないだ,twitterにくだらないギャグをpostするプログラムを書いたので,今度は他の人からの投稿を受け付けて,ギャグリストに追加するプログラムを書きました.
これで誰でも思いついたくだらないギャグをsubetterに言わせることができます.
進化したsubetter
ついでに,ギャグをテキストファイルに保存するのはなんかかっこ悪いので,MySQLにも入れることにしました.いずれMySQLに完全に移行したいですが,まだ両方やってます.まだいくつか問題があって,MySQLにそのままじゃ入れられない文字の処理とか,全然よく分かってないのでその辺から修正しなきゃと思っています.
プログラムはこんな感じ.
require('rubygems')
gem('twitter4r','0.3.0')
require('twitter')
require "mysql"
flag = 0
msg = nil
my = Mysql::new("localhost", "user", "passwd", "db_name")
client =Twitter::Client.new(:login => 'subetter',:password => 'passwd')
client.messages(:received).each do |msg|
#メッセージのテキストを取得,改行文字を省く
joke = msg.text
joke = joke.strip
#メッセージの送り主を取得
user_name = msg.sender.screen_name
que = "SELECT * FROM jokes WHERE joke='" + joke + "'"
res = my.query(que)
res.each do |row|
flag = 1
end
#p flag
if flag == 0
sql = "INSERT INTO jokes VALUES ('','" + user_name + "','" + joke + "')"
#mysqlにギャグを登録
my.query(sql)
#テキストファイルにもギャグを登録
file = open("/home/jun/Dropbox/cyg/work/ruby/twitter/jokes.txt", 'a')
file.puts joke
file.close
else
flag = 0
end
end
exit
