Ozon.ru - общая тема #2

  • Автор темы Автор темы Tysha
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.
так вы их точно получите, еще и в сочетании с в 12 и калием. а из таблеток можете не получить ничего.

кто говядина, того и жрать.
если серьезно, есть же синергия.
японцы специи изучают, так сочетания дают какой то мощный результат, а по отдельности легкий. думаю, с едой то же самое.
иначе эти дикие нормы вообще не получить из еды.
вывод - ешьте наши волшебные препараты.
так их кормят по разному но говядина оба
 
Друзья, а как вы находите всё, что выше 200 баллов за отзыв? Мож какие фильтры есть специальные? Можно под хайд 🙏
## хайд открывается
## хайд закрывается
 
мел херня, когда будешь жрать шавуху вспомни как ее готовят

изображение_2026-02-21_001700709.webp
 
тест 1770819809
.https://www.ozon.ru/product/elektromontazhnye-kleshchi-dlya-snyatiya-izolyatsii-1770819809/
1771624023980.webp

ну надо тестить что тут ии нахуевертили :rolleyes:
JavaScript:
// ==UserScript==
// @name         Ozon Product Links
// @namespace    http://tampermonkey.net/
// @version      1.01
// @description  Заменяет 10-значные номера товаров Ozon на кликабельные ссылки
// @author       Gemini
// @match        https://mipped.com/f/threads/ozon-ru-obshchaya-tema-2.320473/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Регулярное выражение для поиска ровно 10 цифр
    const productRegex = /\b\d{9,10}\b/g;
    const ozonBaseUrl = 'https://www.ozon.ru/product/';

    function createLink(id) {
        const a = document.createElement('a');
        a.href = ozonBaseUrl + id + '/';
        a.textContent = id;
        a.target = '_blank';
        a.style.color = '#005bff'; // Фирменный цвет Ozon для наглядности
        a.style.textDecoration = 'underline';
        return a;
    }

    function processNode(node) {
        // Ищем элементы с нужным классом
        const elements = node.querySelectorAll ? node.querySelectorAll('.message-content') : [];

        // Если сам переданный узел имеет этот класс, добавляем в список
        const targets = node.classList && node.classList.contains('message-content')
                        ? [node, ...elements]
                        : elements;

        targets.forEach(container => {
            const walker = document.createTreeWalker(container, NodeFilter.SHOW_TEXT, null, false);
            const nodesToReplace = [];

            let textNode;
            while (textNode = walker.nextNode()) {
                // Игнорируем, если текст уже находится внутри ссылки
                if (textNode.parentElement.tagName === 'A') continue;

                if (productRegex.test(textNode.nodeValue)) {
                    nodesToReplace.push(textNode);
                }
            }

            // Заменяем найденные текстовые узлы
            nodesToReplace.forEach(node => {
                const fragment = document.createDocumentFragment();
                let lastIndex = 0;

                node.nodeValue.replace(productRegex, (match, offset) => {
                    // Добавляем текст перед числом
                    fragment.appendChild(document.createTextNode(node.nodeValue.substring(lastIndex, offset)));
                    // Добавляем саму ссылку
                    fragment.appendChild(createLink(match));
                    lastIndex = offset + match.length;
                });

                // Добавляем оставшийся текст после последнего совпадения
                fragment.appendChild(document.createTextNode(node.nodeValue.substring(lastIndex)));
                node.parentNode.replaceChild(fragment, node);
            });
        });
    }

    // Наблюдаем за изменениями в DOM для поддержки динамического контента
    const observer = new MutationObserver(mutations => {
        mutations.forEach(mutation => {
            mutation.addedNodes.forEach(newNode => processNode(newNode));
        });
    });

    // Запуск при загрузке
    processNode(document.body);
    observer.observe(document.body, { childList: true, subtree: true });
})();
 
Последнее редактирование:
ну надо тестить что тут ии нахуевертили :rolleyes:
JavaScript:
// ==UserScript==
// @name         Ozon Product Links
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Заменяет 10-значные номера товаров Ozon на кликабельные ссылки
// @author       Gemini
// @match        https://mipped.com/f/threads/ozon-ru-obshchaya-tema-2.320473/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Регулярное выражение для поиска ровно 10 цифр
    const productRegex = /\b\d{10}\b/g;
    const ozonBaseUrl = 'https://www.ozon.ru/product/';

    function createLink(id) {
        const a = document.createElement('a');
        a.href = ozonBaseUrl + id + '/';
        a.textContent = id;
        a.target = '_blank';
        a.style.color = '#005bff'; // Фирменный цвет Ozon для наглядности
        a.style.textDecoration = 'underline';
        return a;
    }

    function processNode(node) {
        // Ищем элементы с нужным классом
        const elements = node.querySelectorAll ? node.querySelectorAll('.message-content') : [];

        // Если сам переданный узел имеет этот класс, добавляем в список
        const targets = node.classList && node.classList.contains('message-content')
                        ? [node, ...elements]
                        : elements;

        targets.forEach(container => {
            const walker = document.createTreeWalker(container, NodeFilter.SHOW_TEXT, null, false);
            const nodesToReplace = [];

            let textNode;
            while (textNode = walker.nextNode()) {
                // Игнорируем, если текст уже находится внутри ссылки
                if (textNode.parentElement.tagName === 'A') continue;

                if (productRegex.test(textNode.nodeValue)) {
                    nodesToReplace.push(textNode);
                }
            }

            // Заменяем найденные текстовые узлы
            nodesToReplace.forEach(node => {
                const fragment = document.createDocumentFragment();
                let lastIndex = 0;

                node.nodeValue.replace(productRegex, (match, offset) => {
                    // Добавляем текст перед числом
                    fragment.appendChild(document.createTextNode(node.nodeValue.substring(lastIndex, offset)));
                    // Добавляем саму ссылку
                    fragment.appendChild(createLink(match));
                    lastIndex = offset + match.length;
                });

                // Добавляем оставшийся текст после последнего совпадения
                fragment.appendChild(document.createTextNode(node.nodeValue.substring(lastIndex)));
                node.parentNode.replaceChild(fragment, node);
            });
        });
    }

    // Наблюдаем за изменениями в DOM для поддержки динамического контента
    const observer = new MutationObserver(mutations => {
        mutations.forEach(mutation => {
            mutation.addedNodes.forEach(newNode => processNode(newNode));
        });
    });

    // Запуск при загрузке
    processNode(document.body);
    observer.observe(document.body, { childList: true, subtree: true });
})();
Надо ещё чтобы звёздочки удалял и цифры написанные буквами менял.
 
Посмотреть вложение 1026970
ну надо тестить что тут ии нахуевертили :rolleyes:
JavaScript:
// ==UserScript==
// @name         Ozon Product Links
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Заменяет 10-значные номера товаров Ozon на кликабельные ссылки
// @author       Gemini
// @match        https://mipped.com/f/threads/ozon-ru-obshchaya-tema-2.320473/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Регулярное выражение для поиска ровно 10 цифр
    const productRegex = /\b\d{10}\b/g;
    const ozonBaseUrl = 'https://www.ozon.ru/product/';

    function createLink(id) {
        const a = document.createElement('a');
        a.href = ozonBaseUrl + id + '/';
        a.textContent = id;
        a.target = '_blank';
        a.style.color = '#005bff'; // Фирменный цвет Ozon для наглядности
        a.style.textDecoration = 'underline';
        return a;
    }

    function processNode(node) {
        // Ищем элементы с нужным классом
        const elements = node.querySelectorAll ? node.querySelectorAll('.message-content') : [];

        // Если сам переданный узел имеет этот класс, добавляем в список
        const targets = node.classList && node.classList.contains('message-content')
                        ? [node, ...elements]
                        : elements;

        targets.forEach(container => {
            const walker = document.createTreeWalker(container, NodeFilter.SHOW_TEXT, null, false);
            const nodesToReplace = [];

            let textNode;
            while (textNode = walker.nextNode()) {
                // Игнорируем, если текст уже находится внутри ссылки
                if (textNode.parentElement.tagName === 'A') continue;

                if (productRegex.test(textNode.nodeValue)) {
                    nodesToReplace.push(textNode);
                }
            }

            // Заменяем найденные текстовые узлы
            nodesToReplace.forEach(node => {
                const fragment = document.createDocumentFragment();
                let lastIndex = 0;

                node.nodeValue.replace(productRegex, (match, offset) => {
                    // Добавляем текст перед числом
                    fragment.appendChild(document.createTextNode(node.nodeValue.substring(lastIndex, offset)));
                    // Добавляем саму ссылку
                    fragment.appendChild(createLink(match));
                    lastIndex = offset + match.length;
                });

                // Добавляем оставшийся текст после последнего совпадения
                fragment.appendChild(document.createTextNode(node.nodeValue.substring(lastIndex)));
                node.parentNode.replaceChild(fragment, node);
            });
        });
    }

    // Наблюдаем за изменениями в DOM для поддержки динамического контента
    const observer = new MutationObserver(mutations => {
        mutations.forEach(mutation => {
            mutation.addedNodes.forEach(newNode => processNode(newNode));
        });
    });

    // Запуск при загрузке
    processNode(document.body);
    observer.observe(document.body, { childList: true, subtree: true });
})();
все пашет. вайбкодинг волшебен)
 
Посмотреть вложение 1026970
ну надо тестить что тут ии нахуевертили :rolleyes:
JavaScript:
// ==UserScript==
// @name         Ozon Product Links
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Заменяет 10-значные номера товаров Ozon на кликабельные ссылки
// @author       Gemini
// @match        https://mipped.com/f/threads/ozon-ru-obshchaya-tema-2.320473/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Регулярное выражение для поиска ровно 10 цифр
    const productRegex = /\b\d{10}\b/g;
    const ozonBaseUrl = 'https://www.ozon.ru/product/';

    function createLink(id) {
        const a = document.createElement('a');
        a.href = ozonBaseUrl + id + '/';
        a.textContent = id;
        a.target = '_blank';
        a.style.color = '#005bff'; // Фирменный цвет Ozon для наглядности
        a.style.textDecoration = 'underline';
        return a;
    }

    function processNode(node) {
        // Ищем элементы с нужным классом
        const elements = node.querySelectorAll ? node.querySelectorAll('.message-content') : [];

        // Если сам переданный узел имеет этот класс, добавляем в список
        const targets = node.classList && node.classList.contains('message-content')
                        ? [node, ...elements]
                        : elements;

        targets.forEach(container => {
            const walker = document.createTreeWalker(container, NodeFilter.SHOW_TEXT, null, false);
            const nodesToReplace = [];

            let textNode;
            while (textNode = walker.nextNode()) {
                // Игнорируем, если текст уже находится внутри ссылки
                if (textNode.parentElement.tagName === 'A') continue;

                if (productRegex.test(textNode.nodeValue)) {
                    nodesToReplace.push(textNode);
                }
            }

            // Заменяем найденные текстовые узлы
            nodesToReplace.forEach(node => {
                const fragment = document.createDocumentFragment();
                let lastIndex = 0;

                node.nodeValue.replace(productRegex, (match, offset) => {
                    // Добавляем текст перед числом
                    fragment.appendChild(document.createTextNode(node.nodeValue.substring(lastIndex, offset)));
                    // Добавляем саму ссылку
                    fragment.appendChild(createLink(match));
                    lastIndex = offset + match.length;
                });

                // Добавляем оставшийся текст после последнего совпадения
                fragment.appendChild(document.createTextNode(node.nodeValue.substring(lastIndex)));
                node.parentNode.replaceChild(fragment, node);
            });
        });
    }

    // Наблюдаем за изменениями в DOM для поддержки динамического контента
    const observer = new MutationObserver(mutations => {
        mutations.forEach(mutation => {
            mutation.addedNodes.forEach(newNode => processNode(newNode));
        });
    });

    // Запуск при загрузке
    processNode(document.body);
    observer.observe(document.body, { childList: true, subtree: true });
})();
Клауде?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху