def generator(): #sched = scheduler.Scheduler() #sched.schedule() u = LoadUserData(conf_path) table, footer = readReplyTable.read(exec_path + "/common/replyTable.json") dbSession = model.startSession(u) if False: #if( sched.has_schedule() ): str = doSchedule(sched) else: rep = dbSession.query(model.RetQueue) if (rep.count() > 0): sentence, reply_id = reply.do(table, rep, dbSession) else: #try: # 予定もreplyもないならhotでも取り出してマルコフ連鎖する # str,sl = CreateMarkovSentenceWithHot(dbSession) #except: # print "Unexpected error:", sys.exc_info()[0] str, sl = vsearch.depthFirstSearch2("yystart", "yyend", 15) print_d(str) print_d(len(sl)) asl = afterEffect(sl, footer) sentence = "" reply_id = -1 for i in asl: sentence += i sendMessage(sentence, reply_id)
def main(): # twitterから発言を取ってきてDBに格納する userdata = getAuthData(conf_path) tw = auth_api.connect(userdata["consumer_token"], userdata["consumer_secret"], exec_path + "/common/") dbSession = model.startSession(userdata) page_number = 0 update_flag = True while update_flag: update_flag = False l = tw.home_timeline(page=page_number) page_number += 1 if page_number > 10: break for s in l: #if s.author.screen_name == userdata["user"]:continue jTime = s.created_at + datetime.timedelta(hours=9) name = unicode(s.user.screen_name) query = dbSession.query(model.Tweet).filter( and_(model.Tweet.datetime == jTime, model.Tweet.user == name)) if (query.count() > 0): continue if (isNGUser(name)): continue update_flag = True t = model.Tweet() t.user = name t.text = s.text t.datetime = jTime t.replyID = s.in_reply_to_status_id t.tweetID = s.id #print "id:",s.id, dbSession.add(t) dbSession.commit()
def quickAnalyze(): # dbからデータを読み込む u = LoadUserData(conf_path) dbSession = model.startSession(u) table, footer = readReplyTable.read(exec_path + "/common/replyTable.json") regexes = makeRegexes(table) # 前回の更新時間から現在までのデータを入手する q = dbSession.query(model.Tweet) tq = q.filter(model.Tweet.isAnalyze == 0)[:10000] for t in tq: #1発言毎 t.text = RemoveCharacter(t.text) #print_d2(t.text) analyzeReply2(t,dbSession,table,regexes) t.isAnalyze = 1 t_enc = t.text.encode(g_mecabencode,'ignore') sarray = mecab.sparse_all(t_enc,mecabPath).split("\n") sarray2 = connectUnderScore(sarray) markovWordList,topNWordList = TakeWordList(sarray) #最近出た名詞貯める for tn in topNWordList: hot = model.Hot() hot.word = unicode(tn,g_systemencode) dbSession.add(hot) dbSession.add(t) dbSession.commit()
def generator(): #sched = scheduler.Scheduler() #sched.schedule() u = LoadUserData(conf_path) table, footer= readReplyTable.read(exec_path+"/common/replyTable.json") dbSession = model.startSession(u) if False: #if( sched.has_schedule() ): str = doSchedule(sched) else: rep = dbSession.query(model.RetQueue) if( rep.count() > 0 ): sentence, reply_id = reply.do(table, rep, dbSession) else: #try: # 予定もreplyもないならhotでも取り出してマルコフ連鎖する # str,sl = CreateMarkovSentenceWithHot(dbSession) #except: # print "Unexpected error:", sys.exc_info()[0] str,sl = vsearch.depthFirstSearch2("yystart","yyend",15) print_d(str) print_d(len(sl)) asl = afterEffect(sl,footer) sentence = "" reply_id = -1 for i in asl: sentence += i sendMessage(sentence, reply_id)
def main(): #sys.stdout = codecs.getwriter('utf_8')(sys.stdout) user = getAuthData(conf_path) session = model.startSession(user) api = auth_api.connect(user["consumer_token"], user["consumer_secret"]) #api = tweepy_connect.connect() remove_at(session)
def quickGenerate(): #sched = scheduler.Scheduler() #sched.schedule() u = LoadUserData(conf_path) table, footer= readReplyTable.read(exec_path+"/common/replyTable.json") dbSession = model.startSession(u) if False: if( sched.has_schedule() ): str = doSchedule(sched) else: rep = dbSession.query(model.RetQueue) if( rep.count() > 0 ): str, reply_id = reply.do(table, rep,dbSession) sendMessage(str,reply_id)
def main(str, newSession=None): global session sys.stdout = codecs.getwriter('utf_8')(sys.stdout) #print "conf_path", conf_path user = getAuthData(conf_path) if session == None: if newSession == None: session = model.startSession(user) else: session = newSession api = auth_api.connect(user["consumer_token"], user["consumer_secret"],\ common_path) #api = tweepy_connect.connect() return pickup_reply(str)
def main(): # twitterから発言を取ってきてDBに格納する userdata = read_json(conf_path) g_ng_char = read_json(ng_char_path) tw = auth_api.connect(userdata["consumer_token"], userdata["consumer_secret"], exec_path + "/common/") #print tw.rate_limit_status() dbSession = model.startSession(userdata) page_number = 0 update_flag = True while update_flag: update_flag = False page_number += 1 if page_number > 1: break #l = tw.home_timeline(page = page_number, count=10) #Toyko座標ベタ打ち woeid = tw.trends_closest(35.652832, 139.839478)[0]['woeid'] trends_place = tw.trends_place(woeid) l = trends_place[0]['trends'] for s in l: trend = s['name'] if trend.startswith("#"): trend = trend[1:] #print(trend) update_flag = check_text(trend, dbSession) if (not (update_flag)): continue if (random.randint(0, 1)): text = "な、なによ……! ニコだって" + trend +\ "くらいできるんだから!!" else: text = trend + "と言えば?\nニコニー♪\nかわいい" +\ trend +"と言えば?\nニコニー♪" try: tw.update_status(text) print("trend " + trend) except tweepy.TweepError: pass #print("flag: ", update_flag) if update_flag: break dbSession.commit()
def analyze(): # dbからデータを読み込む userdata = getAuthData(conf_path) dbSession = model.startSession(userdata) # 前回の更新時間から現在までのデータを入手する q = dbSession.query(model.Tweet) # ToDo:ここ、1000件ずつ取って、一定件数溜まったらDBに書き込むように変えられないか? insertData = defaultdict(int) while True: tq = q.filter(model.Tweet.isAnalyze == 1)[:1000] i = 0 if len(tq) == 0: break for t in tq: # 1発言毎 t.text = removeCharacter(t.text) t.isAnalyze = 2 t_enc = t.text.encode(g_mecabencode, "ignore") sarray = mecab.sparse_all(t_enc, mecabPath).split("\n") sarray2 = connectUnderScore(sarray) markovWordList, topNWordList = takeWordList(sarray2) print len(markovWordList) # 最近出た名詞貯める dbSession.add(t) appendMarkov(markovWordList, dbSession, insertData) # appendCollocation(markovWordList,dbSession) i += 1 if i >= 1000: insertMarkovData2DB(dbSession, insertData) dbSession.commit() insertData = defaultdict(int) i = 0 if len(insertData) > 0: insertMarkovData2DB(dbSession, insertData) dbSession.commit()
def analyze(): # dbからデータを読み込む userdata = getAuthData(conf_path) dbSession = model.startSession(userdata) # 前回の更新時間から現在までのデータを入手する q = dbSession.query(model.Tweet) # ToDo:ここ、1000件ずつ取って、一定件数溜まったらDBに書き込むように変えられないか? insertData = defaultdict(int) while (True): tq = q.filter(model.Tweet.isAnalyze == 1)[:1000] i = 0 if len(tq) == 0: break for t in tq: #1発言毎 t.text = removeCharacter(t.text) t.isAnalyze = 2 t_enc = t.text.encode(g_mecabencode, 'ignore') sarray = mecab.sparse_all(t_enc, mecabPath).split("\n") sarray2 = connectUnderScore(sarray) markovWordList, topNWordList = takeWordList(sarray2) print len(markovWordList) #最近出た名詞貯める dbSession.add(t) appendMarkov(markovWordList, dbSession, insertData) #appendCollocation(markovWordList,dbSession) i += 1 if i >= 1000: insertMarkovData2DB(dbSession, insertData) dbSession.commit() insertData = defaultdict(int) i = 0 if len(insertData) > 0: insertMarkovData2DB(dbSession, insertData) dbSession.commit()
def main(): # twitterから発言を取ってきてDBに格納する userdata = getAuthData(conf_path) tw = auth_api.connect(userdata["consumer_token"], userdata["consumer_secret"], exec_path+"/common/") dbSession = model.startSession(userdata) page_number = 0 update_flag = True while update_flag: update_flag = False l = tw.home_timeline(page = page_number, count=200) page_number += 1 if page_number > 10: break for s in l: #if s.author.screen_name == userdata["user"]:continue jTime = s.created_at + datetime.timedelta(hours = 9) name = unicode(s.user.screen_name) query = dbSession.query(model.Tweet).filter( and_(model.Tweet.datetime== jTime, model.Tweet.user==name )) if( query.count() > 0 ): continue if( isNGUser(name) ): continue update_flag = True t = model.Tweet() t.user = name t.text = s.text t.datetime = jTime t.replyID = s.in_reply_to_status_id t.tweetID = s.id #print "id:",s.id, dbSession.add(t) dbSession.commit() dbSession.close()