Exemplo n.º 1
0
 def logout(self):
     url = "http://bdhq.ncepu.edu.cn/ncepucenter/common_logout.t"
     res = self.session.get(url, headers=get_fake_headers())
     if res.status_code == 200:
         log("session logout successfully")
     else:
         log(f"session logout failed {res.text}")
         exit(-1)
Exemplo n.º 2
0
 def login(self) -> requests.Session:
     url = "http://bdhq.ncepu.edu.cn/ncepucenter/weixinlogin.json"
     session = requests.Session()
     data = {
         'reg_name': self.account,
         'password': self.password,
     }
     res = session.post(url, data=data, headers=get_fake_headers())
     if res.json()['success']:
         log(f"login {self.account} successfully")
         return session
     log(f"login {self.account} failed {res.text}")
     exit(-1)
Exemplo n.º 3
0
    def cancel_order(self, cancel_set=None):
        assert isinstance(cancel_set, set) or cancel_set == None
        url = "http://yushiyuyue.ncepu.edu.cn/cancelGoodsOrder"
        ordered_number, ordered_time = self.ordered_bath_list()
        if len(ordered_number) == 0:
            log("当前未查询到已预约记录,请检查")
            self.logout()
            exit(-1)
        if not cancel_set:
            tip = "请输入要取消预约的编号,确认请输入exit,取消已选择的请输入clear"
            cancel_set = set()
            while True:
                print(tip, f"当前已选{len(cancel_set)}个 为", cancel_set)
                print(f"已预约编号如下,共{len(ordered_number)}个")
                for i in range(len(ordered_number)):
                    suffix = "已选择" if i in cancel_set else ""
                    print(f"编号:{i}  预约时间:{ordered_time[i]}  {suffix}")
                temp = input()
                if temp == 'exit': break
                elif temp == 'clear':
                    cancel_set.clear()
                    continue
                try:
                    temp = int(temp)
                except:
                    print("请输入合法罗马数字!")
                    continue
                if temp < 0 or temp >= len(ordered_number): print("请输入合法罗马数字!")
                else:
                    cancel_set.add(temp)
        else:
            for one in cancel_set.copy():
                if one not in ordered_time:
                    log(f"cancel orderno error {one} not in {ordered_time}")
                    self.logout()
                    exit(-1)
                cancel_set.add(ordered_time.index(one))
                cancel_set.remove(one)

        for i in cancel_set:
            data = {'orderno': ordered_number[i]}
            res = self.session.post(url, data=data, headers=get_fake_headers())
            res = res.json()
            if res['returncode'] == 'SUCCESS':
                log(f'cancel orderno {ordered_number[i]}  {ordered_time[i]} successfully'
                    )
            else:
                log(f'cancel orderno {ordered_number[i]}  {ordered_time[i]} failed'
                    )
                return False
        return True
Exemplo n.º 4
0
 def order_bath(self, rulesid):
     _ = self.available_order_list()
     data = {
         'bathroomid': self.bathroomid,
         'appointdate': self.expected_day,
         'rulesid': rulesid,
         'sex': self.sex,
         'goodslogo': self.goodslogo,
         'bathroomname': self.bathroomname,
     }
     order_url = "http://yushiyuyue.ncepu.edu.cn/appointmentGoods"
     res = self.session.post(order_url,
                             data=data,
                             headers=get_fake_headers())
     res = res.json()
     return res['returncode'] == 'SUCCESS'
Exemplo n.º 5
0
 def ordered_bath_list(self):
     _ = self.order_homepage()
     url = "http://yushiyuyue.ncepu.edu.cn/openCustomerOrderList"
     res = self.session.get(url, headers=get_fake_headers())
     if res.status_code != 200:
         log(f"get ordered_bath_list failed {res.text}")
         self.logout()
         exit(-1)
     res = res.text
     ordered_number = re.findall("&quot;\d+&", res)
     ordered_number = [re.findall("\d+", x)[0] for x in ordered_number]
     ordered_time = re.findall(
         "&quot;\d{4}-\d{2}-\d{2} \d{2}:\d{2}-\d{2}:\d{2}", res)
     ordered_time = [x[6:] for x in ordered_time]
     assert len(ordered_number) == len(ordered_time)
     return ordered_number, ordered_time
Exemplo n.º 6
0
 def available_order_list(self):
     if re.match("^\d{4}-\d{2}-\d{2}$", self.expected_day) == None:
         log(f"order_list {self.expected_day} format wrong!")
         exit(-1)
     if datetime(year=int(self.expected_day[:4]),
                 month=int(self.expected_day[5:7]),
                 day=int(self.expected_day[8:]),
                 hour=23,
                 minute=59) < datetime.now():
         log(f"wrong datetime {self.expected_day}")
         return []
     _ = self.order_homepage()
     url = "http://yushiyuyue.ncepu.edu.cn/appointRules/queryAppointRules"
     data = {'goodsid': self.goodsid, 'appointdate': self.expected_day}
     res = self.session.post(url, data=data, headers=get_fake_headers())
     # print(res.text)
     res = res.json()
     if res['returncode'] == 'SUCCESS':
         # log('get order_list successfully')
         res = res['jsonArr']
         for one in res:
             start = one['timeslot'].split('-')
             end = start[1]
             start = start[0]
             day = self.get_expected_year_month_day()
             one['end'] = day.replace(hour=int(end[:2]),
                                      minute=int(end[3:]))
             one['start'] = day.replace(hour=int(start[:2]),
                                        minute=int(start[3:]))
             if one['msg'] == '已约满' or one['msg'] == '约满':
                 one['msg'] = 0
             else:
                 one['msg'] = int(one['msg'])
         return res
     else:
         log('get order_list failed')
         exit(-1)
Exemplo n.º 7
0
 def order_homepage(self):
     order_show_url = f"http://yushiyuyue.ncepu.edu.cn/openHomePage?openid={self.account}"
     _ = self.session.get(order_show_url, headers=get_fake_headers())
     order_show_url = "http://yushiyuyue.ncepu.edu.cn/openHomePage"
     return self.session.get(order_show_url, headers=get_fake_headers())