ey-commerce-lib 1.0.18__tar.gz → 1.0.20__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of ey-commerce-lib might be problematic. Click here for more details.

Files changed (69) hide show
  1. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/PKG-INFO +1 -1
  2. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/pyproject.toml +1 -1
  3. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/dxm/main.py +25 -0
  4. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/dxm/parser/order.py +23 -15
  5. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/.gitignore +0 -0
  6. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/.python-version +0 -0
  7. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/README.md +0 -0
  8. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/pytest.ini +0 -0
  9. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/__init__.py +0 -0
  10. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/dxm/__init__.py +0 -0
  11. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/dxm/constant/__init__.py +0 -0
  12. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/dxm/constant/order.py +0 -0
  13. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/dxm/exception/__init__.py +0 -0
  14. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/dxm/exception/common.py +0 -0
  15. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/dxm/order.py +0 -0
  16. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/dxm/parser/__init__.py +0 -0
  17. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/dxm/parser/common.py +0 -0
  18. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/dxm/parser/count.py +0 -0
  19. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/dxm/parser/ebay_product.py +0 -0
  20. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/dxm/parser/purchase.py +0 -0
  21. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/dxm/parser/tracking.py +0 -0
  22. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/dxm/parser/warehouse.py +0 -0
  23. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/dxm/schemas/__init__.py +0 -0
  24. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/dxm/schemas/common.py +0 -0
  25. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/dxm/schemas/dxm_commodity_product.py +0 -0
  26. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/dxm/schemas/ebay_product.py +0 -0
  27. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/dxm/schemas/order.py +0 -0
  28. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/dxm/schemas/tracking.py +0 -0
  29. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/dxm/schemas/warehouse.py +0 -0
  30. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/dxm/utils/__init__.py +0 -0
  31. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/dxm/utils/dxm_commodity_product.py +0 -0
  32. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/dxm/utils/mark.py +0 -0
  33. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/four_seller/__init__.py +0 -0
  34. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/four_seller/constant/__init__.py +0 -0
  35. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/four_seller/constant/response.py +0 -0
  36. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/four_seller/main.py +0 -0
  37. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/four_seller/parser/__init__.py +0 -0
  38. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/four_seller/parser/order.py +0 -0
  39. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/four_seller/schemas/__init__.py +0 -0
  40. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/four_seller/schemas/query/__init__.py +0 -0
  41. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/four_seller/schemas/query/order.py +0 -0
  42. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/four_seller/schemas/vo/__init__.py +0 -0
  43. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/four_seller/schemas/vo/order.py +0 -0
  44. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/kogan/__init__.py +0 -0
  45. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/kogan/main.py +0 -0
  46. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/kogan/schemas/__init__.py +0 -0
  47. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/kogan/schemas/query/__init__.py +0 -0
  48. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/kogan/schemas/query/order.py +0 -0
  49. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/kogan/schemas/query/product.py +0 -0
  50. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/kogan/schemas/response/__init__.py +0 -0
  51. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/kogan/schemas/response/order.py +0 -0
  52. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/kogan/schemas/response/product.py +0 -0
  53. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/model.py +0 -0
  54. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/py.typed +0 -0
  55. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/takesend/__init__.py +0 -0
  56. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/takesend/config.py +0 -0
  57. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/takesend/main.py +0 -0
  58. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/utils/__init__.py +0 -0
  59. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/utils/close.py +0 -0
  60. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/utils/dxm.py +0 -0
  61. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/utils/float.py +0 -0
  62. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/utils/list_util.py +0 -0
  63. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/src/ey_commerce_lib/utils/str.py +0 -0
  64. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/tests/__init__.py +0 -0
  65. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/tests/dxm/__init__.py +0 -0
  66. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/tests/dxm/test_purchase.py +0 -0
  67. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/tests/kogan/__init__.py +0 -0
  68. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/tests/kogan/test_client.py +0 -0
  69. {ey_commerce_lib-1.0.18 → ey_commerce_lib-1.0.20}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ey-commerce-lib
3
- Version: 1.0.18
3
+ Version: 1.0.20
4
4
  Summary: eeyoung电商客户端调用封装
5
5
  Author-email: 饶奇奇 <1124393197@qq.com>
6
6
  Requires-Python: >=3.10
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "ey-commerce-lib"
3
- version = "1.0.18"
3
+ version = "1.0.20"
4
4
  description = "eeyoung电商客户端调用封装"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -822,6 +822,31 @@ class DxmClient:
822
822
  result.extend(page_data.records)
823
823
  return result
824
824
 
825
+ async def tracking_show_detail(self, tracking_number: str, carrier_code: str):
826
+ """
827
+ 物流追踪详情信息
828
+ """
829
+ async with self.__sem:
830
+ tracking_show_detail_response = await self.__async_client.post('/tracking/showDetail.json', data={
831
+ "trackingNumber": tracking_number,
832
+ "carrierCode": carrier_code
833
+ })
834
+ return tracking_show_detail_response.json()
835
+
836
+ async def order_prior_or_ban_ship(self, package_id: str, type_value: str):
837
+ """
838
+ 禁运或优先发货
839
+ :param package_id:
840
+ :param type_value:
841
+ :return:
842
+ """
843
+ async with self.__sem:
844
+ order_prior_or_ban_ship_response = await self.__async_client.post('/order/orderPriorOrBanShip.json', data={
845
+ 'packageId': package_id,
846
+ 'type': type_value,
847
+ })
848
+ return order_prior_or_ban_ship_response.json()
849
+
825
850
  async def __aenter__(self):
826
851
  return self
827
852
 
@@ -26,27 +26,33 @@ def get_single_order_item_list(order_element: html.HtmlElement):
26
26
  variants = sku_element.xpath(
27
27
  './/p[@class="pairProInfoName orderPairNameIsOverlength"]/span[@class="isOverLengThHide"]/text()')
28
28
  variant_list = list()
29
+ # 原来的变种
30
+ origin_variants = []
29
31
  for variant in variants:
30
- variant_list.append({
31
- 'name': variant.split(':')[0].strip(),
32
- 'value': variant.split(':')[1].strip()
33
- })
32
+ if len(variant.split(':')) == 2:
33
+ variant_list.append({
34
+ 'name': variant.split(':')[0].strip(),
35
+ 'value': variant.split(':')[1].strip()
36
+ })
37
+ else:
38
+ origin_variants.append(variant)
34
39
  # 获取来源数据
35
40
  source_presentation_element_list = (sku_element.
36
41
  xpath('.//ul[@id="dropSourceUrl"]/li[@role="presentation"]/a/text()'))
37
42
  source_presentation_element_list = [source_presentation_element.strip().split(':')[1]
38
43
  for source_presentation_element in source_presentation_element_list]
39
44
  try:
40
- float(price.replace(',', ''))
41
- except:
42
- raise Exception(f'价格格式错误, sku是{sku}--价格是{price}')
45
+ price = float(price.replace(',', ''))
46
+ except Exception:
47
+ price = None
43
48
  sku_list.append({
44
49
  'sku': sku,
45
50
  'quantity': int(quantity),
46
- 'price': float(price.replace(',', '')),
51
+ 'price': price,
47
52
  'currency': currency,
48
53
  'img': img,
49
54
  'variants': variant_list,
55
+ 'origin_variants': origin_variants,
50
56
  'source_list': source_presentation_element_list
51
57
  })
52
58
  # 订单金额
@@ -319,21 +325,23 @@ def get_order_detail_by_html(html_str: str):
319
325
  pair_info_sku = pair_info_element.xpath('.//span[@class="pairProInfoSku"]/text()')[0].split(' x')[0].strip()
320
326
  pair_info_sku_quantity = int(pair_info_element.xpath('.//span[@class="pairProInfoSku"]/span/text()')[0].strip())
321
327
  proid = get_str_list_first_not_blank_or_none(pair_info_element.xpath('.//input[@proid]/@proid'))
322
- # warehouse_sku, warehouse_sku_quantity = pair_info_element.xpath(
323
- # './/div[contains(@class, "normalDiv")]/p[1]/text()')[0].split(' x ')
324
328
  warehouse_sku_info_list = pair_info_element.xpath('.//div[contains(@class, "normalDiv")]/p[1]/text()')
325
329
  warehouse_sku, warehouse_sku_quantity = None, None
326
330
  if len(warehouse_sku_info_list) > 0:
327
331
  warehouse_sku_info = warehouse_sku_info_list[0]
328
332
  warehouse_sku, warehouse_sku_quantity = warehouse_sku_info.split(' x ')
329
333
 
334
+ # 获取可用库存
330
335
  warehouse_available_quantity_element_list = pair_info_element.xpath(
331
336
  './/div[contains(@class, "normalDiv")]/p[2]/span[2]/text()')
332
- warehouse_available_quantity_str = warehouse_available_quantity_element_list[0].strip()
333
- if warehouse_available_quantity_str.endswith('+'):
334
- warehouse_available_quantity_str = warehouse_available_quantity_str[:-1]
335
- warehouse_available_quantity = int(warehouse_available_quantity_str) if len(
336
- warehouse_available_quantity_element_list) > 0 else None
337
+ warehouse_available_quantity_str = get_str_list_first_not_blank_or_none(warehouse_available_quantity_element_list)
338
+ # 获取到可用库存节点
339
+ if warehouse_available_quantity_str is not None:
340
+ if warehouse_available_quantity_str.endswith('+'):
341
+ warehouse_available_quantity_str = warehouse_available_quantity_str[:-1]
342
+ warehouse_available_quantity = int(warehouse_available_quantity_str)
343
+ else:
344
+ warehouse_available_quantity = None
337
345
  pair_info_list.append({
338
346
  'pair_info_sku': pair_info_sku,
339
347
  'pair_info_sku_quantity': pair_info_sku_quantity,