diff --git a/index.html b/index.html
index 0325943..9ac4daf 100644
--- a/index.html
+++ b/index.html
@@ -1,5 +1,5 @@
-
+
@@ -33,6 +33,8 @@
+
+ 自动语音分析
diff --git a/main.js b/main.js
index 94303e4..9430b99 100644
--- a/main.js
+++ b/main.js
@@ -19,8 +19,8 @@ const createWindow = () => {
win.loadFile('index.html').then((r) => {
})
- ipcMain.on('start-book', (event, startNumber, endNumber, selectedStore) => {
- startBook(startNumber, endNumber, selectedStore)
+ ipcMain.on('start-book', (event, startNumber, endNumber, selectedStore, audioAnalyse) => {
+ startBook(startNumber, endNumber, selectedStore, audioAnalyse)
})
ipcMain.handle('scan-devices', scanDevices)
// win.webContents.openDevTools();
@@ -37,15 +37,16 @@ app.on('window-all-closed', () => {
if (process.platform !== 'darwin') app.quit()
})
-function startBook(startNumber, endNumber, selectedStore) {
+function startBook(startNumber, endNumber, selectedStore, audioAnalyse) {
console.log("startNumber: " + startNumber);
console.log("endNumber: " + endNumber);
console.log("selectedStore: " + selectedStore);
+ console.log("audioAnalyse: " + audioAnalyse);
//load config.ini file
let config = loadIniFile.sync(configFilePath);
console.log(config);
let contactExcelFilePath = config.DEFAULT.contact_list_file;
- startBookWithNumbers(startNumber, endNumber, selectedStore, contactExcelFilePath).then(() => {
+ startBookWithNumbers(startNumber, endNumber, selectedStore, contactExcelFilePath, audioAnalyse).then(() => {
console.log("stop")
})
}
diff --git a/preload.js b/preload.js
index 23f5dd9..f23383e 100644
--- a/preload.js
+++ b/preload.js
@@ -1,6 +1,6 @@
const {contextBridge, ipcRenderer} = require('electron')
contextBridge.exposeInMainWorld('appointment', {
- startBook: (startNumber, endNumber, selectedStore) => ipcRenderer.send('start-book', startNumber, endNumber, selectedStore),
+ startBook: (startNumber, endNumber, selectedStore, audioAnalyse) => ipcRenderer.send('start-book', startNumber, endNumber, selectedStore, audioAnalyse),
scanDevices: () => ipcRenderer.invoke('scan-devices')
})
\ No newline at end of file
diff --git a/renderer.js b/renderer.js
index d1a7cdb..32da918 100644
--- a/renderer.js
+++ b/renderer.js
@@ -16,7 +16,8 @@ window.addEventListener('load', () => {
}
})
document.getElementById("start_book_btn").addEventListener('click', () => {
- window.appointment.startBook(startNumber, endNumber, selectedStore)
+ let audioAnalyse = document.getElementById("audio_analyse").checked;
+ window.appointment.startBook(startNumber, endNumber, selectedStore, audioAnalyse);
})
document.getElementById("store_selector").addEventListener('change', (event) => {
selectedStore = event.target.value
diff --git a/src/appointment.js b/src/appointment.js
index eff562e..7c8d62b 100644
--- a/src/appointment.js
+++ b/src/appointment.js
@@ -35,11 +35,11 @@ async function needToBook(contact, mongoManager) {
return toReturn
}
-async function startBook(contactPojo, device, selectedStore) {
+async function startBook(contactPojo, device, selectedStore, audioAnalyse) {
console.log(`型号: ${device.model()}`);
console.log(`序列号: ${device.serial()}`);
if (await needToBook(contactPojo, mongoManager)) {
- let commandor = new CommandorPage(contactPojo, device, mongoManager, selectedStore);
+ let commandor = new CommandorPage(contactPojo, device, mongoManager, selectedStore, audioAnalyse);
//read contacts form excel
return await commandor.loadPage();
} else {
@@ -47,18 +47,18 @@ async function startBook(contactPojo, device, selectedStore) {
}
}
-async function startWithList(contacts, device, selectedStore) {
+async function startWithList(contacts, device, selectedStore, audioAnalyse) {
await contacts.reduce(async (promise, contactPojo) => {
// This line will wait for the last async function to finish.
// The first iteration uses an already resolved Promise
// so, it will immediately continue.
await promise;
- const contents = await startBook(contactPojo, device, selectedStore);
+ const contents = await startBook(contactPojo, device, selectedStore, audioAnalyse);
console.log(contents);
}, Promise.resolve());
}
-async function startBookWithNumbers(startNumber, endNumber, selectedStore, pathToExcelFile = '/Users/lpan/Desktop/contact_all.xlsx') {
+async function startBookWithNumbers(startNumber, endNumber, selectedStore, pathToExcelFile = '/Users/lpan/Desktop/contact_all.xlsx', audioAnalyse = false) {
let allContactList = excelUtil.readContacts(pathToExcelFile);
let contactList;
if (endNumber <= allContactList.length) {
@@ -80,7 +80,7 @@ async function startBookWithNumbers(startNumber, endNumber, selectedStore, pathT
}
let segmentNumber = listToBook.length / devices.length;
for (let i = 0; i < devices.length; i++) {
- startWithList(listToBook.slice(i * segmentNumber, segmentNumber * (i + 1)), devices[i], selectedStore);
+ startWithList(listToBook.slice(i * segmentNumber, segmentNumber * (i + 1)), devices[i], selectedStore, audioAnalyse);
}
})
})
diff --git a/src/workers/CommandorPage.js b/src/workers/CommandorPage.js
index 8c584da..9e69227 100644
--- a/src/workers/CommandorPage.js
+++ b/src/workers/CommandorPage.js
@@ -57,7 +57,7 @@ function log(message) {
}
class CommandorPage {
- constructor(contact, device, mongoManager, selectedStore = DEFAULT_STORE) {
+ constructor(contact, device, mongoManager, selectedStore = DEFAULT_STORE, audioAnalyse = false) {
this.contact = contact;
this.device = device;
this.mongoManager = mongoManager;
@@ -65,6 +65,7 @@ class CommandorPage {
this.choosedStore = selectedStore
this.isFillingFields = false;
this.isTerminated = false;
+ this.audioAnalyse = audioAnalyse;
}
@@ -294,7 +295,9 @@ class CommandorPage {
let content = await currentPage.content();
let captcha_url = "geo.captcha-delivery.com/captcha";
if (content.toString().includes(captcha_url)) {
- await this.checkAudioBtn();
+ if (this.audioAnalyse) {
+ await this.checkAudioBtn();
+ }
for (let i = 0; i < 15; i++) {
await delay(1000)
shell.beep()
@@ -325,8 +328,8 @@ class CommandorPage {
if (audioBtn) {
log("audioBtn found")
audioBtn.click()
- let captchSolver = new GeoCaptchaSolver(this.page)
- captchSolver.solve()
+ let captchaSolver = new GeoCaptchaSolver(this.page)
+ await captchaSolver.solve()
} else {
log("audioBtn not found")
}
diff --git a/src/workers/GeoCaptchaSolver.js b/src/workers/GeoCaptchaSolver.js
index ed5efe3..c65d2f3 100644
--- a/src/workers/GeoCaptchaSolver.js
+++ b/src/workers/GeoCaptchaSolver.js
@@ -5,7 +5,6 @@ const crypto = require('crypto');
const fs = require("fs");
const homedir = require('os').homedir();
const dest_dir = homedir + "/wavs/"
-// iframe.query_selector('.audio-captcha-track').inner_html()
const AUDIO_CAPTCHA_TRACK = ".audio-captcha-track";
const CAPTCHA_CONTAINER = "#captcha-container";
const WAV_URL_REGEX = "https:.+.wav";