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

  • Автор темы Автор темы Tysha
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.
ну демоны! там кошачья еда что ли? я уж лыжи навострил следить рыбку на бутеры
тут люди сперму рыбы в перемешку с печенью едят и постанывают, а ты кошачьим кормом брезгуешь
 
Да, на один из )), вот и думаю, надо торопиться хоть что-то ухватить или подождать, купон пишет до 6 сентября, плодить акки из-за него не хочется
тоже думаю. никогда не угадаешь.
ртов с прошлой акции по любому больше стало.
 
1773231550189.webp
 
  • Like +1
Реакции: Ilja., Pityulya и DeRigo
Если не хотите нагружать браузер каждые 2 секунды переделкой ссылок.
Плюс Списание за заказ № тоже обрабатывает.
Каждый найденный текст обрабатывается 1 раз, хоть часами потом держите страницу

JavaScript:
// ==UserScript==
// @name         Замена на URL 1.2
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description  Заменяет "начисление за товар <ID>" на URL товара и "Списание за заказ №..." на URL заказа
// @match        https://www.ozon.ru/my/points*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=ozon.ru
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    const processed = new WeakSet();
    const SELECTOR = 'div.i7y_27';

    function replaceIdsWithLinks() {
/*        console.log('Селектор найден:', document.querySelectorAll('div.i7y_27').length);
        document.querySelectorAll('div.i7y_27').forEach(div => {
            console.log('Текст в div:', div.innerText);
        });*/
        document.querySelectorAll(SELECTOR).forEach(div => {
            if (processed.has(div)) return;

            const text = div.innerText || '';
            let newHTML = div.innerHTML;
            let modified = false;

            // Проверяем начисление за товар
            const productRegex = /Начисление за товар (\d+)\b/i;
            const productMatch = text.match(productRegex);
            if (productMatch && productMatch[1]) {
                const id = productMatch[1];
                const url = `https://www.ozon.ru/product/${id}/`;
                const linkHTML = `<a href="${url}" target="_blank">${url}</a>`;
                newHTML = newHTML.replace(productRegex, linkHTML);
                modified = true;
            }
            // Иначе проверяем списание за заказ
            else {
                const orderRegex = /Списание за заказ №([\d-]+)\b/i;
                const orderMatch = text.match(orderRegex);
                if (orderMatch && orderMatch[1]) {
                    const orderId = orderMatch[1];
                    const url = `https://www.ozon.ru/my/orderdetails/?order=${orderId}`;
//                    const linkHTML = `<a href="${url}" target="_blank">${url}</a>`;
//                    newHTML = newHTML.replace(orderRegex, linkHTML);
                      newHTML = newHTML.replace(
                          new RegExp(orderId, 'g'),
                          `<a href="${url}" target="_blank">${orderId}</a>`
                    );
                    modified = true;
                }
            }

            if (modified) {
                div.innerHTML = newHTML;
                processed.add(div);
            }
        });
    }

    // Используем MutationObserver вместо setInterval
    const observer = new MutationObserver(replaceIdsWithLinks);
    observer.observe(document.body, { childList: true, subtree: true });

    window.addEventListener('load', replaceIdsWithLinks);
})();
Отличный скрипт! А есть ли возможность сделать наоборот со страницы товара проверку оставлен ли отзыв и получены ли баллы за него?
 
Добрый день.
К сожалению, данная возможность отсутствует.
Благодарим за обращение, Хорошего вам дня! 🫶
Неправильно. По скрипту положено отвечать Ваше обращение очень важно для нас и обязательно будет рассмотрено нашими специалистами
 
  • Haha
Реакции: Сантер
Если не хотите нагружать браузер каждые 2 секунды переделкой ссылок.
Плюс Списание за заказ № тоже обрабатывает.
Каждый найденный текст обрабатывается 1 раз, хоть часами потом держите страницу

JavaScript:
// ==UserScript==
// @name         Замена на URL 1.2
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description  Заменяет "начисление за товар <ID>" на URL товара и "Списание за заказ №..." на URL заказа
// @match        https://www.ozon.ru/my/points*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=ozon.ru
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    const processed = new WeakSet();
    const SELECTOR = 'div.i7y_27';

    function replaceIdsWithLinks() {
/*        console.log('Селектор найден:', document.querySelectorAll('div.i7y_27').length);
        document.querySelectorAll('div.i7y_27').forEach(div => {
            console.log('Текст в div:', div.innerText);
        });*/
        document.querySelectorAll(SELECTOR).forEach(div => {
            if (processed.has(div)) return;

            const text = div.innerText || '';
            let newHTML = div.innerHTML;
            let modified = false;

            // Проверяем начисление за товар
            const productRegex = /Начисление за товар (\d+)\b/i;
            const productMatch = text.match(productRegex);
            if (productMatch && productMatch[1]) {
                const id = productMatch[1];
                const url = `https://www.ozon.ru/product/${id}/`;
                const linkHTML = `<a href="${url}" target="_blank">${url}</a>`;
                newHTML = newHTML.replace(productRegex, linkHTML);
                modified = true;
            }
            // Иначе проверяем списание за заказ
            else {
                const orderRegex = /Списание за заказ №([\d-]+)\b/i;
                const orderMatch = text.match(orderRegex);
                if (orderMatch && orderMatch[1]) {
                    const orderId = orderMatch[1];
                    const url = `https://www.ozon.ru/my/orderdetails/?order=${orderId}`;
//                    const linkHTML = `<a href="${url}" target="_blank">${url}</a>`;
//                    newHTML = newHTML.replace(orderRegex, linkHTML);
                      newHTML = newHTML.replace(
                          new RegExp(orderId, 'g'),
                          `<a href="${url}" target="_blank">${orderId}</a>`
                    );
                    modified = true;
                }
            }

            if (modified) {
                div.innerHTML = newHTML;
                processed.add(div);
            }
        });
    }

    // Используем MutationObserver вместо setInterval
    const observer = new MutationObserver(replaceIdsWithLinks);
    observer.observe(document.body, { childList: true, subtree: true });

    window.addEventListener('load', replaceIdsWithLinks);
})();
@Tysha добавишь на первую запись?
 
  • Like +1
Реакции: Tysha
Коллеги, у кого кэш есть на Озон, помогите серт купить, пожалуйста, кэш поделим. В личку.
Все еще продается мелкий номинал 300:
 
@Tysha добавишь на первую запись?
зачем тебе кривой скрипт на динамическом классе который поменяется рано или поздно и перестанет работать если ранее выкладывался нормальный? https://mipped.com/f/threads/ozon-ru-obshchaya-tema-2.320473/page-1021#post-6317658
причем абузяй его видел но зачем то решил изобрести свой велосипед с кривым колесом
 
  • slon +1
  • Dislike
Реакции: aomame и pipka347
зачем тебе кривой скрипт на динамическом классе который поменяется рано или поздно и перестанет работать если ранее выкладывался нормальный? https://mipped.com/f/threads/ozon-ru-obshchaya-tema-2.320473/page-1021#post-6317658
причем абузяй его видел но зачем то решил изобрести свой велосипед с кривым колесом
Завидуешь человеку, который смог написать крутой скрипт без нейронок, так и скажи, недохакер. А скрипт в шапку надо, полезный!
 
Статус
В этой теме нельзя размещать новые ответы.