ScreenTranslator/translators/yandex.js

46 lines
1.1 KiB
JavaScript
Raw Normal View History

2020-02-21 00:45:53 +07:00
var lastText = '';
var active = window.location.href !== "about:blank";
2015-10-10 03:33:49 +07:00
2020-03-21 01:44:46 +07:00
function checkFinished() {
2020-02-21 00:45:53 +07:00
if (!active) return;
2023-01-28 16:21:55 +07:00
let spans = [].slice.call(document.querySelectorAll('span.translation-word'));
2020-03-21 01:44:46 +07:00
let text = spans.reduce(function (res, i) {
2023-01-28 16:21:55 +07:00
return res + i.innerText;
2020-04-02 23:26:12 +07:00
}, '').trim();
2020-02-21 00:45:53 +07:00
if (text === lastText || text === '')
return;
2020-03-21 01:44:46 +07:00
console.log('translated text', text, 'old', lastText, 'size', text.length, lastText.length);
2020-02-21 00:45:53 +07:00
lastText = text;
active = false;
2020-03-21 01:44:46 +07:00
proxy.setTranslated(text);
2015-10-10 03:33:49 +07:00
}
2020-02-21 00:45:53 +07:00
2020-03-21 01:44:46 +07:00
function translate(text, from, to) {
2020-02-21 00:45:53 +07:00
console.log('start translate', text, from, to)
2021-01-05 21:03:11 +07:00
if (text.trim().length == 0) {
proxy.setTranslated('');
return;
}
2020-02-21 00:45:53 +07:00
active = true;
2020-03-21 01:44:46 +07:00
let langs = 'lang=' + from + '-' + to;
2020-04-03 22:38:59 +07:00
let url = 'https://translate.yandex.ru/?' + langs + '&text=' + encodeURIComponent(text);
2021-01-05 21:03:11 +07:00
if (window.location.href == url) {
console.log('using cached result');
lastText = '';
return;
}
2020-03-21 01:44:46 +07:00
console.log("setting url", url);
2020-02-21 00:45:53 +07:00
window.location = url;
}
function init() {
2020-03-21 01:44:46 +07:00
proxy.translate.connect(translate);
2020-02-21 00:45:53 +07:00
setInterval(checkFinished, 300);
2015-10-10 03:33:49 +07:00
}