예제 #1
0
class FBCheckHelper:
    def __init__(self):
        serverconfig = common.getDatabaseServerConfig()
        self.dbinstance = SqlServer(serverconfig[0], serverconfig[1],
                                    serverconfig[2], serverconfig[3])

    def ImportFBCheckSeed(self, seedtxtfile, origin):
        with open(seedtxtfile, 'r') as f:
            for line in f.readlines():
                if len(line.strip()) == 0:
                    continue
                now = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                sql = "use FBDB;insert into tb_fbcheck_todo(mobileoremail,publishedtime,runningState,origin) values('{0}','{1}',{2},'{3}');".format(
                    line.strip(), now, 0, origin)
                self.dbinstance.ExecNonQuery(sql)
                logHelper.getLogger().info("insert {0}".format(line))

    def LoadTopNTask(self, n):
        que = PriorityQueue()
        query = 'use FBDB;SELECT TOP {0} [id],[mobileoremail],[origin]  FROM [tb_fbcheck_todo]  WHERE [runningState]=0 order by id '.format(
            n)
        rows = self.dbinstance.ExecQuery(query)

        for row in rows:
            r = common.FBCheckTodo(int(row[0]), row[1], row[2])
            tup = (int(row[0]), r)
            que.put(tup)

        return que

    def SetRuningState(self, id, state):
        sql = 'use FBDB;UPDATE tb_fbcheck_todo SET runningState = {0} WHERE id={1}'.format(
            state, id)
        self.dbinstance.ExecNonQuery(sql)

    def SetCompleteState(self, id, runningState, desc):
        sql = "use FBDB;UPDATE tb_fbcheck_todo SET runningState = {0},completedTime = GETDATE(),Description = '{1}' WHERE id={2}".format(
            runningState, desc, id)
        logHelper.getLogger().debug(sql)
        self.dbinstance.ExecNonQuery(sql)

    def SaveResultToDB(self, lstResult):
        sql = "use FBDB;insert into tb_fbcheck_result(mobileoremail,hasRegistered,Fbid,userName,homepage,Logourl,Description,origin) VALUES('{0}',{1},{2},'{3}','{4}','{5}','{6}','{7}')"
        sql = sql.format(lstResult[0], lstResult[1], lstResult[2],
                         lstResult[3], lstResult[4], lstResult[5],
                         lstResult[6], lstResult[7])
        print(sql)
        self.dbinstance.ExecNonQuery(sql)
예제 #2
0
def DiscoveryMain(Framework):
    OSHVResult = ObjectStateHolderVector()
    CmdbOIDFactory = CmdbObjectID.Factory
    hostId = CmdbOIDFactory.restoreObjectID(
        Framework.getDestinationAttribute('hostId'))
    sqlServerId = CmdbOIDFactory.restoreObjectID(
        Framework.getDestinationAttribute('id'))

    try:
        props = Properties()

        instance_name = Framework.getDestinationAttribute('instanceName')
        if instance_name and instance_name != 'NA' and instance_name.find(
                '\\') != -1:
            props.setProperty('sqlprotocol_dbsid',
                              instance_name[instance_name.find('\\') + 1:])
        mssqlClient = Framework.createClient(props)
        connection = SqlServerConnection.ClientSqlServerConnection(mssqlClient)
        logger.debug("got connection")
        discoveryOptions = SqlServerDiscoveryOptions()
        discoveryOptions.discoverConfigs = Boolean.parseBoolean(
            Framework.getParameter('discoverConfigs'))
        discoveryOptions.discoverDbUser = Boolean.parseBoolean(
            Framework.getParameter('discoverDbUser'))
        discoveryOptions.discoverSqlFile = Boolean.parseBoolean(
            Framework.getParameter('discoverSqlFile'))
        discoveryOptions.discoverSqlJob = Boolean.parseBoolean(
            Framework.getParameter('discoverSqlJob'))
        discoveryOptions.discoverProcedures = Boolean.parseBoolean(
            Framework.getParameter('discoverStoredProcedures'))
        discoveryOptions.discoverInternalProcedures = Boolean.parseBoolean(
            Framework.getParameter('discoverInternalProcedures'))

        sqlServer = SqlServer.SqlServer(connection, discoveryOptions)
        OSHVResult.addAll(
            sqlServer.collectData(hostId, sqlServerId,
                                  discoveryOptions.discoverConfigs))
        mssqlClient.close()
    except JavaException, ex:
        strException = ex.getMessage()
        errormessages.resolveAndReport(strException,
                                       ClientsConsts.SQL_PROTOCOL_NAME,
                                       Framework)
예제 #3
0
 def __init__(self):
     serverconfig = common.getDatabaseServerConfig()
     self.dbinstance = SqlServer(serverconfig[0], serverconfig[1],
                                 serverconfig[2], serverconfig[3])
예제 #4
0
class FBUserHelper:
    def __init__(self):
        serverconfig = common.getDatabaseServerConfig()
        self.dbinstance = SqlServer(serverconfig[0], serverconfig[1],
                                    serverconfig[2], serverconfig[3])

    def ImportFBUserSeed(self, seedtxtfile, origin):
        with open(seedtxtfile, 'r', encoding='UTF-8') as f:
            for line in f.readlines():
                line = line.strip()
                if len(line) == 0:
                    continue
                now = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                acount = line.split(',')
                fbid = acount[0].strip("\ufeff").strip()
                name = acount[1].strip()
                mail = ''
                if len(acount) > 2:
                    mail = acount[2].strip()

                sql = "insert into tb_seed_user(fbid,name,mobileoremail,origin,publishedtime,hasTasked) values(%d,%s,%s,%s,%s,0);"
                param = (fbid, name, mail, origin, now)
                self.dbinstance.ExecNonQuery(sql, param)
                logHelper.getLogger().info("insert {0}".format(line))

    def GenerateUserTask(self, tasktype):
        '''
        从种子生成任务,按照任务类型,将所有未运行种子都导入
        :param tasktype:
        :return:
        '''
        sql = "insert into tb_task_user(fbid,tasktype,priority,runningstate,deep,name) select fbid,%s,100,0,0,name from tb_seed_user where hastasked = 0;update tb_seed_user set hasTasked = 1,taskedTime=GETDATE() where hastasked = 0"
        logHelper.getLogger().debug(sql)
        param = (tasktype)
        c = self.dbinstance.ExecNonQuery(sql, param)
        logHelper.getLogger().debug('Generate User Task From Seed is OK!')
        return c

    def LoadTopNTask(self, n, tasktype):
        que = PriorityQueue()
        query = "SELECT TOP {0} id,priority,fbid,originalfbid,deep,name  FROM tb_task_user  WHERE runningState=0 and Tasktype = '{1}' order by deep,priority DESC".format(
            n, tasktype)
        rows, c = self.dbinstance.ExecQuery(query)

        for row in rows:
            originfbid = row[3]
            deep = row[4]
            name = row[5]
            if row[3] is None:
                originfbid = ''
            if row[4] is None:
                deep = '3'
            if row[5] is None:
                name = ''

            r = common.FBTask(
                row[0], row[1], row[2], tasktype, originfbid, int(deep), name
            )  #def __init__(self,id,priority,fbid,tasktype,originalfbid,deep,name):
            # for i in range(5):
            #     logHelper.getLogger().debug(row[i])
            tup = (row[1], r)  #priority作为优先级
            que.put(tup)

        return que

    def SetRuningState(self, id, state):
        sql = 'UPDATE tb_task_user SET runningState = %d WHERE id=%d'
        param = (state, id)
        self.dbinstance.ExecNonQuery(sql, param)

    def SetCompleteState(self, id, runningState, desc):
        sql = "UPDATE tb_task_user SET runningState = %d,completedTime = GETDATE(),Description = %s WHERE id=%d"
        param = (runningState, desc, id)
        logHelper.getLogger().debug(sql)
        self.dbinstance.ExecNonQuery(sql, param)

    # 保存关系,传入一个字典
    def Save_tb_user_relationship(self, dicResult):
        #dicResult={'fbida':'111','fbidb':'222','relationtype':'friend'}
        sql = "\
                    IF NOT EXISTS(SELECT * FROM tb_user_relationship WHERE fbida = %d AND fbidb = %d AND relationtype = %s) \
                BEGIN\
                    insert into tb_user_relationship(fbida,fbidb,namea,nameb,relationtype,crawledTime,relationclass) VALUES\
                    (%d,%d,%s,%s,%s,GETDATE(),%s)\
                END"

        # sql = sql.format(fbida=dicResult['fbida'],fbidb=dicResult['fbidb'],relationtype=dicResult['relationtype'])
        param = (dicResult['fbida'], dicResult['fbidb'],
                 dicResult['relationtype'], dicResult['fbida'],
                 dicResult['fbidb'], dicResult['namea'], dicResult['nameb'],
                 dicResult['relationtype'], 'UserFriends')
        # logHelper.getLogger().debug(sql)
        self.dbinstance.ExecNonQuery(sql, param)

    def Save_tb_user_relationship_batch(self, lstDicResult):
        #dicResult={'fbida':'111','fbidb':'222','relationtype':'friend'}
        sql = "\
                    IF NOT EXISTS(SELECT * FROM tb_user_relationship WHERE fbida = %d AND fbidb = %d AND relationtype = %s) \
                BEGIN\
                    insert into tb_user_relationship(fbida,fbidb,namea,nameb,relationtype,crawledTime,relationclass) VALUES\
                    (%d,%d,%s,%s,%s,GETDATE(),%s)\
                END"

        # sql = sql.format(fbida=dicResult['fbida'],fbidb=dicResult['fbidb'],relationtype=dicResult['relationtype'])
        lstParam = []
        for dicResult in lstDicResult:
            param = (dicResult['fbida'], dicResult['fbidb'],
                     dicResult['relationtype'], dicResult['fbida'],
                     dicResult['fbidb'], dicResult['namea'],
                     dicResult['nameb'], dicResult['relationtype'],
                     'UserFriends')
            lstParam.append(param)

        self.dbinstance.ExecNonQueryBatch(sql, lstParam)
        logHelper.getLogger().info("Save_tb_user_relationship_batch ok.")

    #保存朋友信息,传入一个字典
    def Save_tb_user_friends(self, dicResult):
        # dicResult={'fbid':'111','name':'na','homepage':'','priority':'1','Description':'ddd'}
        sql = "\
                        IF NOT EXISTS(SELECT * FROM tb_user_friends WHERE Fbid = %s) \
                    BEGIN\
                	    insert into tb_user_friends(Fbid,Name,Homepage,priority,crawledTime,hasTasked,deep,Description) VALUES\
                	    (%s,%s,%s,%d,GETDATE(),0,%d,%s)\
                    END"

        # sql = sql.format(fbid=dicResult['fbid'], name=dicResult['name'], homepage=dicResult['homepage'],
        #                  priority=dicResult['priority'], Description=dicResult['Description'])
        dicResult['name'] = dicResult['name'][:120]
        param = (dicResult['fbid'], dicResult['fbid'], dicResult['name'],
                 dicResult['homepage'], dicResult['priority'],
                 dicResult['deep'], dicResult['Description'])
        # logHelper.getLogger().debug(sql)
        # print(dicResult)
        # logHelper.getLogger().debug(dicResult)
        self.dbinstance.ExecNonQuery(sql, param)

    #保存朋友信息,传入一个字典
    def Save_tb_user_friends_batch(self, lstDicResult):
        # dicResult={'fbid':'111','name':'na','homepage':'','priority':'1','Description':'ddd'}
        sql = "\
                        IF NOT EXISTS(SELECT * FROM tb_user_friends WHERE Fbid = %s) \
                    BEGIN\
                	    insert into tb_user_friends(Fbid,Name,Homepage,priority,crawledTime,hasTasked,deep,Description) VALUES\
                	    (%s,%s,%s,%d,GETDATE(),0,%d,%s)\
                    END"

        lstParam = []
        for dicResult in lstDicResult:
            dicResult['name'] = dicResult['name'][:120]
            param = (dicResult['fbid'], dicResult['fbid'], dicResult['name'],
                     dicResult['homepage'], dicResult['priority'],
                     dicResult['deep'], dicResult['Description'])
            lstParam.append(param)
        # logHelper.getLogger().debug('lstParam count is {0}'.format(len(lstParam)))
        self.dbinstance.ExecNonQueryBatch(sql, lstParam)
        logHelper.getLogger().info("Save_tb_user_friends_batch ok.")

    # 保存timeline,传入一个字典,字段为空,传入None有问题,字符串可'',时间不要insert这个字段就行
    def Save_tb_user_timeline(self, dicResult):
        sql = "\
                IF NOT EXISTS(SELECT * FROM tb_user_timeline WHERE TimelineFBID = %s) \
            BEGIN\
        	    insert into tb_user_timeline(\
        	    TimelineFBID,postUserFBID,postUserName,postTime,content,picturesURLs,picturesAlts,\
        	    DZanCount,\
        	    landMarkID,landMarkName,timestamp,crawledTime,contentZHCN)\
        	    VALUES(%s,%d,%s,%s,%s,%s,%s,\
        	    %d,\
        	    %s,%s,%d,GETDATE(),%s)\
            END"

        # sql = sql.format(TimelineFBID=dicResult['TimelineFBID'],
        #                  postUserFBID=dicResult['postUserFBID'],
        #                  postUserName=dicResult['postUserName'],
        #                  postTime=dicResult['postTime'],
        #                  content=dicResult['content'],
        #                  picturesURLs=dicResult['picturesURLs'],
        #                  DZanCount=dicResult['DZanCount'],
        #                  landMarkID=dicResult['landMarkID'],
        #                  landMarkName=dicResult['landMarkName'],
        #                  timestamp=dicResult['timestamp']
        #                  )
        logHelper.getLogger().debug(sql)
        # print(dicResult)
        # logHelper.getLogger().debug(dicResult)
        dicResult['postUserName'] = dicResult['postUserName'][:120]
        dicResult['landMarkID'] = dicResult['landMarkID'][:50]
        dicResult['landMarkName'] = dicResult['landMarkName'][:120]

        # from GoogleTrans import GoogleTrans
        # dicResult['contentZHCN'] = GoogleTrans.translate(dicResult['content'])
        # dicResult['picturesAlts'] = GoogleTrans.translate(dicResult['picturesAlts'])

        dicResult['contentZHCN'] = ''
        dicResult['picturesAlts'] = dicResult['picturesAlts'][:300]

        param = (dicResult['TimelineFBID'], dicResult['TimelineFBID'],
                 dicResult['postUserFBID'], dicResult['postUserName'],
                 dicResult['postTime'], dicResult['content'],
                 dicResult['picturesURLs'], dicResult['picturesAlts'],
                 dicResult['DZanCount'], dicResult['landMarkID'],
                 dicResult['landMarkName'], dicResult['timestamp'],
                 dicResult['contentZHCN'])
        self.dbinstance.ExecNonQuery(sql, param)

    def Save_tb_user_timeline_batch(self, lstDicResult):
        sql = "\
                IF NOT EXISTS(SELECT * FROM tb_user_timeline WHERE TimelineFBID = %s) \
            BEGIN\
        	    insert into tb_user_timeline(\
        	    TimelineFBID,postUserFBID,postUserName,postTime,content,picturesURLs,picturesAlts,\
        	    DZanCount,\
        	    landMarkID,landMarkName,timestamp,crawledTime,contentZHCN)\
        	    VALUES(%s,%d,%s,%s,%s,%s,%s,\
        	    %d,\
        	    %s,%s,%d,GETDATE(),%s)\
            END"

        # logHelper.getLogger().debug(sql)
        # from GoogleTrans import GoogleTrans

        lstParam = []
        for dicResult in lstDicResult:
            dicResult['postUserName'] = dicResult['postUserName'][:120]
            dicResult['landMarkID'] = dicResult['landMarkID'][:50]
            dicResult['landMarkName'] = dicResult['landMarkName'][:120]

            # dicResult['contentZHCN'] = GoogleTrans.translate(dicResult['content'])
            # dicResult['picturesAlts'] = GoogleTrans.translate(dicResult['picturesAlts'])
            dicResult['contentZHCN'] = ''
            dicResult['picturesAlts'] = dicResult['picturesAlts'][:300]

            param = (dicResult['TimelineFBID'], dicResult['TimelineFBID'],
                     dicResult['postUserFBID'], dicResult['postUserName'],
                     dicResult['postTime'], dicResult['content'],
                     dicResult['picturesURLs'], dicResult['picturesAlts'],
                     dicResult['DZanCount'], dicResult['landMarkID'],
                     dicResult['landMarkName'], dicResult['timestamp'],
                     dicResult['contentZHCN'])
            lstParam.append(param)
        self.dbinstance.ExecNonQueryBatch(sql, lstParam)
        logHelper.getLogger().info("Save_tb_user_timeline_batch ok!")

    # 保存timeline,传入一个字典,字段为空,传入None有问题,字符串可'',时间不要insert这个字段就行
    def Save_tb_user_info(self, dicResult):
        sql = "\
                IF NOT EXISTS(SELECT * FROM tb_user_info WHERE fbid = %d) \
            BEGIN\
        	    insert into tb_user_info(fbid,Name,fbHomepage,logoFile,\
        	    Gender,rank,Birthday,EDU,Work,currentCity,\
        	    homeTown,Languages,homePageUrl,phone,email,interestedIn,favoriteQuotes,\
        	    selfIntro,lifeEvents,Relationship,Description,crawledTime)\
        	    VALUES(%d,%s,%s,%s,%s,%d,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,GETDATE())\
            END"

        logHelper.getLogger().debug(sql)
        # print(dicResult)
        # logHelper.getLogger().debug(dicResult)

        # sql = sql.format(fbid=dicResult['fbid'],
        #                  Name=dicResult['Name'],
        #                  rank=dicResult['rank']
        #                  )

        dicResult['Name'] = dicResult['Name'][:120]
        dicResult['fbHomepage'] = dicResult['fbHomepage'][:128]
        dicResult['EDU'] = dicResult['EDU'][:1000]
        dicResult['Work'] = dicResult['Work'][:1000]
        dicResult['currentCity'] = dicResult['currentCity'][:100]
        dicResult['homeTown'] = dicResult['homeTown'][:100]
        dicResult['Languages'] = dicResult['Languages'][:50]
        dicResult['phone'] = dicResult['phone'][:50]
        dicResult['email'] = dicResult['email'][:80]
        dicResult['interestedIn'] = dicResult['interestedIn'][:50]
        dicResult['favoriteQuotes'] = dicResult['favoriteQuotes'][:1000]
        dicResult['selfIntro'] = dicResult['selfIntro'][:500]
        dicResult['lifeEvents'] = dicResult['lifeEvents'][:1000]
        dicResult['Relationship'] = dicResult['Relationship'][:100]

        param = (
            dicResult['fbid'],
            dicResult['fbid'],
            dicResult['Name'],
            dicResult['fbHomepage'],
            dicResult['logoFile'],
            dicResult['Gender'],
            dicResult['rank'],
            dicResult['Birthday'],
            dicResult['EDU'],
            dicResult['Work'],
            dicResult['currentCity'],
            dicResult['homeTown'],
            dicResult['Languages'],
            dicResult['homePageUrl'],
            dicResult['phone'],
            dicResult['email'],
            dicResult['interestedIn'],
            dicResult['favoriteQuotes'],
            dicResult['selfIntro'],
            dicResult['lifeEvents'],
            dicResult['Relationship'],
            dicResult['Description'],
        )
        self.dbinstance.ExecNonQuery(sql, param)

    def GenerateUserTaskFromFriends(self, tasktype, whereclause):
        '''
        从朋友生成任务,按照任务类型
        :param tasktype:
        :return:
        '''
        sql = "insert into tb_task_user(fbid,tasktype,priority,runningstate,deep,name) \
                select fbid,%s,priority,0,deep,name from tb_user_friends {0} ; \
                update tb_user_friends set hasTasked = 1,taskedTime=GETDATE() {0}".format(
            whereclause)
        logHelper.getLogger().debug(sql)
        param = (tasktype)
        c = self.dbinstance.ExecNonQuery(sql, param)
        logHelper.getLogger().debug(
            'Generate {0} User Task from Friends is OK!'.format(c))
        return c

    def DumpTaskUser(self):
        '''
        讲完成任务转出去备份保存
        '''
        sql = 'insert into tb_task_user_log select * from tb_task_user where runningstate = 2;\
              delete from tb_task_user where runningstate = %d;'

        param = (2)
        c = self.dbinstance.ExecNonQuery(sql, param)
        logHelper.getLogger().debug(
            'Dump {0} User Task to tb_task_user_log!'.format(c))
        return c

    def UpdateTaskDispatch(self, taskid, spider=''):
        '''
        分配任务后,填写分配时间
        :param taskid:
        :return:
        '''
        sql = "update tb_task_user set dispatchTime = GETDATE(),Spider = %s where id = %d"
        logHelper.getLogger().debug(sql)
        param = (spider, taskid)
        c = self.dbinstance.ExecNonQuery(sql, param)
        logHelper.getLogger().debug('Update User Task DispatchTime is OK!')
        return c
예제 #5
0
    ]
    # gt = GoogleTrans()
    import logging
    logName = time.strftime('%Y-%m-%d', time.localtime(time.time())) + ".log"
    myargs = {'fName': logName, 'fLevel': logging.DEBUG}
    logger = logHelper.getLogger('myLog', logging.DEBUG, **myargs)

    # for i,querystr in enumerate(lq):
    #     print(querystr)
    #     print( gt.translate(querystr) )

    import common
    import SqlServer

    serverconfig = common.getDatabaseServerConfig()
    dbinstance = SqlServer.SqlServer(serverconfig[0], serverconfig[1],
                                     serverconfig[2], serverconfig[3])

    # query = "select id,content from tb_user_timeline where id > 2643 order by id"
    query = "select id,content from tb_user_timeline where id > 0 order by id"
    rows, c = dbinstance.ExecQuery(query)
    for r in rows:
        id = r[0]
        content = r[1]
        print(id, content)

        if len(content) == 0:
            continue
        contentZN = GoogleTrans.translate(content)
        # contentZN = GoogleTrans.translate_2(content)
        # contentZN = GoogleTrans.translate_api(content)
        print(contentZN)
예제 #6
0
 def __init__(self):
     serverconfig = common.getDatabaseServerConfig()
     self.dbinstance = SqlServer.SqlServer(serverconfig[0], serverconfig[1],
                                           serverconfig[2], serverconfig[3])
     myargs = {'fName': "UserInfoCrawler", 'fLevel': logging.DEBUG}
     self.logger = logHelper.getLogger('imgLog', logging.INFO, **myargs)
예제 #7
0
class FBGroupHelper:
    def __init__(self):
        serverconfig = common.getDatabaseServerConfig()
        self.dbinstance = SqlServer(serverconfig[0], serverconfig[1],
                                    serverconfig[2], serverconfig[3])

    def ImportFBGroupSeed(self, seedtxtfile, origin):
        with open(seedtxtfile, 'r', encoding='UTF-8') as f:
            for line in f.readlines():
                line = line.strip()
                if len(line) == 0:
                    continue
                now = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                acount = line.split(',')
                fbid = acount[0]
                name = acount[1]
                sql = "insert into tb_seed_group(fbid,name,origin,publishedtime,hasTasked) values(%d,%s,%s,%s,0);"
                param = (fbid, name, origin, now)
                self.dbinstance.ExecNonQuery(sql, param)
                logHelper.getLogger().info("insert {0}".format(line))

    def GenerateGroupTask(self, tasktype):
        '''
        从种子生成任务,按照任务类型,将所有未运行种子都导入
        :param tasktype:
        :return:
        '''
        sql = "insert into tb_task_group(fbid,tasktype,priority,runningstate,deep,name) select fbid,%s,100,0,0,name from tb_seed_group where hastasked = 0;update tb_seed_group set hasTasked = 1,taskedTime=GETDATE() where hastasked = 0"
        logHelper.getLogger().debug(sql)
        param = (tasktype)
        c = self.dbinstance.ExecNonQuery(sql, param)
        logHelper.getLogger().debug('Generate Group Task From Seed is OK!')
        return c

    def LoadTopNTask(self, n, tasktype):
        que = PriorityQueue()
        query = "SELECT TOP {0} id,priority,fbid,originalfbid,deep,name  FROM tb_task_group  WHERE runningState=0 and Tasktype = '{1}' order by priority DESC".format(
            n, tasktype)
        rows, c = self.dbinstance.ExecQuery(query)

        for row in rows:
            originfbid = row[3]
            deep = row[4]
            name = row[5]
            if row[3] is None:
                originfbid = ''
            if row[4] is None:
                deep = '3'
            if row[5] is None:
                name = ''

            r = common.FBTask(
                row[0], row[1], row[2], tasktype, originfbid, int(deep), name
            )  #def __init__(self,id,priority,fbid,tasktype,originalfbid,deep,name):
            for i in range(5):
                logHelper.getLogger().debug(row[i])
            tup = (row[1], r)  #priority作为优先级
            que.put(tup)

        return que

    def SetRuningState(self, id, state):
        sql = 'UPDATE tb_task_group SET runningState = %d WHERE id=%d'
        param = (state, id)
        self.dbinstance.ExecNonQuery(sql, param)

    def SetCompleteState(self, id, runningState, desc):
        sql = "UPDATE tb_task_group SET runningState = %d,completedTime = GETDATE(),Description = %s WHERE id=%d"
        param = (runningState, desc, id)
        logHelper.getLogger().debug(sql)
        self.dbinstance.ExecNonQuery(sql, param)

    # 保存关系,传入一个字典
    def Save_tb_group_relationship(self, dicResult):
        #dicResult={'fbida':'111','fbidb':'222','relationtype':'friend'}
        sql = "\
                    IF NOT EXISTS(SELECT * FROM tb_user_relationship WHERE fbida = %d AND fbidb = %d AND relationtype = %s) \
                BEGIN\
                    insert into tb_user_relationship(fbida,fbidb,namea,nameb,relationtype,crawledTime,relationclass) VALUES\
                    (%d,%d,%s,%s,%s,GETDATE(),%s)\
                END"

        # sql = sql.format(fbida=dicResult['fbida'],fbidb=dicResult['fbidb'],relationtype=dicResult['relationtype'])
        param = (dicResult['fbida'], dicResult['fbidb'],
                 dicResult['relationtype'], dicResult['fbida'],
                 dicResult['fbidb'], dicResult['namea'], dicResult['nameb'],
                 dicResult['relationtype'], 'GroupMember')
        logHelper.getLogger().debug(sql)
        self.dbinstance.ExecNonQuery(sql, param)

    # 保存timeline,传入一个字典,字段为空,传入None有问题,字符串可'',时间不要insert这个字段就行
    def Save_tb_user_timeline(self, dicResult):
        sql = "\
                IF NOT EXISTS(SELECT * FROM tb_user_timeline WHERE TimelineFBID = %s) \
            BEGIN\
        	    insert into tb_user_timeline(\
        	    TimelineFBID,postUserFBID,postUserName,postTime,content,picturesURLs,\
        	    DZanCount,\
        	    landMarkID,landMarkName,timestamp,crawledTime)\
        	    VALUES(%s,%d,%s,%s,%s,%s,\
        	    %d,%s,%s,%d,GETDATE())\
            END"

        # sql = sql.format(TimelineFBID=dicResult['TimelineFBID'],
        #                  postUserFBID=dicResult['postUserFBID'],
        #                  postUserName=dicResult['postUserName'],
        #                  postTime=dicResult['postTime'],
        #                  content=dicResult['content'],
        #                  picturesURLs=dicResult['picturesURLs'],
        #                  DZanCount=dicResult['DZanCount'],
        #                  landMarkID=dicResult['landMarkID'],
        #                  landMarkName=dicResult['landMarkName'],
        #                  timestamp=dicResult['timestamp']
        #                  )
        logHelper.getLogger().debug(sql)
        # print(dicResult)
        # logHelper.getLogger().debug(dicResult)
        param = (dicResult['TimelineFBID'], dicResult['TimelineFBID'],
                 dicResult['postUserFBID'], dicResult['postUserName'],
                 dicResult['postTime'], dicResult['content'],
                 dicResult['picturesURLs'], dicResult['DZanCount'],
                 dicResult['landMarkID'], dicResult['landMarkName'],
                 dicResult['timestamp'])
        self.dbinstance.ExecNonQuery(sql, param)

    def GenerateUserTaskFromFriends(self, tasktype, whereclause):
        '''
        从朋友生成任务,按照任务类型
        :param tasktype:
        :return:
        '''
        sql = "insert into tb_task_group(fbid,tasktype,priority,runningstate,deep,name) \
                select fbid,%s,priority,0,deep,name from tb_user_friends {0} ; \
                update tb_user_friends set hasTasked = 1,taskedTime=GETDATE() {0}".format(
            whereclause)
        logHelper.getLogger().debug(sql)
        param = (tasktype)
        c = self.dbinstance.ExecNonQuery(sql, param)
        logHelper.getLogger().debug(
            'Generate {0} User Task from Friends is OK!'.format(c))
        return c

    def UpdateTaskDispatch(self, taskid, spider=''):
        '''
        分配任务后,填写分配时间
        :param taskid:
        :return:
        '''
        sql = "update tb_task_group set dispatchTime = GETDATE(),Spider = %s where id = %d"
        logHelper.getLogger().debug(sql)
        param = (spider, taskid)
        c = self.dbinstance.ExecNonQuery(sql, param)
        logHelper.getLogger().debug('Update User Task DispatchTime is OK!')
        return c