Skip to content

Instantly share code, notes, and snippets.

@hisasann
Created October 6, 2010 08:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hisasann/612998 to your computer and use it in GitHub Desktop.
Save hisasann/612998 to your computer and use it in GitHub Desktop.
require "rubygems"
require "twitter"
require "date"
require "json"
require "net/http"
require "time"
$KCODE = "UTF8"
class NoTechnoNoLife
attr_accessor :tw_oauth
@@url = "notechnonolife.com"
@@suffix_msg = [
"ふ〜、疲れたよ。",
"楽しんでね!",
"当店の自慢です!いかがです?",
"あんたも好きもんだね〜",
"どう?これでしょ?",
"どうだ!この変態めっ!",
"がオススメだ〜よ。ハンパじゃないよ!",
"これしかないだろ。まじ…",
"これでどうだ!!",
"オススメしましたけど、何か?",
"オススメしたよ。グヘヘ…",
"ビール片手に読んじゃいなよYou!",
"これです。頑張りました!",
"ホレよっ。探したワシエライわ〜。"
]
@@error_msg = "うわ〜、そんな変態キーワードで検索しないでよ。あるワケないじゃん!違う言葉で検索してみてね。"
def initialize(map)
@tw_oauth = Twitter::OAuth.new(map.fetch("c-key"), map.fetch("c-secret"))
@tw_oauth.authorize_from_access(map.fetch("a-token"), map.fetch("a-token-secret"))
end
def tweet()
twit = Twitter::Base.new(@tw_oauth)
replaies = get_replaies()
replaies.each{ |replay|
userid = replay["userid"]
text = replay["text"]
message = make_message(userid, get_recent_entries(text))
if message.nil? || message.empty? then
twit.update("@" + userid + " " + @@error_msg)
else
twit.update(message)
end
}
end
def make_message(userid, map)
if map["permalink"].nil? || map["permalink"].empty? then
return ""
end
return "@" + userid + " " + map["title"].to_s + " " + map["permalink"].to_s + " " + @@suffix_msg[rand(@@suffix_msg.length)]
end
def get_recent_entries(words)
query = "re=" + parse_word(words).join("+")
return JSON.parse(Net::HTTP.get(@@url, "/recommend-entries/?#{query}"))
end
def get_replaies()
twit = Twitter::Base.new(@tw_oauth)
mentions = twit.mentions()
replaies = []
mentions.each{ |mention|
next if is_post(mention.created_at) == false
replaies.push({
"userid" => mention.user.screen_name,
"text" => mention.text
})
}
return replaies
end
def is_post(date)
hour = 300
now = Time.at(Time.now) - hour
created = Time.parse(date)
# 指定の時間前ならtrueを返す
if created.to_i > now.to_i
return true
end
return false
end
def parse_word(words)
ret = []
String.new(words).gsub(" ", " ").split(" ").each{ |word|
if word.index(/@|#|http|https|\./) then
else
ret.push(word.strip())
end
}
return ret
end
end
NoTechnoNoLife.new({
"c-key" => "XXXX",
"c-secret" => "XXXX",
"a-token" => "XXXX",
"a-token-secret" => "XXXX"
}).tweet();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment