ВАЖНАЯ ИНФОРМАЦИЯ Мне надоело, что при заходе в раздачу открывается последний ответ и нужно вручную кликать на 1 страницу, чтобы посмотреть изменилось ли кодовое слово и др.условия. Сделал скрипт, который это фиксит: Без скрипта открывается рандомная страница с ответами: С скриптом всегда первая, даже если отвечали в теме: Использование: 1. Скачать Tampermonkey 2. Вставить код // ==UserScript== // @name Lolz.live - Умный редирект тем // @namespace http://tampermonkey.net/ // @version 1.3 // @description Перенаправляет с /page-N на первую страницу темы, убирает /unread из ссылок и отменяет авто-прокрутку к #post. // @author ChatGPT & You (да говнокод, но работает же) // @match https://lolz.live/forums/* // @match https://lolz.live/threads/* // @icon https://lolz.live/styles/default/xenforo/favicon.ico // @grant none // @run-at document-start // ==/UserScript== (function() { 'use strict'; const logPrefix = '[Lolz Smart Redirect]'; // --- ЧАСТЬ 1: Логика для страниц тем (/threads/*) --- if (window.location.pathname.startsWith('/threads/')) { const path = window.location.pathname; const search = window.location.search; // 1.1: Если URL содержит '/page-', перенаправляем на первую страницу темы. if (path.includes('/page-')) { // Находим базовый URL темы (например, /threads/12345/) с помощью регулярного выражения const match = path.match(/^(\/threads\/\d+\/)/); if (match && match[1]) { const baseUrl = window.location.origin + match[1] + search; console.log(`${logPrefix} Обнаружена страница ${path}. Перенаправляем на первую страницу: ${baseUrl}`); // Выполняем редирект window.location.replace(baseUrl); // Прекращаем выполнение скрипта, так как страница будет перезагружена return; } } // 1.2: Если это первая страница, предотвращаем редирект на #post-... // Эта логика сработает только если не было редиректа выше. // Используем document-start, чтобы успеть до скриптов сайта. const cleanUrlHash = () => { if (window.location.hash && window.location.hash.startsWith('#post-')) { console.log(`${logPrefix} Обнаружен редирект на ${window.location.hash}. Отменяем.`); history.replaceState(null, '', path + search); } }; // Немедленно чистим URL при загрузке cleanUrlHash(); // Наблюдаем за изменениями, так как сайт может добавить хеш динамически const intervalId = setInterval(cleanUrlHash, 100); // Через 7 секунд прекращаем проверку setTimeout(() => { clearInterval(intervalId); console.log(`${logPrefix} Мониторинг редиректа на #post завершен.`); }, 7000); } // --- ЧАСТЬ 2: Логика для страниц разделов (/forums/*) --- // Очищаем все ссылки, чтобы они вели на первую страницу темы. if (window.location.pathname.startsWith('/forums/')) { const cleanLinks = () => { const threadLinks = document.querySelectorAll('a[href*="/threads/"]'); let cleanedCount = 0; threadLinks.forEach(link => { const originalHref = link.href; // Находим базовый URL темы (https://.../threads/12345/) const match = originalHref.match(/(https:\/\/lolz\.live\/threads\/\d+\/)/); if (match && match[1]) { const cleanHref = match[1]; // Если ссылка отличается от чистой (содержит /page-N, /unread и т.д.), исправляем ее if (link.href !== cleanHref) { link.href = cleanHref; cleanedCount++; } } }); if (cleanedCount > 0) { console.log(`${logPrefix} Очищено ${cleanedCount} ссылок от /page-N и /unread.`); } }; // Ждем загрузки DOM, чтобы все ссылки были на месте window.addEventListener('DOMContentLoaded', () => { cleanLinks(); // MutationObserver для отслеживания динамически подгружаемого контента (бесконечная прокрутка) const observer = new MutationObserver((mutations) => { let hasAddedNodes = mutations.some(mutation => mutation.addedNodes.length > 0); if (hasAddedNodes) { cleanLinks(); } }); observer.observe(document.body, { childList: true, subtree: true }); }); } })(); Code // ==UserScript== // @name Lolz.live - Умный редирект тем // @namespace http://tampermonkey.net/ // @version 1.3 // @description Перенаправляет с /page-N на первую страницу темы, убирает /unread из ссылок и отменяет авто-прокрутку к #post. // @author ChatGPT & You (да говнокод, но работает же) // @match https://lolz.live/forums/* // @match https://lolz.live/threads/* // @icon https://lolz.live/styles/default/xenforo/favicon.ico // @grant none // @run-at document-start // ==/UserScript== (function() { 'use strict'; const logPrefix = '[Lolz Smart Redirect]'; // --- ЧАСТЬ 1: Логика для страниц тем (/threads/*) --- if (window.location.pathname.startsWith('/threads/')) { const path = window.location.pathname; const search = window.location.search; // 1.1: Если URL содержит '/page-', перенаправляем на первую страницу темы. if (path.includes('/page-')) { // Находим базовый URL темы (например, /threads/12345/) с помощью регулярного выражения const match = path.match(/^(\/threads\/\d+\/)/); if (match && match[1]) { const baseUrl = window.location.origin + match[1] + search; console.log(`${logPrefix} Обнаружена страница ${path}. Перенаправляем на первую страницу: ${baseUrl}`); // Выполняем редирект window.location.replace(baseUrl); // Прекращаем выполнение скрипта, так как страница будет перезагружена return; } } // 1.2: Если это первая страница, предотвращаем редирект на #post-... // Эта логика сработает только если не было редиректа выше. // Используем document-start, чтобы успеть до скриптов сайта. const cleanUrlHash = () => { if (window.location.hash && window.location.hash.startsWith('#post-')) { console.log(`${logPrefix} Обнаружен редирект на ${window.location.hash}. Отменяем.`); history.replaceState(null, '', path + search); } }; // Немедленно чистим URL при загрузке cleanUrlHash(); // Наблюдаем за изменениями, так как сайт может добавить хеш динамически const intervalId = setInterval(cleanUrlHash, 100); // Через 7 секунд прекращаем проверку setTimeout(() => { clearInterval(intervalId); console.log(`${logPrefix} Мониторинг редиректа на #post завершен.`); }, 7000); } // --- ЧАСТЬ 2: Логика для страниц разделов (/forums/*) --- // Очищаем все ссылки, чтобы они вели на первую страницу темы. if (window.location.pathname.startsWith('/forums/')) { const cleanLinks = () => { const threadLinks = document.querySelectorAll('a[href*="/threads/"]'); let cleanedCount = 0; threadLinks.forEach(link => { const originalHref = link.href; // Находим базовый URL темы (https://.../threads/12345/) const match = originalHref.match(/(https:\/\/lolz\.live\/threads\/\d+\/)/); if (match && match[1]) { const cleanHref = match[1]; // Если ссылка отличается от чистой (содержит /page-N, /unread и т.д.), исправляем ее if (link.href !== cleanHref) { link.href = cleanHref; cleanedCount++; } } }); if (cleanedCount > 0) { console.log(`${logPrefix} Очищено ${cleanedCount} ссылок от /page-N и /unread.`); } }; // Ждем загрузки DOM, чтобы все ссылки были на месте window.addEventListener('DOMContentLoaded', () => { cleanLinks(); // MutationObserver для отслеживания динамически подгружаемого контента (бесконечная прокрутка) const observer = new MutationObserver((mutations) => { let hasAddedNodes = mutations.some(mutation => mutation.addedNodes.length > 0); if (hasAddedNodes) { cleanLinks(); } }); observer.observe(document.body, { childList: true, subtree: true }); }); } })(); 3. Включать только, когда хотите полутать халяву - затем отключать
Киана, правил по этому поводу не существует, так что не в моих силах. Если его так спонсят, то пусть спонсят