def parse_train_data(self, data_list): #print (data_list) value = { '11': data_list[3], '10': self.get_from_to_station_name(data_list), '12': self.get_start_arrive_time(data_list), '1': data_list[10], '3': data_list[31] or '--', '2': data_list[30] or '--', '5': data_list[21] or '--', #'4': data_list[23] or '--', '4': self.get_train_color(data_list, '23', 'yellow') or '--', #'7': data_list[28] or '--', '7': self.get_train_color(data_list, '28', 'red') or '--', '6': data_list[24] or '--', '9': data_list[29] or '--', '8': data_list[33] or '--' } soft_seat = data_list[23] hard_seat = data_list[28] if soft_seat != u'无' or hard_seat != u'无': checi = data_list[3] date = data_list[13] message = date + ' ' + checi + u' 软卧剩余 ' + soft_seat + u' 硬卧剩余 ' + hard_seat myLog.writeLog(message) #print value return value
def tmp_init(): '''临时断线调整''' global cnt strs = "张宇 王含艺" datas = strs.split(" ") for n in datas: member_checked[n] = 1 cnt += 1 writeLog('初始化结果为%d人' % cnt) writeLog(member_checked)
def insert_bbsindex(index): conn = conn_bbsindex() cur = conn.cursor() for i in index : try : if isin_index(i[1]) == True: continue randnum = random.randint(2,10)#先生成一个随机数的 text = filter_tags(str(i[3])) sql = "insert into bbsindex(title ,link ,author ,content,text,score,date) values('%s' ,'%s' ,'%s','%s','%s', '%d','%s')" %(str(i[0]),str(i[1]),str(i[2]),str(i[3]),text,randnum,time.strftime('%Y-%m-%d',time.localtime(time.time()))) # sql = "insert into bbsindex(title ,link ,author ,content,score,date) values('%s' ,'%s' ,'%s' ,'%s', %d,'%s')" %(str(i[0]),str(i[1]),str(i[2]),str(i[3]),randnum,time.strftime('%Y-%m-%d',time.localtime(time.time()))) print cur.execute(sql) conn.commit() except MySQLdb.ProgrammingError as error: myLog.writeLog(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))) print "---->SQL Error: %s" % error myLog.writeLog("---->SQL Error: %s" % error) myLog.writeLog( sql) myLog.writeLog('--------------------') conn.rollback() conn.commit() cur.close() conn.close()
def init_group_member(group_info): '''预处理json数据初始化''' stu = [] if len(group_info) == 1: group_info = group_info[0] for person in group_info['MemberList']: tmp = person['DisplayName'] if tmp != '' and tmp != '彭小萍' and tmp != '禹皓晨' and tmp.find( '老师') == -1: stu.append(person['DisplayName']) if '张宇' not in stu: stu.append('张宇') ans = '初始化%d人,它们分别是' % len(stu) ans += ' '.join(stu) writeLog(ans) return stu
def get_group_info(): '''查询好友列表/群信息,获取群的username,对群成员进行分析需要用到''' global groupNum global group_user_name groups = itchat.get_chatrooms(update=True) for g in groups: if g['NickName'] == group_name: group_user_name = g['UserName'] RoomList = {} groupNum = '' if len(g['MemberList']) == 0: RoomList = read_file_info() else: RoomList = g groupNum = g['UserName'] writeLog('最新的groupID: ' + groupNum) return RoomList
def time_stat(stuInfo): '''定时统计线程执行体''' global cnt while True: cur_time = datetime.datetime.now().strftime('%H:%M') if cur_time == "13:00": if cnt >= 32: continue groups = itchat.get_chatrooms(update=True) l = unchecked_stat(stuInfo) if '张宇' in l: l.remove('张宇') ans = "还有%d人未签到,他们分别是" % len(l) ans += ' '.join(l) writeLog('ans : ' + ans) for g in groups: if g['NickName'] == group_name: to_group = g['UserName'] itchat.send(ans, to_group) writeLog('send ok!') elif cur_time == "06:00": #重新开始,清空变量 cnt = 0 get_group_info() #更新groupNum member_checked.clear() strSign = str(datetime.datetime.now().month) + '-' + str( datetime.datetime.now().day) + "开始签到" writeLog(strSign) itchat.send(strSign, group_user_name) time.sleep(60)
def insert_bbsindex(index): conn = conn_bbsindex() cur = conn.cursor() for i in index : try : if isin_index(i[1]) == True: continue randnum = random.randint(2,10)#先生成一个随机数的 sql = "insert into bbsindex(title ,link ,author ,content,score,date) values('%s' ,'%s' ,'%s' ,'%s', %d,'%s')" %(str(i[0]),str(i[1]),str(i[2]),str(i[3]),randnum,time.strftime('%Y-%m-%d',time.localtime(time.time()))) cur.execute(sql) conn.commit() except : myLog.writeLog(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))) myLog.writeLog('insert bad ') myLog.writeLog( sql) myLog.writeLog('--------------------') conn.rollback() conn.commit() cur.close() conn.close()
def print_content(msg): '''监听群消息记录,自动回复签到情况''' global cnt if msg['FromUserName'] == groupNum or msg['ToUserName'] == groupNum: if msg['Text'].find(HEALTH_STATU) != -1 or msg['Text'].find( CONTACK_STATU) != -1: if msg['ActualNickName'] in member_checked.keys(): reply = "请勿重复签到" return reply cnt += 1 writeLog("该群发的消息为: " + msg['Text']) #打印哪个群给你发了什么消息 reply = msg['ActualNickName'] + '签到成功,' + "目前已成功签到%d人\n" % cnt if (cnt == 32): reply += "\n所有人已经签到完毕,收工" if (cnt > 32): reply = '' member_checked[msg['ActualNickName']] = 1 writeLog("回复内容为: " + reply) writeLog("当前已签到成员为:") writeLog(str(member_checked)) #换行 return reply else: #writeLog("不是该群消息") pass
def insertBbsDb(self,index): self.conn = self.connConnect(self) cur = self.conn.cursor() for i in index : try : if self.isInIndex(i[1]) == True: continue randnum = random.randint(2,10)#先生成一个随机数的 sql = "insert into bbsindex(title ,link ,author ,content,text,score,date) values('%s' ,'%s' ,'%s' ,'%s','%s', '%d','%s')" \ %(str(i[0]),str(i[1]),str(i[2]),str(i[3]),filter_tags(str(i[3])),randnum,time.strftime('%Y-%m-%d',time.localtime(time.time()))) # sql = "insert into bbsindex(title ,link ,author ,content,score,date) values('%s' ,'%s' ,'%s' ,'%s', %d,'%s')" %(str(i[0]),str(i[1]),str(i[2]),str(i[3]),randnum,time.strftime('%Y-%m-%d',time.localtime(time.time()))) cur.execute(sql) self.conn.commit() except : myLog.writeLog(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))) print('insert bad ') myLog.writeLog(i[3]) myLog.writeLog('--------------------') self.conn.rollback() self.conn.commit() cur.close() self.conn.close()
def logout_callback(): writeLog(datetime.datetime.now().strftime('%H:%M') + '时刻网页微信自动登出')
def login_callback(): writeLog('Login successfully!')
datas = strs.split(" ") for n in datas: member_checked[n] = 1 cnt += 1 writeLog('初始化结果为%d人' % cnt) writeLog(member_checked) # 解决wechat自动logout问题,https://github.com/littlecodersh/ItChat/issues/448 def login_callback(): writeLog('Login successfully!') def logout_callback(): writeLog(datetime.datetime.now().strftime('%H:%M') + '时刻网页微信自动登出') #itchat.auto_login(hotReload=True, loginCallback=login_callback, exitCallback=logout_callback) if __name__ == '__main__': #tmp_init() writeLog('————————————————————自动回复程序启动——————————————————') itchat.auto_login(loginCallback=login_callback, exitCallback=logout_callback) group_json_data = get_group_info() stu_info = init_group_member(group_json_data) thr_update = threading.Thread(target=update_group_num) thr_remind = threading.Thread(target=time_stat, args=(stu_info, )) thr_update.start() thr_remind.start() itchat.run()