def report_day(sess, t): url = f'https://selfreport.shu.edu.cn/DayReport.aspx?day={t.year}-{t.month}-{t.day}' for _ in range(RETRY): try: r = sess.get(url, allow_redirects=False) except Exception as e: print(e) time.sleep(RETRY_TIMEOUT) continue break else: print('report_day get DayReport failed') return False soup = BeautifulSoup(r.text, 'html.parser') view_state = soup.find('input', attrs={'name': '__VIEWSTATE'}) if view_state is None: if '上海大学统一身份认证' in r.text: print('登录信息过期') else: print(r.text) return False BaoSRQ = t.strftime('%Y-%m-%d') try: ShiFSH, ShiFZX, ddlSheng, ddlShi, ddlXian, XiangXDZ, ShiFZJ = get_last_report( sess, t) except Exception as e: print('get_last_report failed') print(e) return False print(f'是否在上海:{ShiFSH}', f'是否在校:{ShiFZX}') print(ddlSheng, ddlShi, ddlXian, f'###{XiangXDZ[-2:]}') print(f'是否为家庭地址:{ShiFZJ}') for _ in range(RETRY): try: r = sess.post(url, data={ "__EVENTTARGET": "p1$ctl01$btnSubmit", "__EVENTARGUMENT": "", "__VIEWSTATE": view_state['value'], "__VIEWSTATEGENERATOR": "7AD7E509", "p1$ChengNuo": "p1_ChengNuo", "p1$BaoSRQ": BaoSRQ, "p1$DangQSTZK": "良好", "p1$TiWen": "", "p1$JiuYe_ShouJHM": "", "p1$JiuYe_Email": "", "p1$JiuYe_Wechat": "", "p1$QiuZZT": "", "p1$JiuYKN": "", "p1$JiuYSJ": "", "p1$GuoNei": "国内", "p1$ddlGuoJia$Value": "-1", "p1$ddlGuoJia": "选择国家", "p1$ShiFSH": ShiFSH, "p1$ShiFZX": ShiFZX, "p1$ddlSheng$Value": ddlSheng, "p1$ddlSheng": ddlSheng, "p1$ddlShi$Value": ddlShi, "p1$ddlShi": ddlShi, "p1$ddlXian$Value": ddlXian, "p1$ddlXian": ddlXian, "p1$XiangXDZ": XiangXDZ, "p1$ShiFZJ": ShiFZJ, "p1$FengXDQDL": "否", "p1$TongZWDLH": "否", "p1$CengFWH": "否", "p1$CengFWH_RiQi": "", "p1$CengFWH_BeiZhu": "", "p1$JieChu": "否", "p1$JieChu_RiQi": "", "p1$JieChu_BeiZhu": "", "p1$TuJWH": "否", "p1$TuJWH_RiQi": "", "p1$TuJWH_BeiZhu": "", "p1$QueZHZJC$Value": "否", "p1$QueZHZJC": "否", "p1$DangRGL": "否", "p1$GeLDZ": "", "p1$FanXRQ": "", "p1$WeiFHYY": "", "p1$ShangHJZD": "", "p1$DaoXQLYGJ": "没有", "p1$DaoXQLYCS": "没有", "p1$JiaRen_BeiZhu": "", "p1$SuiSM": "绿色", "p1$LvMa14Days": "是", "p1$Address2": "", "F_TARGET": "p1_ctl00_btnSubmit", "p1_ContentPanel1_Collapsed": "true", "p1_GeLSM_Collapsed": "false", "p1_Collapsed": "false", "F_STATE": generate_fstate_day(BaoSRQ, ShiFSH, ShiFZX, ddlSheng, ddlShi, ddlXian, XiangXDZ, ShiFZJ) }, headers={ 'X-Requested-With': 'XMLHttpRequest', 'X-FineUI-Ajax': 'true' }, allow_redirects=False) except Exception as e: print(e) time.sleep(RETRY_TIMEOUT) continue break else: print('report_day post DayReport failed') return False if any(i in r.text for i in ['提交成功', '历史信息不能修改', '现在还没到晚报时间', '只能填报当天或补填以前的信息']): return True else: print(r.text) return False
r = sess.get(url) soup = BeautifulSoup(r.text, 'html.parser') view_state = soup.find('input', attrs={'name': '__VIEWSTATE'}) if view_state is None: if '上海大学统一身份认证' in r.text: print('登录信息过期') else: print(r.text) return False BaoSRQ = t.strftime('%Y-%m-%d') <<<<<<< HEAD XiangXDZ = 普照路 ======= ShiFSH, ShiFZX, ddlSheng, ddlShi, ddlXian, XiangXDZ = get_last_report(sess, t) print(f'是否在上海:{ShiFSH}', f'是否在校:{ShiFZX}', ddlSheng, ddlShi, ddlXian, '详细地址已隐去') >>>>>>> b667d6f21a8daca2b84ae9361e66a24f4814018f while True: try: r = sess.post(url, data={ "__EVENTTARGET": "p1$ctl00$btnSubmit", "__EVENTARGUMENT": "", "__VIEWSTATE": view_state['value'], "__VIEWSTATEGENERATOR": "7AD7E509", "p1$ChengNuo": "p1_ChengNuo", "p1$BaoSRQ": BaoSRQ, "p1$DangQSTZK": "良好", "p1$TiWen": "", "p1$JiuYe_ShouJHM": "",
def report_day(sess, t, user, config): url = f'https://selfreport.shu.edu.cn/DayReport.aspx?day={t.year}-{t.month}-{t.day}' for _ in range(RETRY): try: r = sess.get(url, allow_redirects=False) except Exception as e: print(e) time.sleep(RETRY_TIMEOUT) continue break else: print('获取每日一报起始页超时') return False soup = BeautifulSoup(r.text, 'html.parser') view_state = soup.find('input', attrs={'name': '__VIEWSTATE'}) if view_state is None: if '上海大学统一身份认证' in r.text: print('登录信息过期') else: print(r.text) return False BaoSRQ = t.strftime('%Y-%m-%d') ShiFSH, ShiFZX, XiaoQu, ddlSheng, ddlShi, ddlXian, XiangXDZ, ShiFZJ = get_last_report( sess, t) SuiSM, XingCM = get_img_value(sess) print(f'是否在上海:{ShiFSH}', f'是否在校:{ShiFZX}', ddlSheng, ddlShi, ddlXian, '详细地址已隐去') for _ in range(RETRY): try: r = sess.post( url, data={ "__EVENTTARGET": "p1$ctl01$btnSubmit", "__EVENTARGUMENT": "", "__VIEWSTATE": view_state['value'], "__VIEWSTATEGENERATOR": "7AD7E509", "p1$ChengNuo": "p1_ChengNuo", # "p1$pnlDangSZS$DangSZS": "A", "p1$BaoSRQ": BaoSRQ, "p1$DangQSTZK": "良好", "p1$TiWen": "", "p1$GuoNei": "国内", "p1$P_GuoNei$ShiFSH": ShiFSH, "p1$P_GuoNei$ShiFZX": ShiFZX, "p1$P_GuoNei$XiaoQu": XiaoQu, "p1$P_GuoNei$pImages$HFimgSuiSM": SuiSM, "p1$P_GuoNei$pImages$HFimgXingCM": XingCM, "p1$JiuYe_ShouJHM": "", "p1$JiuYe_Email": "", "p1$JiuYe_Wechat": "", "p1$QiuZZT": "", "p1$JiuYKN": "", "p1$JiuYSJ": "", "p1$ddlGuoJia$Value": "-1", "p1$ddlGuoJia": "选择国家", "p1$ddlSheng$Value": ddlSheng, "p1$ddlSheng": ddlSheng, "p1$ddlShi$Value": ddlShi, "p1$ddlShi": ddlShi, "p1$ddlXian$Value": ddlXian, "p1$ddlXian": ddlXian, "p1$XiangXDZ": XiangXDZ, "p1$ShiFZJ": ShiFZJ, "p1$FengXDQDL": "否", "p1$TongZWDLH": "否", "p1$CengFWH": "否", "p1$CengFWH_RiQi": "", "p1$CengFWH_BeiZhu": "", "p1$JieChu": "否", "p1$JieChu_RiQi": "", "p1$JieChu_BeiZhu": "", "p1$TuJWH": "否", "p1$TuJWH_RiQi": "", "p1$TuJWH_BeiZhu": "", "p1$QueZHZJC$Value": "否", "p1$QueZHZJC": "否", "p1$DangRGL": "否", "p1$GeLDZ": "", "p1$FanXRQ": "", "p1$WeiFHYY": "", "p1$ShangHJZD": "", "p1$DaoXQLYGJ": "没有", "p1$DaoXQLYCS": "没有", "p1$JiaRen_BeiZhu": "", "p1$SuiSM": "绿色", "p1$LvMa14Days": "是", "p1$Address2": "", "p1_pnlDangSZS_Collapsed": "false", "p1_P_GuoNei_pImages_Collapsed": "false", "p1_P_GuoNei_Collapsed": "false", "p1_ContentPanel1_Collapsed": "true", "p1_GeLSM_Collapsed": "false", "p1_Collapsed": "false", "F_STATE": generate_fstate_day(BaoSRQ, ShiFSH, ShiFZX, XiaoQu, ddlSheng, ddlShi, ddlXian, XiangXDZ, ShiFZJ, SuiSM, XingCM) }, headers={ 'X-Requested-With': 'XMLHttpRequest', 'X-FineUI-Ajax': 'true' }, allow_redirects=False) except Exception as e: print("重试中。。。") print(e) time.sleep(RETRY_TIMEOUT) continue if any(i in r.text for i in ['提交成功', '历史信息不能修改', '现在还没到晚报时间', '只能填报当天或补填以前的信息']): print(f'{t} 每日一报提交成功') if config[user]['email_to'] != 'null': txt = "亲爱的同学({})\n".format(''.join([ str(j) if i % 2 == 0 else 'shu' for i, j in enumerate(user) ])) txt += "您于" + t.strftime( '%Y-%m-%d %H:%M:%S') + "将每日一报提交成功\n下面是具体填报信息\n" txt += f" 是否在上海:{ShiFSH}\n 是否在校:{ShiFZX} \n 所在省:{ddlSheng} \n 所在市:{ddlShi}\n 所在县:{ddlXian}\n 具体地址:{''.join([str(j) if i % 2 == 0 else 'shu' for i, j in enumerate(XiangXDZ)])}\n" txt += "=v= 感谢您的光临,明天竭诚为您服务!" send_mail(config['email'], [config[user]['email_to']], "{}月{}日每日一报提交成功".format(t.month, t.day), txt) print(f'{t} 邮件发送成功') return True elif '数据库有点忙' in r.text: print('数据库有点忙,重试') time.sleep(RETRY_TIMEOUT) continue else: print(f'{t} 每日一报提交失败') if config[user]['email_to'] != 'null': send_mail(config['email'], [config[user]['email_to']], "{}月{}日每日一报提交失败!!!!!".format(t.month, t.day), r.text) print(r.text) return False
def report_day(sess, t, user, config): url = f'https://selfreport.shu.edu.cn/DayReport.aspx?day={t.year}-{t.month}-{t.day}' r = sess.get(url) soup = BeautifulSoup(r.text, 'html.parser') view_state = soup.find('input', attrs={'name': '__VIEWSTATE'}) if view_state is None: if '上海大学统一身份认证' in r.text: print('登录信息过期') else: print(r.text) return False BaoSRQ = t.strftime('%Y-%m-%d') ShiFSH, ShiFZX, ddlSheng, ddlShi, ddlXian, XiangXDZ, ShiFZJ = get_last_report( sess, t) # ShiFSH, ShiFZX, ddlSheng, ddlShi, ddlXian, XiangXDZ = get_last_report(sess, t) print(f'是否在上海:{ShiFSH}', f'是否在校:{ShiFZX}', ddlSheng, ddlShi, ddlXian, '详细地址已隐去') while True: try: r = sess.post(url, data={ "__EVENTTARGET": "p1$ctl00$btnSubmit", "__EVENTARGUMENT": "", "__VIEWSTATE": view_state['value'], "__VIEWSTATEGENERATOR": "7AD7E509", "p1$ChengNuo": "p1_ChengNuo", "p1$BaoSRQ": BaoSRQ, "p1$DangQSTZK": "良好", "p1$TiWen": "", "p1$JiuYe_ShouJHM": "", "p1$JiuYe_Email": "", "p1$JiuYe_Wechat": "", "p1$QiuZZT": "", "p1$JiuYKN": "", "p1$JiuYSJ": "", "p1$GuoNei": "国内", "p1$ddlGuoJia$Value": "-1", "p1$ddlGuoJia": "选择国家", "p1$ShiFSH": ShiFSH, "p1$ShiFZX": ShiFZX, "p1$ddlSheng$Value": ddlSheng, "p1$ddlSheng": ddlSheng, "p1$ddlShi$Value": ddlShi, "p1$ddlShi": ddlShi, "p1$ddlXian$Value": ddlXian, "p1$ddlXian": ddlXian, "p1$XiangXDZ": XiangXDZ, "p1$ShiFZJ": ShiFZJ, "p1$FengXDQDL": "否", "p1$TongZWDLH": "否", "p1$CengFWH": "否", "p1$CengFWH_RiQi": "", "p1$CengFWH_BeiZhu": "", "p1$JieChu": "否", "p1$JieChu_RiQi": "", "p1$JieChu_BeiZhu": "", "p1$TuJWH": "否", "p1$TuJWH_RiQi": "", "p1$TuJWH_BeiZhu": "", "p1$QueZHZJC$Value": "否", "p1$QueZHZJC": "否", "p1$DangRGL": "否", "p1$GeLDZ": "", "p1$FanXRQ": "", "p1$WeiFHYY": "", "p1$ShangHJZD": "", "p1$DaoXQLYGJ": "没有", "p1$DaoXQLYCS": "没有", "p1$JiaRen_BeiZhu": "", "p1$SuiSM": "绿色", "p1$LvMa14Days": "是", "p1$Address2": "", "F_TARGET": "p1_ctl00_btnSubmit", "p1_ContentPanel1_Collapsed": "true", "p1_GeLSM_Collapsed": "false", "p1_Collapsed": "false", "F_STATE": generate_fstate_day(BaoSRQ, ShiFSH, ShiFZX, ddlSheng, ddlShi, ddlXian, XiangXDZ, ShiFZJ) }, headers={ 'X-Requested-With': 'XMLHttpRequest', 'X-FineUI-Ajax': 'true' }, allow_redirects=False) except Exception as e: print(e) continue break if any(i in r.text for i in ['提交成功', '历史信息不能修改', '现在还没到晚报时间', '只能填报当天或补填以前的信息']): print(f'{t} 每日一报提交成功') txt = "亲爱的同学({})\n".format(user) txt += "您的小可爱于" + t.strftime( '%Y-%m-%d %H:%M:%S') + "将您的每日一报提交成功\n下面是具体填报信息\n" txt += f" 是否在上海:{ShiFSH}\n 是否在校:{ShiFZX} \n 所在省:{ddlSheng} \n 所在市:{ddlShi}\n 所在县:{ddlXian}\n 具体地址:{XiangXDZ}\n" txt += "=v= 感谢您的光临,明天竭诚为您服务!" send_mail(config['email'], [config[user]['email_to']], "{}月{}日每日一报提交成功".format(t.month, t.day), txt) print(f'{t} 邮件发送成功') return True else: print(f'{t} 每日一报提交失败') send_mail(config['email'], [config[user]['email_to']], "{}月{}日每日一报提交失败".format(t.month, t.day), r.text) print(r.text) return False