Commit 8df1a750 authored by 邱阿朋's avatar 邱阿朋

优化

parent a115058c
...@@ -10,5 +10,4 @@ invoices ...@@ -10,5 +10,4 @@ invoices
coop coop
*.xlsx *.xlsx
build build
dist
*.spec *.spec
\ No newline at end of file
@echo off
D:\app\Python\python.exe src\coop.py
pause
File added
...@@ -2,4 +2,6 @@ lxml==5.3.0 ...@@ -2,4 +2,6 @@ lxml==5.3.0
DrissionPage==4.1.0.2 DrissionPage==4.1.0.2
xlrd==2.0.1 xlrd==2.0.1
pandas==2.0.3 pandas==2.0.3
openpyxl==3.1.5 openpyxl==3.1.5
\ No newline at end of file pyinstaller==6.11.0
requests==2.32.3
\ No newline at end of file
...@@ -10,7 +10,7 @@ from DrissionPage import ChromiumPage ...@@ -10,7 +10,7 @@ from DrissionPage import ChromiumPage
from DrissionPage.errors import ElementNotFoundError from DrissionPage.errors import ElementNotFoundError
from lxml import etree from lxml import etree
from helper import helper, excel, file, domain, logger from helper import helper, excel, file, domain, logger, api
country = None country = None
log = logger.ConsoleLog() log = logger.ConsoleLog()
...@@ -32,17 +32,6 @@ def page_get(url): ...@@ -32,17 +32,6 @@ def page_get(url):
full_url = host + url full_url = host + url
page.get(full_url, timeout=3) page.get(full_url, timeout=3)
def sku_relations():
relations_dict = {}
df = pd.read_excel('relations.xlsx')
for index, row in df.iterrows():
row_dict = row.to_dict()
relations_dict[row_dict['ASIN']] = {"SKU": row_dict['SKU'], "NAME": row_dict['NAME']}
return relations_dict
def export_list_read_data(): def export_list_read_data():
file_name = "ContraCogsInvoices.xls" file_name = "ContraCogsInvoices.xls"
if not os.path.isfile(file_name): if not os.path.isfile(file_name):
...@@ -123,7 +112,7 @@ def export_item_read_data(invoice_id): ...@@ -123,7 +112,7 @@ def export_item_read_data(invoice_id):
def main(): def main():
relation_data = sku_relations() # 获取 ASIN 与 SKU 的对应关系数据 relation_data = api.sku_relations() # 获取 ASIN 与 SKU 的对应关系数据
coop_list = export_list_read_data() # 获取合作数据列表 coop_list = export_list_read_data() # 获取合作数据列表
log.info(f"共计:{len(coop_list)} 条数据") log.info(f"共计:{len(coop_list)} 条数据")
...@@ -164,8 +153,8 @@ def main(): ...@@ -164,8 +153,8 @@ def main():
new_item = item.copy() new_item = item.copy()
new_item.pop("Asin") new_item.pop("Asin")
new_item['Asin'] = asin new_item['Asin'] = asin
new_item['ERP SKU'] = relation.get("SKU") new_item['ERP SKU'] = relation.get("erp_sku")
new_item['Group Name'] = relation.get("NAME") new_item['Group Name'] = relation.get("name")
item_coop_data.append(new_item) item_coop_data.append(new_item)
else: else:
new_item = coop.copy() new_item = coop.copy()
...@@ -177,8 +166,8 @@ def main(): ...@@ -177,8 +166,8 @@ def main():
new_item['Original balance'] = vendor_funding_in_agreement_currency new_item['Original balance'] = vendor_funding_in_agreement_currency
new_item['Asin'] = asin new_item['Asin'] = asin
new_item['ERP SKU'] = relation.get("SKU") new_item['ERP SKU'] = relation.get("erp_sku")
new_item['Group Name'] = relation.get("NAME") new_item['Group Name'] = relation.get("name")
new_coop_data.append(new_item) new_coop_data.append(new_item)
# 保存已处理的 item 数据到 Excel 文件中 # 保存已处理的 item 数据到 Excel 文件中
...@@ -204,15 +193,15 @@ def main(): ...@@ -204,15 +193,15 @@ def main():
for key, value in max_sheet_data.items(): for key, value in max_sheet_data.items():
excel.save_xls(value, 'SPA查询.xlsx', key) excel.save_xls(value, 'SPA查询.xlsx', key)
page.close() # 关闭页面
if __name__ == '__main__': if __name__ == '__main__':
try: try:
country = helper.get_input_with_default("国家", "usa") country = helper.get_input_with_default("国家", "usa")
domain.domain_page(page, country) domain.domain_page(page, country)
main() main()
page.close()
except KeyboardInterrupt: except KeyboardInterrupt:
pass pass
except Exception as e: except Exception as e:
log.error(e) log.error(e)
helper.print_trace("main", e)
# coding: utf-8
import requests
def sku_relations():
# 发送 GET 请求
url = "https://order.3oj.com/api/platform_sku_list"
response = requests.get(url)
if response.status_code == 200:
# 将 JSON 响应解析为 Python 字典
data = response.json()
sku_list = data.get("data")
return sku_list
else:
raise Exception("获取sku关系异常")
\ No newline at end of file
# coding: utf-8 # coding: utf-8
import os import os
import sys
import traceback
def make_dir(path): def make_dir(path):
...@@ -14,3 +16,13 @@ def make_dir(path): ...@@ -14,3 +16,13 @@ def make_dir(path):
def get_input_with_default(prompt, default): def get_input_with_default(prompt, default):
user_input = input(f"{prompt}(默认为 '{default}'):") user_input = input(f"{prompt}(默认为 '{default}'):")
return user_input or default return user_input or default
def print_trace(title: str, err):
print("-----------{}:出错-----------".format(title))
except_type, _, except_traceback = sys.exc_info()
err_str = ','.join(str(i) for i in err.args)
print(except_type)
print(err_str)
for i in traceback.extract_tb(except_traceback):
print("函数{},文件:{},行:{}".format(i.name, i.filename, i.lineno))
...@@ -321,7 +321,9 @@ if __name__ == '__main__': ...@@ -321,7 +321,9 @@ if __name__ == '__main__':
country = helper.get_input_with_default("国家", "usa") country = helper.get_input_with_default("国家", "usa")
domain.domain_page(page, country) domain.domain_page(page, country)
main() main()
page.close()
except KeyboardInterrupt: except KeyboardInterrupt:
pass pass
except Exception as e: except Exception as e:
log.error(e) log.error(e)
helper.print_trace("main", e)
...@@ -6,7 +6,7 @@ import pandas as pd ...@@ -6,7 +6,7 @@ import pandas as pd
from DrissionPage import ChromiumPage from DrissionPage import ChromiumPage
from DrissionPage.errors import ElementNotFoundError from DrissionPage.errors import ElementNotFoundError
from helper import helper, excel, file, domain, logger from helper import helper, excel, file, domain, logger, api
country = None country = None
log = logger.ConsoleLog() log = logger.ConsoleLog()
...@@ -29,21 +29,6 @@ def page_get(url): ...@@ -29,21 +29,6 @@ def page_get(url):
page.get(full_url, timeout=3) page.get(full_url, timeout=3)
def sku_relations():
relations_dict = {}
# 读取ASIN和sku映射关系
file_name = 'relations.xlsx'
if not os.path.isfile(file_name):
raise FileNotFoundError(f"{file_name},请确认sku关系文件不存在")
df = pd.read_excel(file_name)
for index, row in df.iterrows():
row_dict = row.to_dict()
relations_dict[row_dict['ASIN']] = row_dict['SKU']
return relations_dict
def export_list_read_data(): def export_list_read_data():
file_name = "Return_Summary.xls" file_name = "Return_Summary.xls"
if not os.path.isfile(file_name): if not os.path.isfile(file_name):
...@@ -77,7 +62,7 @@ def export_item_read_data(return_id): ...@@ -77,7 +62,7 @@ def export_item_read_data(return_id):
def main(): def main():
# 读取sku映射关系 # 读取sku映射关系
relations_dict = sku_relations() relations_dict = api.sku_relations()
# 下载并读取list数据 # 下载并读取list数据
list_data = export_list_read_data() list_data = export_list_read_data()
...@@ -99,12 +84,14 @@ def main(): ...@@ -99,12 +84,14 @@ def main():
}) })
for _, item_row in item_data_result.iterrows(): for _, item_row in item_data_result.iterrows():
relation = relations_dict.get(item_row.get('ASIN'))
erp_sku = relation.get('erp_sku')
data_dict = data.to_dict() data_dict = data.to_dict()
data_dict['Return Date'] = data_dict['Return Date'].strftime('%m/%d/%Y') data_dict['Return Date'] = data_dict['Return Date'].strftime('%m/%d/%Y')
data_dict['Return ID'] = str(data_dict['Return ID']) data_dict['Return ID'] = str(data_dict['Return ID'])
data_dict['PO'] = item_row.get('Purchase order') data_dict['PO'] = item_row.get('Purchase order')
data_dict['ASIN'] = item_row.get('ASIN') data_dict['ASIN'] = item_row.get('ASIN')
data_dict['SKU'] = relations_dict[item_row.get('ASIN')] data_dict['SKU'] = erp_sku if erp_sku is not None else "",
data_dict['Quantity'] = item_row.get('Quantity') data_dict['Quantity'] = item_row.get('Quantity')
# 替换回会数量和金额为详情里面的值 # 替换回会数量和金额为详情里面的值
...@@ -115,7 +102,6 @@ def main(): ...@@ -115,7 +102,6 @@ def main():
new_list_data.append(data_dict) new_list_data.append(data_dict)
excel.save_xls(new_list_data, '退货明细.xlsx') excel.save_xls(new_list_data, '退货明细.xlsx')
page.close()
if __name__ == '__main__': if __name__ == '__main__':
...@@ -123,7 +109,9 @@ if __name__ == '__main__': ...@@ -123,7 +109,9 @@ if __name__ == '__main__':
country = helper.get_input_with_default("国家", "usa") country = helper.get_input_with_default("国家", "usa")
domain.domain_page(page, country) domain.domain_page(page, country)
main() main()
page.close()
except KeyboardInterrupt: except KeyboardInterrupt:
pass pass
except Exception as e: except Exception as e:
log.error(e) log.error(e)
helper.print_trace("main", e)
@echo off pip.exe install -i https://mirrors.cloud.tencent.com/pypi/simple -r requirements.txt
pyinstaller -F -n refund.exe .\src\invoices.py
setlocal pyinstaller -F -n return_goods.exe .\src\returns.py
pyinstaller -F -n spa_search.exe .\src\coop.py
set "PYTHON_VERSION=3.10.10" \ No newline at end of file
set "PYTHON_INSTALLER=python-%PYTHON_VERSION%-amd64.exe"
set "TARGET_DIR=D:\app\Python"
echo Downloading Python %PYTHON_VERSION%...
powershell -Command "Invoke-WebRequest -Uri https://www.python.org/ftp/python/%PYTHON_VERSION%/%PYTHON_INSTALLER% -OutFile %PYTHON_INSTALLER%"
echo Installing Python...
start /wait %PYTHON_INSTALLER% /quiet InstallAllUsers=1 PrependPath=1 TargetDir="%TARGET_DIR%"
echo Cleaning up...
del %PYTHON_INSTALLER%
echo Python %PYTHON_VERSION% has been installed to %TARGET_DIR%.
"%TARGET_DIR%\python.exe" --version
echo Installing required packages...
"%TARGET_DIR%\pip.exe" install --no-warn-script-location -i https://mirrors.cloud.tencent.com/pypi/simple -r requirements.txt
endlocal
pause
@echo off
D:\app\Python\python.exe src\invoices.py
pause
@echo off
D:\app\Python\python.exe src\returns.py
pause
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment