Загрузка...

Script for the Ozon website

Thread in Frontend created by Leva63 Dec 1, 2024. 336 views

  1. Leva63
    Leva63 Topic starter Dec 1, 2024 2691 Mar 14, 2021
    Скрипт для сайта ozon выделяющий товары, где предлагаемые баллы за отзыв выше цены

    JS
    // ==UserScript==
    // @name Ozone Points for Reviews Filtering
    // @namespace http://tampermonkey.net/
    // @version 2024.12.01
    // @description визуальное выделение товаров, где предлагаемые баллы за отзывы больше цены
    // @author k-dmitriy
    // @match https://www.ozon.ru/highlight/bally-za-otzyv-1171518/*
    // @match https://www.ozon.ru/*has_points_from_reviews=t*
    // @icon https://www.google.com/s2/favicons?sz=64&domain=ozon.ru
    // @require https://cdnjs.cloudflare.com/ajax/libs/arrive/2.4.1/arrive.min.js
    // @grant none
    // ==/UserScript==

    (function() {
    'use strict';

    let discountPercent = 25; // стандартная 25% скидка озон за баллы, цена с этой скидкой будет показана в скобках перед основной ценою. поставить 0, чтобы не учитывать ее. можно выставить больше 25 (25+n), чтобы выделялись и товары с ценою на n% выше баллов за отзыв.
    let delta = 0; // мин. разница между предлагаемыми баллами и стоимостью. к примеру 150 - под этот фильтр попадут товары за которые начисляют 200 баллов и их стоимость меньше 50р. (с учетом 25% скидки за баллы, если не стоит 0 строкою выше). можно указать отрицательное число, выделятся товары где цена выше предлагаемых баллов на это значение.

    const queries = {
    couponContainer: 'div[class*="tile-root"]',
    priceContainer: 'span[class*="tsHeadline500Medium"]',
    };
    discountPercent /= 100;

    // filtering function start
    let filtering = function (tthis) {
    const elemsContainer = tthis.innerText.split('\n');
    let points = Number(elemsContainer[0].replace(/\D/g, ''));
    let priceContainer = tthis.querySelector(queries.priceContainer);
    let price = Number(priceContainer.innerText.replace(/\D/g, ''));

    if ( points-delta < price-price*discountPercent ) {
    tthis.style.opacity = 0.20
    }

    priceContainer.textContent = '(' + (price-Math.floor(price*0.25)) + ') ' + priceContainer.textContent;

    }
    // filtering function end

    let firstElemsContainer = document.querySelectorAll(queries.couponContainer);
    firstElemsContainer.forEach (elemContainer => {
    filtering(elemContainer);
    });
    document.arrive(queries.couponContainer, function () {
    filtering(this);
    });

    })();
     
Loading...
Top