Add glossary option #3

Closed
Androz2091 wants to merge 2 commits from Androz2091/deepl-scraper:androz2091-glossary into master
Showing only changes of commit 90aad0f206 - Show all commits

View file

@ -12,7 +12,7 @@ const getBrowser = async () => {
const getNewPage = async () => await (await getBrowser()).newPage();
module.exports = {
translate: async (sentence, sourceLanguage = 'auto', targetLanguage) => {
translate: async (sentence, sourceLanguage = 'auto', targetLanguage, glossary) => {
if(!/^(auto|[a-z]{2})$/.test(sourceLanguage))
throw new Error('INVALID_SOURCE_LANGUAGE');
if(!/^[a-z]{2}-[A-Z]{2}$/.test(targetLanguage))
@ -25,6 +25,10 @@ module.exports = {
targetLangMenu = '.lmt__language_select--target .lmt__language_select__menu',
sourceLangButton = `.lmt__language_select--source button[dl-test=translator-lang-option-${sourceLanguage}]`,
targetLangButton = `.lmt__language_select--target button[dl-test=translator-lang-option-${targetLanguage}]`,
glossaryButton = `.lmt__glossary_onOffSwitch_label`,
sourceGlossaryInput = `.lmt__glossary_newEntry_inputSource`,
targetGlossaryInput = `.lmt__glossary_newEntry_inputTarget`,
glossaryAddButton = `.lmt__glossary_acceptButton`,
originalSentenceField = '.lmt__source_textarea',
targetSentenceField = '.lmt__target_textarea'/*,
targetSentencesContainer = '.lmt__translations_as_text'*/;
@ -51,8 +55,20 @@ module.exports = {
throw new Error('UNSUPPORTED_TARGET_LANGUAGE');
}
await page.waitForSelector(targetLangMenu, { hidden: true });
if (glossary) {
await page.waitForSelector(glossaryButton, { visible: true })
await page.click(glossaryButton);
await page.waitForSelector(sourceGlossaryInput, { visible: true });
const words = Object.keys(glossary);
for (let word of words) {
await page.type(sourceGlossaryInput, word);
await page.type(targetGlossaryInput, glossary[word]);
await page.click(glossaryAddButton);
}
}
await page.waitForSelector(originalSentenceField);
await page.click(originalSentenceField);
await page.type(originalSentenceField, sentence);
let sentences = [];