Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

70 Zeilen
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