Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

70 строки
2.2 KiB

import warnings
import time
from datetime import datetime
import requests.utils
from jdseckillAPIv2 import JDSecKillAPI
from tools.mylogger import logger
warnings.filterwarnings('ignore')
from concurrent.futures import ThreadPoolExecutor, wait
class JDSecKillSubmit(JDSecKillAPI):
def __init__(self, sku, ck):
super().__init__(sku=sku, ck=ck)
self.sku = sku
self.ck = ck
def log(self, str_p):
logger.info(str_p)
def doKill(self, sk, order_data):
resp_json = self.submit_order(order_data=order_data, sk=sk)
if resp_json is not None:
txt = order_data['address']['name'] + "抢购结果:" + str(resp_json)
self.log(txt)
if resp_json['success']:
self.send_message(order_data['address']['name'] + '抢购成功, 订单:' + str(resp_json))
def appoint_task(self):
try:
resp_json = self.appoint_sku()
print("预约结果:%s" % str(resp_json))
self.log('appoint:' + str(resp_json))
except Exception as e:
print(str(e))
def killSku(self):
try:
token_params = self.get_token_key()
print(datetime.now())
divide_url = self.get_appjmp(token_params=token_params)
print(datetime.now())
captcha_url = self.get_divide(divide_url=divide_url)
print(datetime.now())
seckill_url = self.get_captcha(captcha_url=captcha_url)
print(datetime.now())
# todo 测试url
# seckill_url = 'https://marathon.jd.com/seckillM/seckill.action?skuId=' + self.sku + '&num=1&rid=1639830212'
resp = self.visit_seckill(seckill_url=seckill_url)
order_data = self.init_action()
print(datetime.now())
if order_data is not None:
for k in range(50):
sk_val = self.get_tak()
print("计算sk:%s" % str(sk_val))
self.doKill(sk_val, order_data)
time.sleep(0.5)
return True
return False
except Exception as e:
print(str(e))
return False