Bunkr Media Opener

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

  1. // ==UserScript==
  2. // @name Bunkr Media Opener
  3. // @namespace https://github.com/darhanger
  4. // @version 1.0
  5. // @description Открывает все картинки и видео в новой вкладке с задержкой
  6. // @author DarhangeR
  7. // @include *://bunkr*/a/*
  8. // @icon https://www.google.com/s2/favicons?sz=64&domain=bunkr.is
  9. // @license MIT
  10. // @grant none
  11. // ==/UserScript==
  12.  
  13. (function () {
  14. 'use strict';
  15.  
  16. // Функция для проверки языка браузера
  17. function getBrowserLanguage() {
  18. const lang = navigator.language || navigator.userLanguage;
  19. return lang ? lang.split('-')[0] : 'en'; // Вернет 'ru', 'uk', или любой другой язык
  20. }
  21.  
  22. // Функция для вывода сообщений в консоль на нужном языке
  23. function logMessage(messageRu, messageEn) {
  24. const lang = getBrowserLanguage();
  25. if (lang === 'ru' || lang === 'uk') {
  26. console.log(messageRu);
  27. } else {
  28. console.log(messageEn);
  29. }
  30. }
  31.  
  32. logMessage("Bunkr Media Opener запущен!", "Bunkr Media Opener started!");
  33.  
  34. // Функция для открытия медиа в новой вкладке и её закрытия с задержкой
  35. function openAndCloseMedia(url, delay) {
  36. const newTab = window.open(url, '_blank');
  37. if (newTab) {
  38. logMessage(`🔓 Открыта вкладка с медиа: ${url}`, `🔓 Opened tab with media: ${url}`);
  39. setTimeout(() => {
  40. try {
  41. newTab.close();
  42. logMessage(`🔒 Закрыта вкладка с медиа: ${url}`, `🔒 Closed tab with media: ${url}`);
  43. } catch (e) {
  44. console.error("❌ Не удалось закрыть вкладку:", e);
  45. }
  46. }, 5000); // Закрывает вкладку через 5 секунд
  47. } else {
  48. logMessage("❌ Не удалось открыть вкладку для:", "❌ Failed to open tab for:");
  49. }
  50. }
  51.  
  52. // Функция для поиска всех картинок и видео
  53. function openMedia() {
  54. logMessage("🔍 Ищем картинки и видео...", "🔍 Searching for images and videos...");
  55.  
  56. // Ищем все элементы с классами изображения и видео
  57. let mediaItems = document.querySelectorAll('a[href*="/f/"]');
  58. let mediaArray = Array.from(mediaItems).map(link => link.href);
  59.  
  60. if (mediaArray.length === 0) {
  61. logMessage("❌ Не найдено ни одного медиа! Проверь HTML-код.", "❌ No media found! Check the HTML code.");
  62. } else {
  63. logMessage(`✅ Найдено ${mediaArray.length} медиа`, `✅ Found ${mediaArray.length} media`);
  64. }
  65.  
  66. // Открываем медиа в новых вкладках с задержкой
  67. mediaArray.forEach((url, index) => {
  68. setTimeout(() => {
  69. openAndCloseMedia(url, index * 6000); // Интервал между открытиями 6 секунд
  70. }, index * 6000); // Задержка между открытием вкладок
  71. });
  72. }
  73.  
  74. // Создаем кнопку для запуска скрипта
  75. function createOpenButton() {
  76. let openButton = document.createElement("button");
  77. openButton.innerText = "Open Media";
  78. openButton.style.padding = "9px 15px";
  79. openButton.style.marginRight = "10px"; // Отступ справа от кнопок (слева от контейнера)
  80. openButton.style.backgroundColor = "#1B2533";
  81. openButton.style.color = "#fff";
  82. openButton.style.border = "none";
  83. openButton.style.cursor = "pointer";
  84. openButton.style.fontSize = "14px"; // Размер текста
  85. openButton.style.zIndex = "9999";
  86. openButton.style.borderRadius = "8px";
  87.  
  88. openButton.onclick = function () {
  89. logMessage("🔍 Кнопка нажата! Открываем медиа...", "🔍 Button clicked! Opening media...");
  90. openMedia();
  91. };
  92.  
  93. // Находим контейнер, где должны быть кнопки
  94. const container = document.querySelector('.flex.items-center.w-full.md\\:w-auto.gap-4');
  95. if (container) {
  96. container.insertBefore(openButton, container.firstChild); // Добавляем кнопку в начало контейнера (слева)
  97. logMessage("✅ Кнопка 'Открыть медиа' добавлена в контейнер слева!", "✅ 'Open Media' button added to the container on the left!");
  98. } else {
  99. logMessage("❌ Контейнер не найден!", "❌ Container not found!");
  100. }
  101. }
  102.  
  103. createOpenButton();
  104. })();