Bunkr Media Opener

Открывает все картинки и видео в новой вкладке с задержкой

// ==UserScript==
// @name         Bunkr Media Opener
// @namespace    https://github.com/darhanger
// @version      1.0.1
// @description  Открывает все картинки и видео в новой вкладке с задержкой
// @author       DarhangeR
// @include      *://bunkr*/a/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=bunkr.is
// @license      MIT
// @grant        none
// ==/UserScript==

(function () {
    'use strict';

    // Функция для проверки языка браузера
    function getBrowserLanguage() {
        const lang = navigator.language || navigator.userLanguage;
        return lang ? lang.split('-')[0] : 'en'; // Вернет 'ru', 'uk', или любой другой язык
    }

    // Функция для вывода сообщений в консоль на нужном языке
    function logMessage(messageRu, messageEn) {
        const lang = getBrowserLanguage();
        if (lang === 'ru' || lang === 'uk') {
            console.log(messageRu);
        } else {
            console.log(messageEn);
        }
    }

    logMessage("Bunkr Media Opener запущен!", "Bunkr Media Opener started!");

    // Функция для "открытия" медиа без открытия вкладки (используем fetch)
    function fetchMediaContent(url) {
        fetch(url)
            .then(response => response.text()) // Получаем содержимое страницы
            .then(data => {
                console.log(`Контент загружен с URL: ${url}`);
                console.log(data); // Выводим полученные данные в консоль
            })
            .catch(error => console.error("Ошибка при загрузке контента:", error));
    }

    // Функция для "открытия" URL в скрытом iframe
    function openMediaInHiddenIframe(url) {
        let iframe = document.createElement('iframe');
        iframe.style.display = 'none'; // Скрываем iframe
        iframe.src = url; // Устанавливаем ссылку
        document.body.appendChild(iframe); // Добавляем iframe в DOM

        // Пример для очистки через некоторое время (через 5 секунд)
        setTimeout(() => {
            iframe.remove();
            console.log(`Скрытый iframe с URL ${url} удален.`);
        }, 5000);
    }

    // Функция для открытия медиа в новой вкладке и её закрытия с задержкой
    function openAndCloseMedia(url, delay) {
        // Для "открытия" без вкладки, можно использовать fetch или iframe
        fetchMediaContent(url);
        // Или openMediaInHiddenIframe(url);

        // Здесь, как пример, выводим лог, что "открыли" ссылку
        logMessage(`🔓 Открыта вкладка с медиа: ${url}`, `🔓 Opened tab with media: ${url}`);

        // Задержка для имитации действия
        setTimeout(() => {
            logMessage(`🔒 Закрыта вкладка с медиа: ${url}`, `🔒 Closed tab with media: ${url}`);
        }, 5000); // Закрытие через 5 секунд
    }

    // Функция для поиска всех картинок и видео
    function openMedia() {
        logMessage("🔍 Ищем картинки и видео...", "🔍 Searching for images and videos...");

        // Ищем все элементы с классами изображения и видео
        let mediaItems = document.querySelectorAll('a[href*="/f/"]');
        let mediaArray = Array.from(mediaItems).map(link => link.href);

        if (mediaArray.length === 0) {
            logMessage("❌ Не найдено ни одного медиа! Проверь HTML-код.", "❌ No media found! Check the HTML code.");
        } else {
            logMessage(`✅ Найдено ${mediaArray.length} медиа`, `✅ Found ${mediaArray.length} media`);
        }

        // Открываем медиа в новых вкладках с задержкой
        mediaArray.forEach((url, index) => {
            setTimeout(() => {
                openAndCloseMedia(url, index * 6000); // Интервал между открытиями 6 секунд
            }, index * 6000); // Задержка между открытием вкладок
        });
    }

    // Создаем кнопку для запуска скрипта
    function createOpenButton() {
        let openButton = document.createElement("button");
        openButton.innerText = "Open Media";
        openButton.style.padding = "9px 15px";
        openButton.style.marginRight = "10px"; // Отступ справа от кнопок (слева от контейнера)
        openButton.style.backgroundColor = "#1B2533";
        openButton.style.color = "#fff";
        openButton.style.border = "none";
        openButton.style.cursor = "pointer";
        openButton.style.fontSize = "14px"; // Размер текста
        openButton.style.zIndex = "9999";
        openButton.style.borderRadius = "8px";

        openButton.onclick = function () {
            logMessage("🔍 Кнопка нажата! Открываем медиа...", "🔍 Button clicked! Opening media...");
            openMedia();
        };

        // Находим контейнер, где должны быть кнопки
        const container = document.querySelector('.flex.items-center.w-full.md\\:w-auto.gap-4');
        if (container) {
            container.insertBefore(openButton, container.firstChild); // Добавляем кнопку в начало контейнера (слева)
            logMessage("✅ Кнопка 'Открыть медиа' добавлена в контейнер слева!", "✅ 'Open Media' button added to the container on the left!");
        } else {
            logMessage("❌ Контейнер не найден!", "❌ Container not found!");
        }
    }

    createOpenButton();
})();