"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.HybridTranslateFaDe = void 0;
const GoogleTranslator_1 = require("@translate-tools/core/translators/GoogleTranslator");
const HybridTranslate_1 = require("./HybridTranslate");
class HybridTranslateFaDe extends HybridTranslate_1.HybridTranslate {
constructor() {
super(...arguments);
this.googleTranslator = new GoogleTranslator_1.GoogleTranslator();
}
async prepare() {
await this.init();
this.browCore.headless = true;
this.deelPage = this.browCore.page;
this.transGooglePage = await this.browCore.browser.newPage();
await this.browCore.loadCookiesForPage(this.transGooglePage, "google-trans-cookie.json");
await this.transGooglePage.goto("https://translate.google.com/", { waitUntil: 'networkidle0' });
await this.browCore.page.goto("https://www.deepl.com/translator", { waitUntil: 'networkidle0' });
await this.transGooglePage.waitForTimeout(2000);
}
async translate(text, sourceLang, targetLang) {
await this.resetTranslation();
let result = await this.translateViaGoogle(text, sourceLang, targetLang);
result = await this.translateViaDeepl(result, "en", "de-DE");
return result;
}
async setTextInputValue(page, selector, value) {
await page.waitForSelector(selector);
await page.evaluate((data) => {
return document.querySelector(data.selector).value = data.value;
}, { selector, value });
}
async translateViaGoogle(text, sourceLang, targetLang) {
const textArea = await this.transGooglePage.$(".er8xn");
// await textArea?.type(text);
await this.setTextInputValue(this.transGooglePage, ".er8xn", text);
await (textArea === null || textArea === void 0 ? void 0 : textArea.type(" "));
await this.transGooglePage.waitForTimeout(1000);
let value = await this.transGooglePage.evaluate(() => {
const elements = document.querySelectorAll(".VIiyi span > span");
value = "";
elements.forEach(el => {
value += el.textContent;
});
return value;
});
return value;
}
async translateViaDeFaGoogle(text, sourceLang, targetLang) {
const textArea = await this.transGooglePageDeFa.$(".er8xn");
// await textArea?.type(text);
await this.setTextInputValue(this.transGooglePageDeFa, ".er8xn", text);
await (textArea === null || textArea === void 0 ? void 0 : textArea.type(" "));
await this.transGooglePageDeFa.waitForTimeout(1000);
let value = await this.transGooglePageDeFa.evaluate(() => {
const elements = document.querySelectorAll(".VIiyi span > span");
value = "";
elements.forEach(el => {
value += el.textContent;
});
return value;
});
return value;
}
}
exports.HybridTranslateFaDe = HybridTranslateFaDe;