404

[ Avaa Bypassed ]




Upload:

Command:

botdev@18.222.10.145: ~ $
import { GoogleTranslator } from '@translate-tools/core/translators/GoogleTranslator';
import { langCode, langCodeWithAuto } from '@translate-tools/core/types/Translator';
import { Page } from 'puppeteer-extra-plugin/dist/puppeteer';
import { Browcore } from './Browcore';

export class HybridTranslate {
    protected googleTranslator: GoogleTranslator = new GoogleTranslator();
    protected transGooglePage!: Page;
    protected transGooglePageDeFa!: Page;
    protected deelPage!: Page;
    protected redeeplPage!: Page;
    public static browCoreStatic: Browcore;
    public browCore!: Browcore;

    async init(){
        this.browCore = await this.getBrowCore();
    }
    public newPage(){
        return this.browCore.browser.newPage();
    }
    public async getBrowCore(): Promise<Browcore> {
        if(HybridTranslate.browCoreStatic){
            return HybridTranslate.browCoreStatic;
        }
        else {
            HybridTranslate.browCoreStatic = new Browcore();
            await HybridTranslate.browCoreStatic.init();
            return HybridTranslate.browCoreStatic;
        }
    }
    async prepare(){
        await this.init();
        this.browCore.headless = true;
        this.transGooglePage = await this.browCore.browser.newPage();
        this.deelPage = 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.deelPage.goto("https://www.deepl.com/translator", {waitUntil: 'networkidle0'})
        await this.transGooglePage.waitForTimeout(2000)

    }
    
    async translate(text: string, sourceLang: langCodeWithAuto, targetLang: langCode): Promise<string> {
        await this.resetTranslation();
        let result = await this.translateViaGoogle(text, sourceLang, targetLang);
        result = await this.translateViaDeepl(result, "en", "de-DE");
        return result;

    }

    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 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

    }

    async resetTranslation() {
        await this.resetGoogleTranslate();
    }

    async resetGoogleTranslate() {
        await this.transGooglePage.focus(".er8xn");
        await this.transGooglePage.keyboard.down('Control');
        await this.transGooglePage.keyboard.press('A');
        await this.transGooglePage.keyboard.up('Control');
        await this.transGooglePage.keyboard.press('Backspace');
    }
    async resetDeeplByPage(page: Page){
                // const textArea = await this.page.$(".lmt__source_textarea")
        // console.log("text area", textArea)
        // await textArea?.evaluate((el)=>{
        //     el.nodeValue = "";
        // })
        await page.focus(".lmt__source_textarea");
        await page.keyboard.down('Control');
        await page.keyboard.press('A');
        await page.keyboard.up('Control');
        await page.keyboard.press('Backspace');
        // const gtextArea = await this.transGooglePage.$(".er8xn")
    }
    async resetDeepl(){
        this.resetDeeplByPage(this.deelPage)
    }
    async translateViaDeepl(text: string, sourceLang: string, targetLang: string): Promise<string>{
        // return new Promise(async (resolve, reject)=>{
            await this.resetDeepl();
            return await this.translateViaDeeplByPage(text, this.deelPage);
    }
    async translateViaDeeplByPage(text: string, page: Page): Promise<string>{
        // return new Promise(async (resolve, reject)=>{
            await this.resetDeeplByPage(page);
            // await textArea?.type(text);
            // await textArea?.click();
            // await textArea?.focus();
            await this.setTextInputValue(page, ".lmt__source_textarea", text)
            await page.bringToFront();
            const textArea = await page.$(".lmt__source_textarea")
            await textArea?.focus();
            await textArea?.click();
            await textArea?.type(" ");
            await page.waitForTimeout(1000)
            const resElement = await page.$("#target-dummydiv")
            let value = await page.evaluate((el: { textContent: any; }) => el.textContent, resElement)
            // resolve(value)
            return value;
            
        // })
    }

    async translateToImprove(text: string, sourceLang: string, targetLang: string): Promise<string>{
        // return new Promise(async (resolve, reject)=>{
            await this.resetDeepl();
            
            const textArea = await this.deelPage.$(".lmt__source_textarea")
            // await textArea?.type(text);
            await this.setTextInputValue(this.deelPage, ".lmt__source_textarea", text);
            await textArea?.type(" ");
            await this.deelPage.waitForTimeout(1000);
            const switchBtn = await this.deelPage.$("div.lmt__language_container_switch");

            await this.deelPage.screenshot({path:"what.jpg"});
            await switchBtn?.click();

            await this.deelPage.hover('div.lmt__language_container_switch');
            await this.deelPage.waitForTimeout(1000);
            const resElement = await this.deelPage.$("#target-dummydiv");
            let value = await this.deelPage.evaluate((el: { textContent: any; }) => el.textContent, resElement)
            await this.deelPage.hover('.lmt__language_container_switch');
            const switchBtn2 = await this.deelPage.$("div.lmt__language_container_switch");
            // await switchBtn2?.click();
            // resolve(value)
            return value;
            
        // })
    }

}

Filemanager

Name Type Size Permission Actions
Browcore.ts File 6.46 KB 0644
HybridTranslate.ts File 6.42 KB 0644
HybridTranslateDeDe.ts File 2.33 KB 0644
HybridTranslateDeFa.ts File 2.11 KB 0644
HybridTranslateFaDe.ts File 3.08 KB 0644
TranslateServer.ts File 1.71 KB 0644
TranslateServerDeDe.ts File 979 B 0644
TranslateServerDeFa.ts File 976 B 0644
TranslateServerFaDe.ts File 971 B 0644
generate-cookie.ts File 584 B 0644
main.ts File 1.83 KB 0644
server-de-fa.ts File 2.62 KB 0644
server.ts File 611 B 0644