need to add speechtotext lib

This commit is contained in:
2022-09-24 18:47:01 +02:00
parent 71a10a9665
commit 08e6330c78
4 changed files with 74 additions and 5 deletions
+64
View File
@@ -0,0 +1,64 @@
const PLAY_AUDIO_BTN_ID = ".audio-captcha-play-button"
const wget = require('node-wget');
const crypto = require('crypto');
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";
const re = new RegExp(WAV_URL_REGEX);
function delay(delayInMs) {
return new Promise(resolve => {
setTimeout(() => {
resolve(2);
}, delayInMs);
});
}
class GeoCaptchaSolver {
constructor(page) {
this.page = page
}
async solve() {
console.log("solve() called.")
console.log("play audio")
let iframeHandler = await this.page.frameLocator("body > iframe");
let playAudioBtn = await iframeHandler.locator(PLAY_AUDIO_BTN_ID);
playAudioBtn.click();
await delay(5000);
// let captcha_track = await iframeHandler.locator(AUDIO_CAPTCHA_TRACK);
// const handle = await this.page.frameLocator("iframe");
// const contentFrame = await handle.contentFrame();
// console.log(contentFrame)
let captcha_container = await iframeHandler.locator(CAPTCHA_CONTAINER)
// let result = await iframeHandler.evaluate(() => {
// document.getElementsByClassName(AUDIO_CAPTCHA_TRACK)
// })
let html = await captcha_container.innerHTML()
console.log("audio_tag: " + html);
// find wav from html
this.findWavFile(html)
}
findWavFile(html) {
let result = re.exec(html);
if (result) {
let audioUrl = result[0]
let fileName = crypto.randomUUID() + ".wav"
wget({url: audioUrl, dest: dest_dir + fileName}, function (error, response, body) {
if (error) {
console.log('--- error:');
console.log(error); // error encountered
} else {
console.log('download the file successfully');
}
})
}
}
}
module.exports = GeoCaptchaSolver