Home > Ruby | コンピュータ | プログラミング > ミルカさんボット

ミルカさんボット

ベクトルってつぶやきに反応してこっそり「…ヴェクタ」とつぶやくbotとかいないかな

という要望があったので作ってみた。

基本

ほとんどの手順は株ニュースと同じ。今回はTwitter::Searchを使う。結果をHashie::Meshで受け取るので、必要なものだけ取り出す。一度RTしたものには反応しないことにする。

以下ソース。

#!/opt/local/bin/ruby -Ku
require 'rubygems'
require 'mechanize'
require 'nokogiri'
require 'kconv'
require 'logger'

require 'oauth'
require 'twitter'

#---------------------------------------------------------------------------
# 定数
#---------------------------------------------------------------------------

CONSUMER_KEY = "きー"
CONSUMER_SECRET = "しーくれっと"
ACCESS_TOKEN = "とーくん"
ACCESS_TOKEN_SECRET = "とーくんしーくれっと"

#---------------------------------------------------------------------------
# Retweet
#---------------------------------------------------------------------------
def retweet( r )

	user = r["from_user"]
	text = r["text"]
	id = r["id"].to_s

	# もともと「ヴェクタ」を喋るものには反応しない
	return if text.include?("ヴェクタ")

	# 手抜き
	f = open("recent_tweet.txt", "a")
	f.close

	# 過去にRTしているか調べる
	f = open("recent_tweet.txt", "r")
	while recent_id = f.gets
		if recent_id.include?(id) then
			f.close
			return
		end
	end

	# RTする
	f = open("recent_tweet.txt", "a")
	f.puts(id)
	consumer = OAuth::Consumer.new(CONSUMER_KEY, CONSUMER_SECRET, :site => "http://twitter.com")
	oauth = Twitter::OAuth.new(CONSUMER_KEY, CONSUMER_SECRET)
	oauth.authorize_from_access(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
	twitter_client = Twitter::Base.new(oauth)

	tweet = "...ヴェクタ QT @#{user} #{text}"
	twitter_client.update(tweet, {:in_reply_to_status_id => id})
#	twitter_client.update(tweet)
	$log.info("Twitterに投稿しました:" + tweet)
	f.close

end

#---------------------------------------------------------------------------
# main
#---------------------------------------------------------------------------
def main

	Twitter::Search.new('ベクトル').each do |r|

		if r.class == Hashie::Mash then
			retweet(r)
		end
	end
end

#---------------------------------------------------------------------------
# エントリポイント
#---------------------------------------------------------------------------

#$log = Logger.new("log.txt")
$log = Logger.new(STDOUT)
$log.level = Logger::INFO

main

Comments:0

Comment Form
Remember personal info

Trackback+Pingback:0

TrackBack URL for this entry
http://blog.neoneet.jp/2010/05/18/%e3%83%9f%e3%83%ab%e3%82%ab%e3%81%95%e3%82%93%e3%83%9c%e3%83%83%e3%83%88/trackback/
Listed below are links to weblogs that reference
ミルカさんボット from 週刊(月刊?)プレカリアート

Home > Ruby | コンピュータ | プログラミング > ミルカさんボット

Search
Feeds
Meta

Page Top