Created
October 6, 2010 08:08
-
-
Save hisasann/612998 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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