Автоматизация копирования времени при переводе субтитров на translated.by

Перевожу субтитры для одного мультсериала используя сервис translated.by. Для того чтобы субтитры оставались субтитрами, приходится вручную копировать номер субтитра и время, и лишь потом писать перевод. Уже на первой странице мне это надоело, поэтому написал скрипт, который берёт из оригинального параграфа номер субтитра и время, и вставляет это в textarea, в котором пишется перевод.

Остаётся только добавить сам перевод.

translationtable = document.getElementsByClassName('translation-table')[0];
tablerows = translationtable.getElementsByTagName('tr');
for (i = 0; i < tablerows.length; i++) {
    tdorig = tablerows[i].getElementsByClassName('td-orig-');
    tdtrans = tablerows[i].getElementsByClassName('td-trans-');

    originaltext = tdorig[0].getElementsByTagName('p')[0];
    scriptnumber = originaltext.childNodes[0].textContent;
    scripttime = originaltext.childNodes[2].textContent;
    tdtrans[0].getElementsByTagName('textarea')[0].value = scriptnumber + '\n' + scripttime + '\n';
}

Добавил себе javascript-закладку: translated.by > для субтитров.

UPD

Теперь в функцию можно передавать, сколько первых строк копировать. Исправлено: когда в оригинальном параграфе строк было меньше, чем предполагалось копировать, скрипт останавливался с ошибкой.

function tby_orig2trans(strings) {
    translationtable = document.getElementsByClassName('translation-table')[0];
    tablerows = translationtable.getElementsByTagName('tr');
    for (i = 0; i < tablerows.length; i++) {
        tdorig = tablerows[i].getElementsByClassName('td-orig-');
        tdtrans = tablerows[i].getElementsByClassName('td-trans-');
        if (strings == undefined)
            strings = 0;
        tempstrings = strings;

        originaltext = tdorig[0].getElementsByTagName('p')[0];

        copytext = '';
        counter = 0;
        for (c = 0; c < tempstrings; c++) {
            if (originaltext.childNodes[counter]) {
                copytext += originaltext.childNodes[counter].textContent + '\n';
            } else {
                break;
            }
            counter += 2;
        }
        tdtrans[0].getElementsByTagName('textarea')[0].value = copytext;
    }
}
tby_orig2trans(2);

Новая закладка: translated.by > для субтитров.

Оставьте комментарий