Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wfs_export
Overview
Overview
Details
Activity
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
yexing
wfs_export
Commits
d7184b29
Commit
d7184b29
authored
Mar 17, 2025
by
yexing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[yx] update
parent
b8205e2d
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
138 additions
and
174 deletions
+138
-174
plugin/.version
+2
-2
plugin/dist.crx
+0
-0
plugin/dist/icon.png
+0
-0
plugin/dist/js/background.js
+40
-51
plugin/dist/js/main.js
+23
-30
plugin/dist/js/popup.js
+3
-3
plugin/dist/manifest.json
+2
-2
plugin/src/background.js
+42
-53
plugin/src/base.js
+15
-6
plugin/src/main.js
+8
-24
plugin/src/popup.js
+3
-3
No files found.
plugin/.version
View file @
d7184b29
2.0.2
\ No newline at end of file
2.2.4
\ No newline at end of file
plugin/dist.crx
View file @
d7184b29
No preview for this file type
plugin/dist/icon.png
View file @
d7184b29
1.48 KB
|
W:
|
H:
1.33 KB
|
W:
|
H:
2-up
Swipe
Onion skin
plugin/dist/js/background.js
View file @
d7184b29
...
...
@@ -19642,30 +19642,39 @@
chrome
.
tabs
.
onRemoved
.
addListener
((
tabId
)
=>
{
tabCache
.
delete
(
tabId
);
});
async
function
sopLink
(
data
)
{
let
{
url
,
fn
}
=
data
;
console
.
log
(
`GET
${
url
}
`
);
let
response
=
await
fetch
(
url
);
console
.
log
(
response
);
let
blob
=
await
response
.
blob
();
const
csv
=
xlsx2csv
(
await
blob
.
arrayBuffer
(),
{
type
:
"array"
});
if
(
!
csv
.
includes
(
"No data found"
))
{
fn
=
fn
.
replace
(
/
\.\w
+$/g
,
".csv"
);
const
zip
=
await
createZip
([
csv
],
[
fn
]);
fn
=
fn
.
replace
(
/
\.\w
+$/g
,
".zip"
);
const
form
=
new
FormData
();
form
.
append
(
"zipfile"
,
zip
,
fn
);
await
uploadFile
(
fn
,
form
);
// downloadFile(fn, zip);
}
}
chrome
.
runtime
.
onMessage
.
addListener
((
msg
,
sender
,
sendResponse
)
=>
{
(
async
()
=>
{
if
(
msg
.
type
===
"run"
)
{
startTask
();
sendTabMsg
(
msg
,
sendResponse
);
}
else
if
(
msg
.
type
===
"uploadLink"
)
{
}
else
if
(
msg
.
type
===
"resetTaskNum"
)
{
taskNum
=
0
;
logs
=
[];
clearInterval
(
taskInterval
);
sendResponse
();
}
else
if
(
msg
.
type
===
"addLog"
)
{
logs
.
push
(
msg
.
data
);
sendResponse
();
}
else
if
(
msg
.
type
===
"sopLink"
)
{
try
{
let
{
url
,
fn
}
=
msg
.
data
;
console
.
log
(
`GET
${
url
}
`
);
let
response
=
await
fetch
(
url
);
console
.
log
(
response
);
let
blob
=
await
response
.
blob
();
const
csv
=
xlsx2csv
(
await
blob
.
arrayBuffer
(),
{
type
:
"array"
});
if
(
!
csv
.
includes
(
"No data found"
))
{
fn
=
fn
.
replace
(
/
\.\w
+$/g
,
".csv"
);
const
zip
=
await
createZip
([
csv
],
[
fn
]);
fn
=
fn
.
replace
(
/
\.\w
+$/g
,
".zip"
);
const
form
=
new
FormData
();
form
.
append
(
"zipfile"
,
zip
,
fn
);
await
uploadFile
(
fn
,
form
);
// downloadFile(fn, zip);
}
const
{
taskCount
=
0
}
=
await
chrome
.
storage
.
local
.
get
([
"taskCount"
]);
chrome
.
storage
.
local
.
set
({
taskCount
:
taskCount
+
1
});
await
sopLink
(
msg
.
data
);
sendResponse
({
status
:
"ok"
});
}
catch
(
err
)
{
sendResponse
({
status
:
"error"
,
error
:
err
.
message
});
...
...
@@ -19675,46 +19684,26 @@
return
true
;
});
let
taskInterval
=
null
;
let
taskInterval
=
null
,
taskNum
=
0
,
logs
=
[]
;
function
startTask
()
{
// chrome.storage.local.get(['isRunning', 'logs', 'taskCount', 'taskLen']).then(console.log);
// chrome.storage.local.set({ isRunning: true, logs: [], taskLen: 0, taskCount: 0 });
chrome
.
storage
.
local
.
set
({
isRunning
:
true
,
logs
:
[]
});
taskNum
++
;
if
(
taskInterval
)
return
;
chrome
.
storage
.
local
.
set
({
isRunning
:
true
});
taskInterval
=
setInterval
(()
=>
{
// 推送更新
c
hrome
.
storage
.
local
.
get
([
'taskNum'
,
'logs'
],
({
logs
=
[],
taskNum
=
0
})
=>
{
const
ackLen
=
logs
.
filter
(
x
=>
x
.
includes
(
"完成"
)).
length
;
if
(
ackLen
===
taskNum
)
{
clearInterval
(
taskInterval
);
chrome
.
storage
.
local
.
set
({
isRunning
:
false
});
}
chrome
.
runtime
.
sendMessage
({
type
:
'progress'
,
logs
});
c
onst
ackLen
=
logs
.
filter
(
x
=>
x
.
message
.
includes
(
"完成"
)).
length
;
if
(
ackLen
===
taskNum
)
{
taskNum
=
0
;
clearInterval
(
taskInterval
);
chrome
.
storage
.
local
.
set
({
isRunning
:
false
});
logs
.
push
(
"已全部完成"
);
}
chrome
.
runtime
.
sendMessage
({
type
:
'progress'
,
logs
});
// chrome.storage.local.get(['isRunning', 'logs', 'taskCount', 'taskLen'], (
// { isRunning = true, logs = [], taskCount = 0, taskLen = 0 }
// ) => {
// const progress = Math.ceil(taskCount / (taskLen || 1) * 100);
// const logEntry = {
// time: new Date().toLocaleTimeString(),
// message: `进度更新: ${progress}%`
// };
// let newLogs = [...logs, logEntry];
// newLogs = newLogs.slice(Math.max(newLogs.length - 30, 0)); // 限制日志数量
// chrome.storage.local.set({ logs: newLogs });
// // 推送更新
// chrome.runtime.sendMessage({
// type: 'progress',
// logs: newLogs
// });
// if (progress >= 100 || !isRunning) {
// clearInterval(taskInterval);
// chrome.storage.local.set({ isRunning: false });
// }
// });
},
1000
);
}
...
...
plugin/dist/js/main.js
View file @
d7184b29
...
...
@@ -197,11 +197,20 @@
}
async
send
()
{
const
fns
=
[];
const
blobs
=
this
.
tasks
.
map
(
async
(
task
,
idx
)
=>
{
fns
.
push
(
task
.
getFileName
(
`
${
this
.
len
}
-
${
idx
+
1
}
`
));
return
await
task
.
send
(
true
);
});
return
createZip
(
blobs
,
fns
);
const
blobs
=
(
await
Promise
.
all
(
this
.
tasks
.
map
((
task
,
idx
)
=>
{
fns
.
push
(
task
.
getFileName
(
`
${
this
.
len
}
-
${
idx
+
1
}
`
));
return
task
.
send
(
true
);
})
)
).
filter
(
x
=>
x
!==
false
&&
x
!==
true
);
if
(
blobs
.
length
>
0
)
{
return
createZip
(
blobs
,
fns
);
}
else
{
return
false
;
}
}
}
class
Task
{
...
...
@@ -378,7 +387,7 @@
// 跨域
const
fn
=
this
.
getFileName
();
response
=
await
chrome
.
runtime
.
sendMessage
({
type
:
"
upload
Link"
,
type
:
"
sop
Link"
,
data
:
{
url
,
fn
},
});
console
.
log
(
response
);
...
...
@@ -712,39 +721,25 @@
'//*[@id="header"]/div[1]/div[1]/div/div[3]/a'
).
click
();
}
}
// 存在数据竞态问题
// const addTaskCount = async () => {
// const { taskCount = 0 } = await chrome.storage.local.get(["taskCount"]);
// chrome.storage.local.set({ taskCount: taskCount + 1 });
// }
const
addLog
=
async
(
message
)
=>
{
}
const
addLog
=
(
message
)
=>
{
const
logEntry
=
{
time
:
new
Date
().
toLocaleTimeString
(),
message
};
const
logs
=
await
chrome
.
storage
.
local
.
get
([
"logs"
]);
let
newLogs
=
[...
logs
,
logEntry
];
newLogs
=
newLogs
.
slice
(
Math
.
max
(
newLogs
.
length
-
30
,
0
));
// 限制日志数量
chrome
.
storage
.
local
.
set
({
logs
:
newLogs
});
chrome
.
runtime
.
sendMessage
({
type
:
"addLog"
,
data
:
logEntry
});
};
async
function
run
(
options
)
{
const
name
=
Object
.
values
(
TABLE
).
find
(
x
=>
x
.
uri
===
options
.
uri
).
name
;
let
tasks
=
await
createTasks
(
options
.
uri
,
options
.
period
);
tasks
=
options
.
sn
?
[
tasks
.
at
(
options
.
sn
)]
:
tasks
;
let
moment
=
0
,
idx
=
0
,
len
=
tasks
.
length
;
// const { taskLen = 0 } = await chrome.storage.local.get([`taskLen`]);
// chrome.storage.local.set({ taskLen: taskLen + len });
const
{
taskNum
=
0
}
=
await
chrome
.
storage
.
local
.
get
([
`taskNum`
]);
chrome
.
storage
.
local
.
set
({
taskNum
:
taskNum
+
1
});
let
moment
=
3000
,
idx
=
0
,
len
=
tasks
.
length
;
for
(
const
task
of
tasks
)
{
const
pf
=
`
${
++
idx
+
1
}
/
${
len
}
`
;
a
wait
a
ddLog
(
`
${
name
}
运行中
${
pf
}
`
);
const
pf
=
`
${
++
idx
}
/
${
len
}
`
;
addLog
(
`
${
name
}
运行中
${
pf
}
`
);
console
.
log
(
`
${
pf
}
start:
${
JSON
.
stringify
(
task
)}
`
);
let
data
=
await
task
.
send
();
if
(
data
===
false
)
return
;
if
(
data
===
true
)
{
// await addTaskCount();
return
;
if
(
data
===
true
||
data
===
false
)
{
continue
;
}
let
fn
=
task
.
getFileName
();
...
...
@@ -761,12 +756,10 @@
uploadFile
(
fn
,
form
);
// downloadFile(fn, data);
}
// await addTaskCount();
console
.
log
(
`
${
pf
}
end:
${
fn
}
`
);
await
sleep
(
moment
);
moment
+=
3000
;
// 3s
}
a
wait
addLog
(
`插件
运行完成`
);
a
ddLog
(
`
${
name
}
运行完成`
);
}
chrome
.
runtime
.
onMessage
.
addListener
((
msg
,
sender
,
sendResponse
)
=>
{
(
async
()
=>
{
...
...
plugin/dist/js/popup.js
View file @
d7184b29
...
...
@@ -260,17 +260,17 @@
document
.
querySelector
(
'.modal'
).
style
.
display
=
'none'
;
});
const
btn
=
document
.
querySelector
(
".confirm"
);
chrome
.
storage
.
local
.
get
([
'isRunning'
,
'logs'
],
({
isRunning
,
logs
=
[]
})
=>
{
chrome
.
storage
.
local
.
get
([
'isRunning'
],
({
isRunning
=
false
})
=>
{
if
(
isRunning
)
{
showModal
();
disableButton
(
btn
);
}
else
{
enableButton
(
btn
);
}
renderLogs
(
logs
);
});
document
.
querySelector
(
'.cancel'
).
addEventListener
(
'click'
,
()
=>
{
chrome
.
storage
.
local
.
set
({
isRunning
:
false
,
logs
:
[],
taskCount
:
0
,
taskLen
:
0
});
chrome
.
storage
.
local
.
set
({
isRunning
:
false
});
chrome
.
runtime
.
sendMessage
({
type
:
"resetTaskNum"
});
enableButton
(
btn
);
});
chrome
.
runtime
.
onMessage
.
addListener
((
msg
)
=>
{
...
...
plugin/dist/manifest.json
View file @
d7184b29
{
"name"
:
"WalmartExports"
,
"description"
:
"导出沃尔玛报表"
,
"version"
:
"2.0.2"
,
"manifest_version"
:
3
,
"background"
:{
"service_worker"
:
"./js/background.js"
},
"permissions"
:[
"tabs"
,
"activeTab"
,
"scripting"
,
"notifications"
,
"storage"
,
"alarms"
],
"action"
:{
"default_title"
:
"WalmartExports"
,
"default_popup"
:
"popup.html"
,
"default_icon"
:{
"16"
:
"icon.png"
,
"32"
:
"icon.png"
,
"48"
:
"icon.png"
,
"128"
:
"icon.png"
}},
"icons"
:{
"16"
:
"icon.png"
,
"32"
:
"icon.png"
,
"48"
:
"icon.png"
,
"128"
:
"icon.png"
},
"web_accessible_resources"
:[{
"resources"
:[
"src/main.js"
],
"matches"
:[
"<all_urls>"
]}],
"host_permissions"
:[
"https://seller.walmart.com/*"
,
"https://advertising.walmart.com/*"
,
"https://login.account.wal-mart.com/*"
,
"https://marketplace.walmartapis.com/*"
,
"https://walmart.meinuosha.com/*"
],
"content_scripts"
:[{
"matches"
:[
"https://seller.walmart.com/*"
,
"https://advertising.walmart.com/*"
,
"https://login.account.wal-mart.com/*"
,
"https://marketplace.walmartapis.com/*"
,
"https://walmart.meinuosha.com/*"
],
"js"
:[
"./js/main.js"
]}]}
\ No newline at end of file
{
"name"
:
"WalmartExports"
,
"description"
:
"导出沃尔玛报表"
,
"version"
:
"2.2.4"
,
"manifest_version"
:
3
,
"background"
:{
"service_worker"
:
"./js/background.js"
},
"permissions"
:[
"tabs"
,
"activeTab"
,
"scripting"
,
"notifications"
,
"storage"
,
"alarms"
],
"action"
:{
"default_title"
:
"WalmartExports"
,
"default_popup"
:
"popup.html"
,
"default_icon"
:{
"16"
:
"icon.png"
,
"32"
:
"icon.png"
,
"48"
:
"icon.png"
,
"128"
:
"icon.png"
}},
"icons"
:{
"16"
:
"icon.png"
,
"32"
:
"icon.png"
,
"48"
:
"icon.png"
,
"128"
:
"icon.png"
},
"web_accessible_resources"
:[{
"resources"
:[
"src/main.js"
],
"matches"
:[
"<all_urls>"
]}],
"host_permissions"
:[
"https://seller.walmart.com/*"
,
"https://advertising.walmart.com/*"
,
"https://login.account.wal-mart.com/*"
,
"https://marketplace.walmartapis.com/*"
,
"https://walmart.meinuosha.com/*"
],
"content_scripts"
:[{
"matches"
:[
"https://seller.walmart.com/*"
,
"https://advertising.walmart.com/*"
,
"https://login.account.wal-mart.com/*"
,
"https://marketplace.walmartapis.com/*"
,
"https://walmart.meinuosha.com/*"
],
"js"
:[
"./js/main.js"
]}]}
\ No newline at end of file
plugin/src/background.js
View file @
d7184b29
...
...
@@ -40,30 +40,39 @@ chrome.tabs.onUpdated.addListener(async (tabId, changeInfo, tab) => {
chrome
.
tabs
.
onRemoved
.
addListener
((
tabId
)
=>
{
tabCache
.
delete
(
tabId
);
});
async
function
sopLink
(
data
)
{
let
{
url
,
fn
}
=
data
;
console
.
log
(
`GET
${
url
}
`
);
let
response
=
await
fetch
(
url
);
console
.
log
(
response
);
let
blob
=
await
response
.
blob
();
const
csv
=
xlsx2csv
(
await
blob
.
arrayBuffer
(),
{
type
:
"array"
});
if
(
!
csv
.
includes
(
"No data found"
))
{
fn
=
fn
.
replace
(
/
\.\w
+$/g
,
".csv"
);
const
zip
=
await
createZip
([
csv
],
[
fn
]);
fn
=
fn
.
replace
(
/
\.\w
+$/g
,
".zip"
);
const
form
=
new
FormData
();
form
.
append
(
"zipfile"
,
zip
,
fn
);
await
uploadFile
(
fn
,
form
);
// downloadFile(fn, zip);
}
}
chrome
.
runtime
.
onMessage
.
addListener
((
msg
,
sender
,
sendResponse
)
=>
{
(
async
()
=>
{
if
(
msg
.
type
===
"run"
)
{
startTask
();
sendTabMsg
(
msg
,
sendResponse
);
}
else
if
(
msg
.
type
===
"uploadLink"
)
{
}
else
if
(
msg
.
type
===
"resetTaskNum"
)
{
taskNum
=
0
;
logs
=
[];
clearInterval
(
taskInterval
);
sendResponse
();
}
else
if
(
msg
.
type
===
"addLog"
)
{
logs
.
push
(
msg
.
data
);
sendResponse
();
}
else
if
(
msg
.
type
===
"sopLink"
)
{
try
{
let
{
url
,
fn
}
=
msg
.
data
;
console
.
log
(
`GET
${
url
}
`
);
let
response
=
await
fetch
(
url
);
console
.
log
(
response
);
let
blob
=
await
response
.
blob
();
const
csv
=
xlsx2csv
(
await
blob
.
arrayBuffer
(),
{
type
:
"array"
});
if
(
!
csv
.
includes
(
"No data found"
))
{
fn
=
fn
.
replace
(
/
\.\w
+$/g
,
".csv"
);
const
zip
=
await
createZip
([
csv
],
[
fn
]);
fn
=
fn
.
replace
(
/
\.\w
+$/g
,
".zip"
);
const
form
=
new
FormData
();
form
.
append
(
"zipfile"
,
zip
,
fn
);
await
uploadFile
(
fn
,
form
);
// downloadFile(fn, zip);
}
const
{
taskCount
=
0
}
=
await
chrome
.
storage
.
local
.
get
([
"taskCount"
]);
chrome
.
storage
.
local
.
set
({
taskCount
:
taskCount
+
1
});
await
sopLink
(
msg
.
data
);
sendResponse
({
status
:
"ok"
});
}
catch
(
err
)
{
sendResponse
({
status
:
"error"
,
error
:
err
.
message
});
...
...
@@ -73,46 +82,26 @@ chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => {
return
true
;
});
let
taskInterval
=
null
;
let
taskInterval
=
null
,
taskNum
=
0
,
logs
=
[]
;
function
startTask
()
{
// chrome.storage.local.get(['isRunning', 'logs', 'taskCount', 'taskLen']).then(console.log);
// chrome.storage.local.set({ isRunning: true, logs: [], taskLen: 0, taskCount: 0 });
chrome
.
storage
.
local
.
set
({
isRunning
:
true
,
logs
:
[]
});
// chrome.storage.local.get(['isRunning', 'logs']).then(console.log);
// chrome.storage.local.set({ isRunning: true, logs: [] });
taskNum
++
;
if
(
taskInterval
)
return
;
chrome
.
storage
.
local
.
set
({
isRunning
:
true
});
taskInterval
=
setInterval
(()
=>
{
// 推送更新
c
hrome
.
storage
.
local
.
get
([
'taskNum'
,
'logs'
],
({
logs
=
[],
taskNum
=
0
})
=>
{
const
ackLen
=
logs
.
filter
(
x
=>
x
.
includes
(
"完成"
)).
length
;
if
(
ackLen
===
taskNum
)
{
clearInterval
(
taskInterval
);
chrome
.
storage
.
local
.
set
({
isRunning
:
false
});
}
chrome
.
runtime
.
sendMessage
({
type
:
'progress'
,
logs
});
c
onst
ackLen
=
logs
.
filter
(
x
=>
x
.
message
.
includes
(
"完成"
)).
length
;
if
(
ackLen
===
taskNum
)
{
taskNum
=
0
;
clearInterval
(
taskInterval
);
chrome
.
storage
.
local
.
set
({
isRunning
:
false
});
logs
.
push
(
"已全部完成"
);
}
chrome
.
runtime
.
sendMessage
({
type
:
'progress'
,
logs
});
// chrome.storage.local.get(['isRunning', 'logs', 'taskCount', 'taskLen'], (
// { isRunning = true, logs = [], taskCount = 0, taskLen = 0 }
// ) => {
// const progress = Math.ceil(taskCount / (taskLen || 1) * 100);
// const logEntry = {
// time: new Date().toLocaleTimeString(),
// message: `进度更新: ${progress}%`
// };
// let newLogs = [...logs, logEntry];
// newLogs = newLogs.slice(Math.max(newLogs.length - 30, 0)); // 限制日志数量
// chrome.storage.local.set({ logs: newLogs });
// // 推送更新
// chrome.runtime.sendMessage({
// type: 'progress',
// logs: newLogs
// });
// if (progress >= 100 || !isRunning) {
// clearInterval(taskInterval);
// chrome.storage.local.set({ isRunning: false });
// }
// });
},
1000
);
}
...
...
plugin/src/base.js
View file @
d7184b29
...
...
@@ -13,11 +13,20 @@ class TaskGroup {
}
async
send
()
{
const
fns
=
[];
const
blobs
=
this
.
tasks
.
map
(
async
(
task
,
idx
)
=>
{
fns
.
push
(
task
.
getFileName
(
`
${
this
.
len
}
-
${
idx
+
1
}
`
));
return
await
task
.
send
(
true
);
});
return
createZip
(
blobs
,
fns
);
const
blobs
=
(
await
Promise
.
all
(
this
.
tasks
.
map
((
task
,
idx
)
=>
{
fns
.
push
(
task
.
getFileName
(
`
${
this
.
len
}
-
${
idx
+
1
}
`
));
return
task
.
send
(
true
);
})
)
).
filter
(
x
=>
x
!==
false
&&
x
!==
true
);
if
(
blobs
.
length
>
0
)
{
return
createZip
(
blobs
,
fns
);
}
else
{
return
false
;
}
}
}
class
Task
{
...
...
@@ -194,7 +203,7 @@ const rrCallback = async function (response) {
// 跨域
const
fn
=
this
.
getFileName
();
response
=
await
chrome
.
runtime
.
sendMessage
({
type
:
"
upload
Link"
,
type
:
"
sop
Link"
,
data
:
{
url
,
fn
},
});
console
.
log
(
response
);
...
...
plugin/src/main.js
View file @
d7184b29
...
...
@@ -13,39 +13,25 @@ async function webJump() {
).
click
();
}
};
// 存在数据竞态问题
// const addTaskCount = async () => {
// const { taskCount = 0 } = await chrome.storage.local.get(["taskCount"]);
// chrome.storage.local.set({ taskCount: taskCount + 1 });
// }
const
addLog
=
async
(
message
)
=>
{
const
addLog
=
(
message
)
=>
{
const
logEntry
=
{
time
:
new
Date
().
toLocaleTimeString
(),
message
};
const
logs
=
await
chrome
.
storage
.
local
.
get
([
"logs"
]);
let
newLogs
=
[...
logs
,
logEntry
];
newLogs
=
newLogs
.
slice
(
Math
.
max
(
newLogs
.
length
-
30
,
0
));
// 限制日志数量
chrome
.
storage
.
local
.
set
({
logs
:
newLogs
});
chrome
.
runtime
.
sendMessage
({
type
:
"addLog"
,
data
:
logEntry
});
}
async
function
run
(
options
)
{
const
name
=
Object
.
values
(
TABLE
).
find
(
x
=>
x
.
uri
===
options
.
uri
).
name
;
let
tasks
=
await
createTasks
(
options
.
uri
,
options
.
period
);
tasks
=
options
.
sn
?
[
tasks
.
at
(
options
.
sn
)]
:
tasks
;
let
moment
=
0
,
idx
=
0
,
len
=
tasks
.
length
;
// const { taskLen = 0 } = await chrome.storage.local.get([`taskLen`]);
// chrome.storage.local.set({ taskLen: taskLen + len });
const
{
taskNum
=
0
}
=
await
chrome
.
storage
.
local
.
get
([
`taskNum`
]);
chrome
.
storage
.
local
.
set
({
taskNum
:
taskNum
+
1
});
let
moment
=
3000
,
idx
=
0
,
len
=
tasks
.
length
;
for
(
const
task
of
tasks
)
{
const
pf
=
`
${
++
idx
+
1
}
/
${
len
}
`
;
a
wait
a
ddLog
(
`
${
name
}
运行中
${
pf
}
`
);
const
pf
=
`
${
++
idx
}
/
${
len
}
`
;
addLog
(
`
${
name
}
运行中
${
pf
}
`
);
console
.
log
(
`
${
pf
}
start:
${
JSON
.
stringify
(
task
)}
`
);
let
data
=
await
task
.
send
();
if
(
data
===
false
)
return
;
if
(
data
===
true
)
{
// await addTaskCount();
return
;
if
(
data
===
true
||
data
===
false
)
{
continue
;
}
let
fn
=
task
.
getFileName
();
...
...
@@ -62,12 +48,10 @@ async function run(options) {
uploadFile
(
fn
,
form
);
// downloadFile(fn, data);
}
// await addTaskCount();
console
.
log
(
`
${
pf
}
end:
${
fn
}
`
);
await
sleep
(
moment
);
moment
+=
3000
;
// 3s
}
a
wait
addLog
(
`插件
运行完成`
);
a
ddLog
(
`
${
name
}
运行完成`
);
}
chrome
.
runtime
.
onMessage
.
addListener
((
msg
,
sender
,
sendResponse
)
=>
{
(
async
()
=>
{
...
...
plugin/src/popup.js
View file @
d7184b29
...
...
@@ -56,17 +56,17 @@ window.onload = function () {
document
.
querySelector
(
'.modal'
).
style
.
display
=
'none'
;
});
const
btn
=
document
.
querySelector
(
".confirm"
);
chrome
.
storage
.
local
.
get
([
'isRunning'
,
'logs'
],
({
isRunning
,
logs
=
[]
})
=>
{
chrome
.
storage
.
local
.
get
([
'isRunning'
],
({
isRunning
=
false
})
=>
{
if
(
isRunning
)
{
showModal
();
disableButton
(
btn
);
}
else
{
enableButton
(
btn
);
}
renderLogs
(
logs
);
});
document
.
querySelector
(
'.cancel'
).
addEventListener
(
'click'
,
()
=>
{
chrome
.
storage
.
local
.
set
({
isRunning
:
false
,
logs
:
[],
taskCount
:
0
,
taskLen
:
0
});
chrome
.
storage
.
local
.
set
({
isRunning
:
false
});
chrome
.
runtime
.
sendMessage
({
type
:
"resetTaskNum"
});
enableButton
(
btn
);
});
chrome
.
runtime
.
onMessage
.
addListener
((
msg
)
=>
{
...
...
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