Boosty Image URL Cleaner

Удаление параметров mw и mh из ссылок на изображения на Boosty позволяет загружать изображения в оригинальном разрешении

// ==UserScript==
// @name         Boosty Image URL Cleaner
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Удаление параметров mw и mh из ссылок на изображения на Boosty позволяет загружать изображения в оригинальном разрешении
// @match        *://*.boosty.to/*
// ==/UserScript==

(function() {
    'use strict';

    // Функция для удаления параметров из URL после знака вопроса
    function cleanURL(url) {
        let urlParts = url.split('?');
        if (urlParts.length >= 2) {
            let baseUrl = urlParts[0];
            let queryString = urlParts.slice(1).join('?');
            let searchParams = new URLSearchParams(queryString);
            // Удаление параметров mw и mh и других, если необходимо
            searchParams.delete('mw');
            searchParams.delete('mh');
            // Добавьте сюда другие параметры, которые нужно удалить

            return `${baseUrl}?${searchParams.toString()}`;
        }
        return url;
    }

    // Обработка всех img элементов на странице
    function cleanImageUrls() {
        document.querySelectorAll('img[src*="boosty.to/image"]').forEach(img => {
            // Чистим src
            if (img.src) {
                img.src = cleanURL(img.src);
            }

            // Чистим srcset
            if (img.srcset) {
                let srcset = img.srcset.split(',').map(src => {
                    let [url, size] = src.trim().split(' ');
                    return `${cleanURL(url)} ${size}`;
                }).join(', ');
                img.srcset = srcset;
            }
        });
    }

    // Выполнение функции при загрузке страницы
    window.addEventListener('load', cleanImageUrls);

    // В случае динамического изменения контента
    const observer = new MutationObserver((mutations) => {
        mutations.forEach(mutation => {
            if (mutation.addedNodes.length) {
                cleanImageUrls();
            }
        });
    });

    observer.observe(document.body, { childList: true, subtree: true });
})();