Esempio n. 1
0
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)
Esempio n. 2
0
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()
Esempio n. 3
0
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()
Esempio n. 4
0
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)
Esempio n. 5
0
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)
Esempio n. 6
0
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)
Esempio n. 7
0
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)
Esempio n. 8
0
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)
Esempio n. 9
0
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)
Esempio n. 10
0
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()
Esempio n. 11
0
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()
Esempio n. 12
0
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()
Esempio n. 13
0
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()