MCPcopy
hub / github.com/tychxn/jd-assistant / buy_item_in_stock

Method buy_item_in_stock

jd_assistant.py:1372–1415  ·  view source on GitHub ↗

根据库存自动下单商品 :param sku_ids: 商品id。可以设置多个商品,也可以带数量,如:'1234' 或 '1234,5678' 或 '1234:2' 或 '1234:2,5678:3' :param area: 地区id :param wait_all: 是否等所有商品都有货才一起下单,可选参数,默认False :param stock_interval: 查询库存时间间隔,可选参数,默认3秒 :param submit_retry: 提交订单失败后重试次数,可选参数,默认3次 :pa

(self, sku_ids, area, wait_all=False, stock_interval=3, submit_retry=3, submit_interval=5)

Source from the content-addressed store, hash-verified

1370
1371 @check_login
1372 def buy_item_in_stock(self, sku_ids, area, wait_all=False, stock_interval=3, submit_retry=3, submit_interval=5):
1373 """根据库存自动下单商品
1374 :param sku_ids: 商品id。可以设置多个商品,也可以带数量,如:'1234''1234,5678''1234:2''1234:2,5678:3'
1375 :param area: 地区id
1376 :param wait_all: 是否等所有商品都有货才一起下单,可选参数,默认False
1377 :param stock_interval: 查询库存时间间隔,可选参数,默认3秒
1378 :param submit_retry: 提交订单失败后重试次数,可选参数,默认3次
1379 :param submit_interval: 提交订单失败后重试时间间隔,可选参数,默认5秒
1380 :return:
1381 """
1382 items_dict = parse_sku_id(sku_ids)
1383 items_list = list(items_dict.keys())
1384 area_id = parse_area_id(area=area)
1385
1386 if not wait_all:
1387 logger.info('下单模式:%s 任一商品有货并且未下架均会尝试下单', items_list)
1388 while True:
1389 for (sku_id, count) in items_dict.items():
1390 if not self.if_item_can_be_ordered(sku_ids={sku_id: count}, area=area_id):
1391 logger.info('%s 不满足下单条件,%ss后进行下一次查询', sku_id, stock_interval)
1392 else:
1393 logger.info('%s 满足下单条件,开始执行', sku_id)
1394 self._cancel_select_all_cart_item()
1395 self._add_or_change_cart_item(self.get_cart_detail(), sku_id, count)
1396 if self.submit_order_with_retry(submit_retry, submit_interval):
1397 return
1398
1399 time.sleep(stock_interval)
1400 else:
1401 logger.info('下单模式:%s 所有都商品同时有货并且未下架才会尝试下单', items_list)
1402 while True:
1403 if not self.if_item_can_be_ordered(sku_ids=sku_ids, area=area_id):
1404 logger.info('%s 不满足下单条件,%ss后进行下一次查询', items_list, stock_interval)
1405 else:
1406 logger.info('%s 满足下单条件,开始执行', items_list)
1407 self._cancel_select_all_cart_item()
1408 shopping_cart = self.get_cart_detail()
1409 for (sku_id, count) in items_dict.items():
1410 self._add_or_change_cart_item(shopping_cart, sku_id, count)
1411
1412 if self.submit_order_with_retry(submit_retry, submit_interval):
1413 return
1414
1415 time.sleep(stock_interval)

Callers 1

main.pyFile · 0.80

Calls 7

get_cart_detailMethod · 0.95
parse_sku_idFunction · 0.90
parse_area_idFunction · 0.90

Tested by

no test coverage detected