精神分析bot(仮)

tolchok: 精神分析bot:「ネクタイ」「貝」「空を飛ぶ」などのキーワードに対して、「ペニス」「ヴァギナ」「勃起」などとreplyする。誰かつくって

http://twitter.com/tolchok/status/2451579742

簡単に書いてみる

import re
import urllib2
import simplejson
import twitter

def make_reply(content):
    dic = {u'空を飛':u'勃起', u'ネクタイ':u'ペニス', u'貝':u'ヴァギナ'}
    match = re.search(u'(空を飛|ネクタイ|貝)', content)
    if match:
            return dic[match.group(1)]
    else:
            return u'脱構築'
		
#最後に取得したステータスID
file_timeline = open('*****', 'r')
id_timeline = float(file_timeline.readline())
file_timeline.close()

file_replies = open('*****', 'r')
id_replies = float(file_replies.readline())
file_replies.close()

#Twitter検索から取得
opener = urllib2.build_opener()
#(空を飛 or ネクタイ or 貝) and (精神分析 or 夢) -twitter_id
json = opener.open('http://pcod.no-ip.org/yats/search?query=%28空を飛+or+ネクタイ+or+貝%29+%29精神分析+or+夢%29+-twitter_id&lang=ja&json&fast').read()
tweets = simplejson.loads(json)

#Replyから取得
api = twitter.Api('twitter_id','*****')
reply = api.GetReplies()
replies = [{"user":s.user.screen_name, "content":s.text, "id":s.id} for s in reply]

#新しい発言があれば実行
for post_tweets in tweets:
	if float(post_tweets['id']) > id_timeline:
		word_tweets = make_reply(post_tweets['content'])
		status = api.PostUpdate("@" + post_tweets['user'] + " " + word_tweets)

for post_replies in replies:
	if float(post_replies['id']) > id_replies:
		word_replies = make_reply(post_replies['content'])
		status = api.PostUpdate("@" + post_replies['user'] + " " + word_replies)

#ステータスIDを記録
if tweets:
	file_timeline = open('*****', 'w')
	file_timeline.write(str(tweets[0]['id']))
	file_timeline.close()

if replies:
	file_replies = open('*****', 'w')
	file_replies.write(str(replies[0]['id']))
	file_replies.close()