qrpa 1.0.63__tar.gz → 1.0.65__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 qrpa might be problematic. Click here for more details.
- {qrpa-1.0.63 → qrpa-1.0.65}/PKG-INFO +1 -1
- {qrpa-1.0.63 → qrpa-1.0.65}/pyproject.toml +1 -1
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa/shein_excel.py +1 -1
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa/shein_lib.py +32 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa/temu_excel.py +1 -1
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa.egg-info/PKG-INFO +1 -1
- {qrpa-1.0.63 → qrpa-1.0.65}/README.md +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa/RateLimitedSender.py +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa/__init__.py +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa/db_migrator.py +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa/feishu_bot_app.py +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa/feishu_client.py +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa/feishu_logic.py +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa/fun_base.py +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa/fun_excel.py +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa/fun_file.py +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa/fun_web.py +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa/fun_win.py +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa/mysql_module/__init__.py +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa/mysql_module/shein_return_order_model.py +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa/shein_daily_report_model.py +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa/shein_mysql.py +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa/shein_sqlite.py +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa/shein_ziniao.py +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa/temu_chrome.py +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa/temu_lib.py +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa/time_utils.py +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa/time_utils_example.py +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa/wxwork.py +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa.egg-info/SOURCES.txt +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa.egg-info/dependency_links.txt +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/qrpa.egg-info/top_level.txt +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/setup.cfg +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/setup.py +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/tests/test_db_migrator.py +0 -0
- {qrpa-1.0.63 → qrpa-1.0.65}/tests/test_wxwork.py +0 -0
|
@@ -1662,7 +1662,7 @@ class SheinExcel:
|
|
|
1662
1662
|
store_excel_data = [header]
|
|
1663
1663
|
for comment in comment_list:
|
|
1664
1664
|
row_item = []
|
|
1665
|
-
row_item.append(comment['commentId'])
|
|
1665
|
+
row_item.append(f'{comment['commentId']}\n{store_name}')
|
|
1666
1666
|
row_item.append(comment['goodsThumb'])
|
|
1667
1667
|
product_info = f'属性:{comment["goodsAttribute"]}\n货号:{comment["goodSn"]}\nSPU:{comment["spu"]}\nSKC:{comment["skc"]}\nSKU:{comment["sku"]}'
|
|
1668
1668
|
row_item.append(product_info)
|
|
@@ -631,6 +631,32 @@ class SheinLib:
|
|
|
631
631
|
log(f'正在获取 {self.store_name} 最近一个月出库金额: {last_item["totalCustomerAmount"]}')
|
|
632
632
|
return last_item['totalCustomerAmount']
|
|
633
633
|
|
|
634
|
+
# 存储商品库
|
|
635
|
+
def store_product_info(self):
|
|
636
|
+
# todo 商品详情 属性 规格 图片 重量 与 尺寸
|
|
637
|
+
skc_list = self.get_bak_base_info()
|
|
638
|
+
cache_file = f'{self.config.auto_dir}/shein/sku_price/sku_price_{self.store_username}.json'
|
|
639
|
+
dict_sku = read_dict_from_file(cache_file)
|
|
640
|
+
for skc_item in skc_list:
|
|
641
|
+
skc_item['store_username'] = self.store_username
|
|
642
|
+
skc_item['store_name'] = self.store_name
|
|
643
|
+
skc_item['store_manager'] = self.config.shein_store_manager.get(str(self.store_username).lower())
|
|
644
|
+
spu = skc_item['spu']
|
|
645
|
+
|
|
646
|
+
# 倒序遍历 skuList,安全删除
|
|
647
|
+
for i in range(len(skc_item['skuList']) - 1, -1, -1):
|
|
648
|
+
sku_item = skc_item['skuList'][i]
|
|
649
|
+
if sku_item['skuCode'] == '合计':
|
|
650
|
+
del skc_item['skuList'][i] # 删除“合计”
|
|
651
|
+
continue
|
|
652
|
+
sku_item['price'] = dict_sku[sku_item['skuCode']]
|
|
653
|
+
cost_price = self.bridge.get_sku_cost(sku_item['supplierSku'], self.config.erp_source)
|
|
654
|
+
sku_item['erp_cost_price'] = cost_price if isinstance(cost_price, (int, float)) else None
|
|
655
|
+
sku_item['erp_supplier_name'] = self.bridge.get_sku_supplier(sku_item['supplierSku'], self.config.erp_source)
|
|
656
|
+
|
|
657
|
+
cache_file = f'{self.config.auto_dir}/shein/product/skc_list_{self.store_username}.json'
|
|
658
|
+
write_dict_to_file_ex(cache_file, {self.store_username: skc_list}, [self.store_username])
|
|
659
|
+
|
|
634
660
|
# 获取备货信息列表
|
|
635
661
|
def get_bak_base_info(self):
|
|
636
662
|
log(f'获取备货信息列表 {self.store_name} {self.store_username}')
|
|
@@ -680,7 +706,10 @@ class SheinLib:
|
|
|
680
706
|
spu_list = response_text['info']['list']
|
|
681
707
|
|
|
682
708
|
skc_list = [item['skc'] for item in spu_list]
|
|
709
|
+
self.get_activity_label(skc_list)
|
|
710
|
+
self.get_preemption_list(skc_list)
|
|
683
711
|
self.get_sku_price_v2(skc_list)
|
|
712
|
+
self.get_stock_advice(skc_list)
|
|
684
713
|
|
|
685
714
|
total = response_text['info']['count']
|
|
686
715
|
totalPage = math.ceil(total / pageSize)
|
|
@@ -693,7 +722,10 @@ class SheinLib:
|
|
|
693
722
|
spu_list += new_spu_list
|
|
694
723
|
|
|
695
724
|
skc_list = [item['skc'] for item in new_spu_list]
|
|
725
|
+
self.get_activity_label(skc_list)
|
|
726
|
+
self.get_preemption_list(skc_list)
|
|
696
727
|
self.get_sku_price_v2(skc_list)
|
|
728
|
+
self.get_stock_advice(skc_list)
|
|
697
729
|
|
|
698
730
|
time.sleep(0.3)
|
|
699
731
|
|
|
@@ -107,7 +107,7 @@ class TemuExcel:
|
|
|
107
107
|
excel_data = sort_by_column(excel_data, 6, 1)
|
|
108
108
|
|
|
109
109
|
# 计算需要多少个文件(每个文件最多320行数据,包含表头)
|
|
110
|
-
max_data_rows =
|
|
110
|
+
max_data_rows = 250 - 1 # 减去表头行
|
|
111
111
|
total_files = (len(excel_data) + max_data_rows - 1) // max_data_rows # 通过加(max_data_rows-1)实现向上取整
|
|
112
112
|
|
|
113
113
|
for file_index in range(total_files):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|