import { langCode, langCodeWithAuto } from '@translate-tools/core/types/Translator';
import { Page } from 'puppeteer-extra-plugin/dist/puppeteer';
import { HybridTranslate } from './HybridTranslate';
export class HybridTranslateDeDe extends HybridTranslate {
protected transGooglePage!: Page;
async translate(text: string, sourceLang: langCodeWithAuto, targetLang: langCode): Promise<string> {
await this.resetDeepl();
const result = await this.translateViaDeepl(text, "en", "de-DE");
return result;
}
async prepare(){
await this.init();
this.browCore.headless = true;
this.deelPage = await this.browCore.browser.newPage();
this.redeeplPage = await this.browCore.browser.newPage();
await this.browCore.initPage(this.deelPage);
await this.browCore.initPage(this.redeeplPage);
await this.deelPage.goto("https://www.deepl.com/translator", {waitUntil: 'networkidle0'})
await this.redeeplPage.goto("https://www.deepl.com/translator", {waitUntil: 'networkidle0'})
}
async setTextInputValue (page: Page, selector: string, value: string | number) {
await page.waitForSelector(selector);
await page.evaluate((data: { selector: any; value: any; }) => {
return document.querySelector(data.selector).value = data.value
}, {selector, value})
}
async improveText(text: string, sourceLang: string, targetLang: string): Promise<string>{
const resultOfDeepl = await this.translateViaDeeplByPage(text, this.deelPage);
const result = await this.translateViaDeeplByPage(resultOfDeepl, this.redeeplPage);
return result;
}
async translateViaGoogle(text: string, sourceLang: string, targetLang: string): Promise<string> {
const textArea = await this.transGooglePage.$(".er8xn")
// await textArea?.type(text);
await this.setTextInputValue(this.transGooglePage, ".er8xn", text)
await textArea?.type(" ");
await this.transGooglePage.waitForTimeout(1000)
let value: string = await this.transGooglePage.evaluate(()=>{
const elements = document.querySelectorAll(".VIiyi span > span")
value = "";
elements.forEach(el=>{
value+=el.textContent
})
return value
})
return value
}
}