Skip to content

Commit

Permalink
Import timer
Browse files Browse the repository at this point in the history
  • Loading branch information
tychxn committed Nov 29, 2018
1 parent f871f54 commit a84f79f
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 17 deletions.
56 changes: 39 additions & 17 deletions jd_assistant.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from bs4 import BeautifulSoup

from jd_tools import *
from timer import Timer


class Assistant(object):
Expand Down Expand Up @@ -603,23 +604,17 @@ def submit_order_by_time(self, buy_time, retry=4, interval=5):
print(get_current_time(), '请先登录再定时下单!')
return

# '2018-09-28 22:45:50.000'
buy_time = datetime.strptime(buy_time, "%Y-%m-%d %H:%M:%S.%f")
print(get_current_time(), '正在等待下单……')
t = Timer(buy_time=buy_time)
t.start()

now_time = datetime.now
count = 1
while True:
if retry <= 0:
for count in range(1, retry + 1):
print(get_current_time(), '第[{0}/{1}]次尝试提交订单……'.format(count, retry))
if self.submit_order():
break
if now_time() >= buy_time:
print(get_current_time(), '第%s次尝试下单……' % count)
if self.submit_order():
break
else:
retry -= 1
count += 1
time.sleep(interval)
print(get_current_time(), '休息{0}s……'.format(interval))
time.sleep(interval)
else:
print(get_current_time(), '执行结束,提交订单失败!')

def submit_order_by_stock(self, sku_id, area, interval=3):
"""当商品有库存时提交订单
Expand Down Expand Up @@ -882,11 +877,38 @@ def exec_seckill(self, sku_id, retry=4, interval=4):
:param interval: 抢购执行间隔,可选参数,默认4秒
:return:
"""
for _ in range(retry):
for count in range(1, retry + 1):
print(get_current_time(), '第[{0}/{1}]次尝试抢购……'.format(count, retry))
self.request_seckill_url(sku_id)
self.request_seckill_checkout_page(sku_id)
if self.submit_seckill_order(sku_id):
break
print(get_current_time(), '休息{0}s……'.format(interval))
time.sleep(interval)
else:
print(get_current_time(), '执行结束,抢购失败!')

print(get_current_time(), '抢购流程执行完毕!')
def exec_seckill_by_time(self, sku_id, buy_time, retry=4, interval=4):
"""定时抢购
:param sku_id: 商品id
:param buy_time: 下单时间,例如:'2018-09-28 22:45:50.000'
:param retry: 抢购重复执行次数,可选参数,默认4次
:param interval: 抢购执行间隔,可选参数,默认4秒
:return:
"""
print(get_current_time(), '准备抢购商品:%s' % sku_id)

# '2018-09-28 22:45:50.000'
t = Timer(buy_time=buy_time)
t.start()

for count in range(1, retry + 1):
print(get_current_time(), '第[{0}/{1}]次尝试抢购……'.format(count, retry))
self.request_seckill_url(sku_id)
self.request_seckill_checkout_page(sku_id)
if self.submit_seckill_order(sku_id):
break
print(get_current_time(), '休息{0}s……'.format(interval))
time.sleep(interval)
else:
print(get_current_time(), '执行结束,抢购失败!')
24 changes: 24 additions & 0 deletions timer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# -*- coding:utf-8 -*-
import time
from datetime import datetime

from jd_tools import get_current_time


class Timer(object):

def __init__(self, buy_time, sleep_interval=0.5):

# '2018-09-28 22:45:50.000'
self.buy_time = datetime.strptime(buy_time, "%Y-%m-%d %H:%M:%S.%f")
self.sleep_interval = sleep_interval

def start(self):
print(get_current_time(), '正在等待到达设定时间:%s' % self.buy_time)
now_time = datetime.now
while True:
if now_time() >= self.buy_time:
print(get_current_time(), '时间达到,开始执行……')
break
else:
time.sleep(self.sleep_interval)

0 comments on commit a84f79f

Please sign in to comment.