Exemplo n.º 1
0
 def request_add_shopcart(self, order, rebot, sta_mode=1):
     """
     加入购物车
     """
     line = order.line
     base_url = "http://www.96096kp.cn/UserData/ShopCart.aspx"
     headers = {
         "User-Agent": rebot.user_agent,
         "Referer": "http://www.96096kp.cn/TicketMain.aspx",
         "Origin": "http://www.96096kp.cn",
         "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
     }
     cookies = json.loads(rebot.cookies)
     params = {
         "classInfo":
         json.dumps(line.extra_info["raw_info"], ensure_ascii=False),
         "drBusStationCode":
         line.s_sta_id,
         "drBusStationName":
         line.s_sta_name,
         "ticketHalfCount":
         0,
         "ticketFullCount":
         order.ticket_amount,
         "ticketChildCount":
         0,
         "cmd":
         "buyTicket",
     }
     if sta_mode == 2:
         lst = []
         for r in order.riders:
             lst.append("1~%s~1~%s~%s~0~false" %
                        (r["name"], r["id_number"], r["telephone"]))
         params.update({
             "passengerMsg":
             "|".join(lst),
             "contactMsg":
             "%s~%s~" %
             (order.contact_info["name"], order.contact_info["telephone"]),
             "isIns":
             "false",
         })
     r = rebot.http_post(
         base_url,
         data=urllib.urlencode(params),
         headers=headers,
         cookies=cookies,
     )
     try:
         res = json.loads(trans_js_str(r.content))
     except Exception, e:
         rebot.modify(ip="")
         raise e
Exemplo n.º 2
0
 def request_get_shoptcart(self, rebot):
     """
     获取购物车条目
     """
     base_url = "http://www.96096kp.cn/UserData/ShopCart.aspx"
     headers = {
         "User-Agent": rebot.user_agent,
         "Referer": "http://www.96096kp.cn/TicketMain.aspx",
         "Origin": "http://www.96096kp.cn",
         "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
     }
     cookies = json.loads(rebot.cookies)
     params = {
         "cmd": "getCartItemList",
     }
     r = rebot.http_post(base_url,
                         data=urllib.urlencode(params),
                         headers=headers,
                         cookies=cookies)
     return json.loads(trans_js_str(r.content))
Exemplo n.º 3
0
    def request_add_shopcart(self, order, rebot, sta_mode=1):
        """
        加入购物车
        """
        line = order.line
        base_url = "http://211.162.125.225/UserData/ShopCart.aspx"
        headers = {
            "User-Agent": rebot.user_agent,
            "Referer": "http://211.162.125.225/User/Default.aspx",
            "X-Requested-With": "XMLHttpRequest",
            "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
        }
        cookies = json.loads(rebot.cookies)
        params = {
            "classInfo":
            json.dumps(line.extra_info["raw_info"], ensure_ascii=False),
            "drBusStationCode":
            line.s_sta_id,
            "drBusStationName":
            line.s_sta_name,
            "ticketFullCount":
            order.ticket_amount,
            "ticketType":
            "1",
            "cmd":
            "buyTicket",
            "IsAgreeBX":
            "false"
        }

        r = rebot.http_post(
            base_url,
            data=urllib.urlencode(params),
            headers=headers,
            cookies=cookies,
        )
        try:
            res = json.loads(trans_js_str(r.content))
        except Exception, e:
            rebot.modify(ip="")
            raise e
Exemplo n.º 4
0
 def request_del_shoptcart(self, rebot, sid):
     """
     删除购物车
     """
     base_url = "http://211.162.125.225/UserData/ShopCart.aspx"
     headers = {
         "User-Agent": rebot.user_agent,
         "Referer": "http://211.162.125.225/User/CommitGoods.aspx",
         "X-Requested-With": "XMLHttpRequest",
         "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
     }
     cookies = json.loads(rebot.cookies)
     params = {
         "cmd": "delCartItem",
         "id": sid,
     }
     r = rebot.http_post(base_url,
                         data=urllib.urlencode(params),
                         headers=headers,
                         cookies=cookies)
     return json.loads(trans_js_str(r.content))
Exemplo n.º 5
0
 def request_station_status(self, line, rebot):
     """
         车站状态
     """
     base_url = "http://www.96096kp.cn/UserData/UserCmd.aspx"
     params = {
         "SchStationCode": line.s_sta_id,
         "SchStationName": line.s_sta_name,
         "cmd": "GetStationStatus",
     }
     headers = {
         "User-Agent": rebot.user_agent,
         "Referer": "http://www.96096kp.cn/TicketMain.aspx",
         "Origin": "http://www.96096kp.cn",
         "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
     }
     cookies = json.loads(rebot.cookies)
     r = rebot.http_post(base_url,
                         data=urllib.urlencode(params),
                         headers=headers,
                         cookies=cookies)
     return json.loads(trans_js_str(r.content))
Exemplo n.º 6
0
    def send_order_request(self, rebot, order):
        base_url = "http://211.162.125.225/UserData/UserCmd.aspx"
        params = {
            "BeginDate": "",
            "EndDate": "",
            "OrderNo": order.raw_order_no,
            "start": 0,
            "limit": 10,
            "Status": -1,
            "cmd": "OnlineOrderGetList",
            "UserGuid": rebot.user_id
        }

        headers = {
            "User-Agent": rebot.user_agent,
            "Referer": "http://211.162.125.225/User/OrderQuery.aspx",
            "X-Requested-With": "XMLHttpRequest",
            "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
        }

        def my_trans_js_str(s):
            for k in set(re.findall("([A-Za-z_]+):", s)):
                s = re.sub(r"\b%s\b" % k, '"%s"' % k, s)
            return s

        cookies = json.loads(rebot.cookies)
        r = rebot.http_post(base_url,
                            data=urllib.urlencode(params),
                            headers=headers,
                            cookies=cookies)
        try:
            res = json.loads(trans_js_str(r.content))
        except:
            res = json.loads(my_trans_js_str(r.content))
        for d in res["data"]:
            if d["o_OrderNo"] == order.raw_order_no:
                return d
        return {}
Exemplo n.º 7
0
 def do_refresh_line(self, line):
     rebot = SzkyWebRebot.get_one()
     headers = {"User-Agent": rebot.user_agent}
     cookies = {}
     for i in range(20):
         try:
             res = rebot.query_code(headers)
         except:
             continue
         if res.get('status', '') == 0:
             cookies = res.get('cookies')
             valid_code = res.get('valid_code')
             break
     result_info = {
         "result_msg": "",
         "update_attrs": {},
     }
     now = dte.now()
     if cookies:
         data = {
             "DstNode": line.d_sta_name,
             "OpAddress": "-1",
             "OpStation": "-1",
             "OperMode": '',
             "SchCode": '',
             "SchDate": line.drv_date,
             "SchTime": '',
             'SeatType': '',
             'StartStation': line.s_sta_id,
             'WaitStationCode':
             line.extra_info['raw_info']['SchWaitStCode'],
             'cmd': "MQCenterGetClass",
             'txtImgCode': valid_code,
         }
         line_url = 'http://211.162.125.225/UserData/MQCenterSale.aspx'
         headers.update({
             "Content-Type":
             "application/x-www-form-urlencoded; charset=UTF-8",
             "Referer": "http://211.162.125.225/User/Default.aspx",
             "X-Requested-With": "XMLHttpRequest",
         })
         try:
             r = rebot.http_post(line_url,
                                 data=urllib.urlencode(data),
                                 headers=headers,
                                 cookies=cookies)
             res = json.loads(trans_js_str(r.content))
         except:
             result_info.update(result_msg="exception_ok",
                                update_attrs={
                                    "left_tickets": 5,
                                    "refresh_datetime": now
                                })
             line_log.info("%s\n%s", "".join(traceback.format_exc()),
                           locals())
             return result_info
     else:
         return self.do_refresh_line_by_app(line)
     update_attrs = {}
     try:
         for d in res["data"]:
             if d['SchStat'] == '1':
                 drv_datetime = dte.strptime(
                     "%s %s" % (d["SchDate"], d["orderbytime"]),
                     "%Y-%m-%d %H:%M")
                 line_id_args = {
                     "s_city_name": line.s_city_name,
                     "d_city_name": line.d_city_name,
                     "s_sta_name": d["SchWaitStName"],
                     "d_sta_name": d["SchNodeName"],
                     "crawl_source": line.crawl_source,
                     "drv_datetime": drv_datetime,
                 }
                 line_id = md5(
                     "%(s_city_name)s-%(d_city_name)s-%(drv_datetime)s-%(s_sta_name)s-%(d_sta_name)s-%(crawl_source)s"
                     % line_id_args)
                 try:
                     obj = Line.objects.get(line_id=line_id)
                 except Line.DoesNotExist:
                     continue
                 info = {
                     "full_price": float(d["SchStdPrice"]),
                     "fee": 0,
                     "left_tickets": int(d["SchTicketCount"]),
                     "refresh_datetime": now,
                     "extra_info": {
                         "raw_info": d
                     },
                 }
                 if line_id == line.line_id:
                     update_attrs = info
                 else:
                     if obj.left_tickets == 0:
                         continue
                     obj.update(**info)
     except:
         result_info.update(result_msg="exception_ok",
                            update_attrs={
                                "left_tickets": 5,
                                "refresh_datetime": now
                            })
         line_log.info("%s\n%s", "".join(traceback.format_exc()), locals())
         return result_info
     if not update_attrs:
         result_info.update(result_msg="no line info",
                            update_attrs={
                                "left_tickets": 0,
                                "refresh_datetime": now
                            })
     else:
         result_info.update(result_msg="ok", update_attrs=update_attrs)
     return result_info
Exemplo n.º 8
0
    def check_raw_order_no(self, order):
        """
        有时候源站返回的订单号是错的,这时需要从源站搜出来
        """
        if order.status != STATUS_WAITING_ISSUE:
            return
        try:
            other = Order.objects.get(
                raw_order_no=order.raw_order_no,
                status__in=[STATUS_ISSUE_SUCC, STATUS_ISSUE_FAIL])
        except Order.DoesNotExist:
            return
        if other.order_no == order.order_no:
            return
        rebot = order.get_lock_rebot()
        base_url = "http://www.96096kp.cn/UserData/UserCmd.aspx"
        params = {
            "isCheck": "false",
            "ValidateCode": "",
            "IDTypeCode": 1,
            "IDTypeNo": order.contact_info["id_number"],
            "start": 0,
            "limit": 10,
            "Status": -1,
            "cmd": "OnlineOrderGetList"
        }
        headers = {
            "User-Agent": rebot.user_agent,
            "Referer": "http://www.96096kp.cn/TicketMain.aspx",
            "Origin": "http://www.96096kp.cn",
            "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
        }
        cookies = json.loads(rebot.cookies)
        r = rebot.http_post(base_url,
                            data=urllib.urlencode(params),
                            headers=headers,
                            cookies=cookies)
        res = json.loads(trans_js_str(r.content))
        order_list = res["data"]

        if order.contact_info["id_number"] != order.riders[0]["id_number"]:
            params = {
                "isCheck": "false",
                "ValidateCode": "",
                "IDTypeCode": 1,
                "IDTypeNo": order.riders[0]["id_number"],
                "start": 0,
                "limit": 10,
                "Status": -1,
                "cmd": "OnlineOrderGetList"
            }
            r = rebot.http_post(base_url,
                                data=urllib.urlencode(params),
                                headers=headers,
                                cookies=cookies)
            res = json.loads(trans_js_str(r.content))
            order_list.extend(res["data"])

        for d in order_list:
            if d["OrderStatus"] == "未支付" and float(
                    d["OrderMoney"]) == order.order_price and int(
                        d["TicketCount"]) == order.ticket_amount:
                raw_order = d["OrderNo"]
                qs = Order.objects.filter(raw_order_no=raw_order)
                cnt = qs.count()
                if not cnt:
                    old = order.raw_order_no
                    order.modify(raw_order_no=raw_order,
                                 pay_money=float(d["OrderMoney"]))
                    order.add_trace(OT_CHECK_RAW_ORDER,
                                    "%s=>%s" % (old, order.raw_order_no))
                    order_log.info("order:%s change raw_order_no %s to %s",
                                   order.order_no, old, order.raw_order_no)
                    return
                elif cnt == 1:
                    if qs.first().order_no == order.order_no:
                        return
Exemplo n.º 9
0
    def send_order_request(self, rebot, order):
        base_url = "http://www.96096kp.cn/UserData/UserCmd.aspx"
        params = {
            "isCheck": "false",
            "ValidateCode": "",
            "IDTypeCode": 1,
            "IDTypeNo": order.contact_info["id_number"],
            "start": 0,
            "limit": 10,
            "Status": -1,
            "cmd": "OnlineOrderGetList"
        }
        headers = {
            "User-Agent": rebot.user_agent,
            "Referer": "http://www.96096kp.cn/TicketMain.aspx",
            "Origin": "http://www.96096kp.cn",
            "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
        }

        def my_trans_js_str(s):
            for k in set(re.findall("([A-Za-z]+):", s)):
                s = re.sub(r"\b%s\b" % k, '"%s"' % k, s)
            s = s.replace("\"\'\'\"", "\"\"")
            s = s.replace("''", "\"\"")
            return s

        cookies = json.loads(rebot.cookies)
        r = rebot.http_post(base_url,
                            data=urllib.urlencode(params),
                            headers=headers,
                            cookies=cookies)
        if r.status_code == 403:
            rebot.modify(ip="")
            return {}
        try:
            res = json.loads(trans_js_str(r.content))
        except:
            res = json.loads(my_trans_js_str(r.content))
        for d in res["data"]:
            if d["OrderNo"] == order.raw_order_no:
                return d
        params = {
            "isCheck": "false",
            "ValidateCode": "",
            "IDTypeCode": 1,
            "IDTypeNo": order.riders[0]["id_number"],
            "start": 0,
            "limit": 10,
            "Status": -1,
            "cmd": "OnlineOrderGetList"
        }
        r = rebot.http_post(base_url,
                            data=urllib.urlencode(params),
                            headers=headers,
                            cookies=cookies)
        try:
            res = json.loads(trans_js_str(r.content))
        except:
            res = json.loads(my_trans_js_str(r.content))
        for d in res["data"]:
            if d["OrderNo"] == order.raw_order_no:
                return d
        return {}