Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
amazon_reports
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
common
amazon_reports
Commits
5b4538c9
Commit
5b4538c9
authored
Oct 31, 2024
by
邱阿朋
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修复报错
parent
acaed936
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
76 additions
and
74 deletions
+76
-74
requirements.txt
requirements.txt
+2
-1
coop.py
src/coop.py
+7
-7
logger.py
src/helper/logger.py
+50
-5
invoices.py
src/invoices.py
+11
-8
logger.py
src/logger/logger.py
+0
-48
returns.py
src/returns.py
+6
-5
No files found.
requirements.txt
View file @
5b4538c9
...
...
@@ -3,3 +3,4 @@ DrissionPage==4.1.0.2
xlrd
==2.0.1
pandas
==2.2.3
openpyxl
==3.1.5
chardet
==5.2.0
\ No newline at end of file
src/coop.py
View file @
5b4538c9
...
...
@@ -3,7 +3,6 @@
import
math
import
os
import
shutil
import
time
from
urllib.parse
import
urlparse
,
parse_qs
import
pandas
as
pd
...
...
@@ -14,6 +13,7 @@ from lxml import etree
from
helper
import
helper
,
excel
,
file
,
domain
,
logger
country
=
None
log
=
logger
.
ConsoleLog
()
page
=
ChromiumPage
()
page
.
set
.
load_mode
.
normal
()
...
...
@@ -70,12 +70,12 @@ def get_report_table_html(invoice_id):
# 获取报表表单内容
report_table_html
=
page
.
ele
(
"#backup-report-table"
)
.
html
if
report_table_html
is
None
or
report_table_html
==
""
:
log
ger
.
logger
()
.
warning
(
"表单内容为空,刷新网页"
)
log
.
warning
(
"表单内容为空,刷新网页"
)
page
.
refresh
()
continue
return
report_table_html
except
ElementNotFoundError
:
log
ger
.
logger
()
.
warning
(
"元素未找到,刷新网页"
)
log
.
warning
(
"元素未找到,刷新网页"
)
page
.
refresh
()
...
...
@@ -125,7 +125,7 @@ def export_item_read_data(invoice_id):
def
main
():
relation_data
=
sku_relations
()
# 获取 ASIN 与 SKU 的对应关系数据
coop_list
=
export_list_read_data
()
# 获取合作数据列表
log
ger
.
logger
()
.
info
(
f
"共计:{len(coop_list)} 条数据"
)
log
.
info
(
f
"共计:{len(coop_list)} 条数据"
)
i
=
0
new_coop_data
=
[]
...
...
@@ -133,13 +133,13 @@ def main():
for
_
,
coop
in
coop_list
.
iterrows
():
i
+=
1
invoice_id
=
coop
.
get
(
"Invoice ID"
)
# 获取发票 ID
log
ger
.
logger
()
.
info
({
"index"
:
i
,
"invoice_id"
:
invoice_id
})
log
.
info
({
"index"
:
i
,
"invoice_id"
:
invoice_id
})
item_coop_data
=
[]
# 根据发票 ID 获取 item 列表
item_list
=
export_item_read_data
(
invoice_id
)
if
item_list
is
None
:
log
ger
.
logger
()
.
warning
(
f
"{invoice_id} 暂无报告信息"
)
log
.
warning
(
f
"{invoice_id} 暂无报告信息"
)
continue
for
_
,
item
in
item_list
.
iterrows
():
...
...
@@ -215,4 +215,4 @@ if __name__ == '__main__':
except
KeyboardInterrupt
:
pass
except
Exception
as
e
:
log
ger
.
logger
()
.
error
(
e
)
log
.
error
(
e
)
src/helper/logger.py
View file @
5b4538c9
# coding: utf-8
import
os
import
logging
from
src.logger.logger
import
ConsoleLog
class
ColoredFormatter
(
logging
.
Formatter
):
def
format
(
self
,
record
):
# 为不同的日志级别定义一些颜色
colors
=
{
'DEBUG'
:
'
\033
[94m'
,
# blue
'INFO'
:
'
\033
[92m'
,
# green
'WARNING'
:
'
\033
[93m'
,
# yellow
'ERROR'
:
'
\033
[91m'
,
# red
'CRITICAL'
:
'
\033
[95m'
# magenta
}
# 从记录中获取原始消息
message
=
super
()
.
format
(
record
)
# 如果日志级别定义了颜色,则添加颜色代码
if
record
.
levelname
in
colors
:
color_code
=
colors
[
record
.
levelname
]
message
=
f
"{color_code}{message}
\033
[0m"
return
message
console_log
=
ConsoleLog
()
class
ConsoleLog
:
_instance
=
None
def
logger
()
->
ConsoleLog
:
return
console_log
def
__new__
(
cls
,
*
args
,
**
kwargs
):
if
not
cls
.
_instance
:
cls
.
_instance
=
super
(
ConsoleLog
,
cls
)
.
__new__
(
cls
)
cls
.
_instance
.
_initialize
()
return
cls
.
_instance
def
_initialize
(
self
):
self
.
logger
=
logging
.
getLogger
(
__name__
)
self
.
logger
.
setLevel
(
logging
.
DEBUG
)
# 使用彩色格式化程序创建控制台处理程序
console_handler
=
logging
.
StreamHandler
()
console_handler
.
setFormatter
(
ColoredFormatter
(
'
%(asctime)
s
%(message)
s'
))
# 将控制台处理程序添加到记录器
self
.
logger
.
addHandler
(
console_handler
)
def
info
(
self
,
arg
):
self
.
logger
.
info
(
arg
)
def
debug
(
self
,
arg
):
self
.
logger
.
debug
(
arg
)
def
warning
(
self
,
arg
):
self
.
logger
.
warning
(
arg
)
def
error
(
self
,
arg
):
self
.
logger
.
error
(
arg
)
def
critical
(
self
,
arg
):
self
.
logger
.
critical
(
arg
)
\ No newline at end of file
src/invoices.py
View file @
5b4538c9
...
...
@@ -2,7 +2,6 @@
# 回款明细
import
os
import
re
import
time
import
urllib.parse
import
warnings
...
...
@@ -11,10 +10,12 @@ from DrissionPage import ChromiumPage
from
DrissionPage.errors
import
ElementNotFoundError
from
lxml
import
etree
from
helper
import
helper
,
excel
,
file
,
domain
,
logger
from
helper
import
helper
,
excel
,
file
,
domain
,
logger
country
=
None
log
=
logger
.
ConsoleLog
()
page
=
ChromiumPage
()
page
.
set
.
load_mode
.
normal
()
page
.
set
.
when_download_file_exists
(
'overwrite'
)
...
...
@@ -28,11 +29,13 @@ page.set.download_path(download_path)
# 忽略 openpyxl 样式警告
warnings
.
filterwarnings
(
"ignore"
,
category
=
UserWarning
,
module
=
"openpyxl"
)
def
page_get
(
url
):
host
=
domain
.
switch_domain
(
country
)
full_url
=
host
+
url
page
.
get
(
full_url
,
timeout
=
3
)
def
export_list_read_data
():
new_file_name
=
'new_Payments.xlsx'
if
os
.
path
.
isfile
(
new_file_name
):
...
...
@@ -97,7 +100,7 @@ def export_details_read_data(invoice_number):
excel
.
remove_last_comma
(
file_name
)
break
except
ElementNotFoundError
:
log
ger
.
logger
()
.
warning
(
"导出按钮不存在刷新网页"
)
log
.
warning
(
"导出按钮不存在刷新网页"
)
page
.
refresh
()
return
pd
.
read_csv
(
file_name
)
...
...
@@ -186,13 +189,13 @@ def click_get_price_data():
while
True
:
try
:
page
.
ele
(
"#pd"
,
timeout
=
5
)
.
click
()
log
ger
.
logger
()
.
debug
(
"等待争议数据加载,5秒后获取表单数据"
)
log
.
debug
(
"等待争议数据加载,5秒后获取表单数据"
)
page
.
wait
(
5
)
table_html
=
page
.
ele
(
"#priceDiscrepancyWithDMSGridForm"
,
timeout
=
5
)
.
html
price_data
=
price_extract_data
(
table_html
)
return
price_data
except
ElementNotFoundError
:
log
ger
.
logger
()
.
warning
(
"未获取到表数据"
)
log
.
warning
(
"未获取到表数据"
)
break
return
[]
...
...
@@ -248,7 +251,7 @@ def main():
list_data
=
export_list_read_data
()
excel
.
save_xls
(
list_data
,
"回款数据.xlsx"
,
"Remittance payments"
)
log
ger
.
logger
()
.
info
(
f
"共计:{len(list_data)} 订单"
)
log
.
info
(
f
"共计:{len(list_data)} 订单"
)
all_normal_pay_data
=
[]
all_price_pay_data
=
[]
...
...
@@ -259,7 +262,7 @@ def main():
# 获取当前订单的Payee和优惠比例
vendor_payment_terms
=
get_po_code
(
i
,
invoice_number
[:
8
])
log
ger
.
logger
()
.
info
(
vendor_payment_terms
)
log
.
info
(
vendor_payment_terms
)
vendor
=
vendor_payment_terms
[
'vendor'
]
deduction_points
=
int
(
vendor_payment_terms
[
'payment_terms'
])
...
...
@@ -321,4 +324,4 @@ if __name__ == '__main__':
except
KeyboardInterrupt
:
pass
except
Exception
as
e
:
log
ger
.
logger
()
.
error
(
e
)
log
.
error
(
e
)
src/logger/logger.py
deleted
100644 → 0
View file @
acaed936
# coding: utf-8
import
logging
class
ColoredFormatter
(
logging
.
Formatter
):
def
format
(
self
,
record
):
# 为不同的日志级别定义一些颜色
colors
=
{
'DEBUG'
:
'
\033
[94m'
,
# blue
'INFO'
:
'
\033
[92m'
,
# green
'WARNING'
:
'
\033
[93m'
,
# yellow
'ERROR'
:
'
\033
[91m'
,
# red
'CRITICAL'
:
'
\033
[95m'
# magenta
}
# 从记录中获取原始消息
message
=
super
()
.
format
(
record
)
# 如果日志级别定义了颜色,则添加颜色代码
if
record
.
levelname
in
colors
:
color_code
=
colors
[
record
.
levelname
]
message
=
f
"{color_code}{message}
\033
[0m"
return
message
class
ConsoleLog
:
def
__init__
(
self
):
self
.
logger
=
logging
.
getLogger
(
__name__
)
self
.
logger
.
setLevel
(
logging
.
DEBUG
)
# 使用彩色格式化程序创建控制台处理程序
console_handler
=
logging
.
StreamHandler
()
console_handler
.
setFormatter
(
ColoredFormatter
(
'
%(asctime)
s
%(message)
s'
))
# 将控制台处理程序添加到记录器
self
.
logger
.
addHandler
(
console_handler
)
def
info
(
self
,
arg
):
self
.
logger
.
info
(
arg
)
def
debug
(
self
,
arg
):
self
.
logger
.
debug
(
arg
)
def
warning
(
self
,
arg
):
self
.
logger
.
warning
(
arg
)
def
error
(
self
,
arg
):
self
.
logger
.
error
(
arg
)
def
critical
(
self
,
arg
):
self
.
logger
.
critical
(
arg
)
\ No newline at end of file
src/returns.py
View file @
5b4538c9
...
...
@@ -6,9 +6,10 @@ import pandas as pd
from
DrissionPage
import
ChromiumPage
from
DrissionPage.errors
import
ElementNotFoundError
from
helper
import
helper
,
excel
,
file
,
domain
,
logger
from
helper
import
helper
,
excel
,
file
,
domain
,
logger
country
=
None
log
=
logger
.
ConsoleLog
()
page
=
ChromiumPage
()
page
.
set
.
load_mode
.
normal
()
...
...
@@ -67,7 +68,7 @@ def export_item_read_data(return_id):
file
.
wait_for_downloads
(
file_name
)
break
except
ElementNotFoundError
:
log
ger
.
logger
()
.
warning
(
"元素未找到,刷新网页"
)
log
.
warning
(
"元素未找到,刷新网页"
)
page
.
refresh
()
# 读取回退商品详情
...
...
@@ -80,14 +81,14 @@ def main():
# 下载并读取list数据
list_data
=
export_list_read_data
()
log
ger
.
logger
()
.
info
(
f
"共计:{len(list_data)} 订单"
)
log
.
info
(
f
"共计:{len(list_data)} 订单"
)
new_list_data
=
[]
i
=
0
for
_
,
data
in
list_data
.
iterrows
():
i
+=
1
return_id
=
data
.
get
(
'Return ID'
)
log
ger
.
logger
()
.
info
({
"index"
:
i
,
"return_id"
:
return_id
})
log
.
info
({
"index"
:
i
,
"return_id"
:
return_id
})
# 下载退货详情表格读取数据
item_data
=
export_item_read_data
(
return_id
)
...
...
@@ -125,4 +126,4 @@ if __name__ == '__main__':
except
KeyboardInterrupt
:
pass
except
Exception
as
e
:
log
ger
.
logger
()
.
error
(
e
)
log
.
error
(
e
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment