Загрузка данных


(async () => {
    const rows = [...document.querySelectorAll('.rt-tr')];

    const selectedRows = rows.filter(row => {
        const checkbox = row.querySelector('input[type="checkbox"]');
        return checkbox?.checked;
    });

    console.log(`Выбрано строк: ${selectedRows.length}`);

    if (!selectedRows.length) {
        alert('Нет выбранных строк.');
        return;
    }

    const urls = [];

    for (const row of selectedRows) {
        const target = row.querySelector('span[aria-label]');

        if (!target) {
            console.warn('В строке не найден span с aria-label:', row);
            continue;
        }

        const name = target.getAttribute('aria-label');
        console.log('Обрабатываю:', name);

        let capturedUrl = null;

        const originalPushState = history.pushState;
        const originalReplaceState = history.replaceState;

        history.pushState = function (state, title, url) {
            if (url) {
                capturedUrl = new URL(url, location.href).href;
            }
        };

        history.replaceState = function (state, title, url) {
            if (url) {
                capturedUrl = new URL(url, location.href).href;
            }
        };

        try {
            target.dispatchEvent(new MouseEvent('click', {
                bubbles: true,
                cancelable: true,
                view: window,
                ctrlKey: true,
                metaKey: false,
                button: 0
            }));
        } catch (e) {
            console.error(e);
        }

        history.pushState = originalPushState;
        history.replaceState = originalReplaceState;

        if (capturedUrl) {
            urls.push(capturedUrl);
            console.log('URL:', capturedUrl);
        } else {
            console.warn('URL не удалось перехватить:', name);
        }

        await new Promise(r => setTimeout(r, 100));
    }

    console.log('Найдено URL:', urls);

    if (!urls.length) {
        alert('Не удалось получить URL. Смотри сообщения в Console.');
        return;
    }

    urls.forEach((url, i) => {
        setTimeout(() => {
            window.open(url, '_blank');
        }, i * 150);
    });

    console.log(`Открываю ${urls.length} вкладок.`);
})();