Etsy Price Rounder

Rounds prices to the nearest $0.25

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey, Greasemonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

You will need to install an extension such as Tampermonkey to install this script.

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्क्रिप्ट व्यवस्थापक एक्स्टेंशन इंस्टॉल करावे लागेल.

(माझ्याकडे आधीच युझर स्क्रिप्ट व्यवस्थापक आहे, मला इंस्टॉल करू द्या!)

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

(माझ्याकडे आधीच युझर स्टाईल व्यवस्थापक आहे, मला इंस्टॉल करू द्या!)

// ==UserScript==
// @name         Etsy Price Rounder
// @version      1.99
// @description  Rounds prices to the nearest $0.25
// @author       JustAnOkapi
// @match        https://www.etsy.com/*
// @grant        none
// @license      MIT
// @namespace    https://greasyfork.org/users/1198856
// ==/UserScript==

(function() {
    'use strict';

    // Function to round all prices
    function roundPrices() {
        // Round prices in class
        const priceElements = document.querySelectorAll('.currency-value');
        for (const priceElement of priceElements) {
            const priceValue = parseFloat(priceElement.textContent);
            if (!isNaN(priceValue)) {
                const roundedPrice = Math.round(priceValue * 4) / 4;
                priceElement.textContent = roundedPrice.toFixed(2);
            }
        }
        // Round prices in text nodes
        const textNodes = document.createTreeWalker(
            document.body,
            NodeFilter.SHOW_TEXT,
            null,
            false
        );

        while (textNodes.nextNode()) {
            const node = textNodes.currentNode;
            const text = node.textContent;

            // Use a regular expression to match prices in different formats
            const roundedText = text.replace(/\$(\d+\.\d{2})/g, (match, price) => {
                const roundedPrice = Math.round(parseFloat(price) * 4) / 4;
                return '$' + roundedPrice.toFixed(2);
            });

            if (roundedText !== text) {
                node.textContent = roundedText;
            }
        }
    }

    // Always up to date
    const observer = new MutationObserver(roundPrices);
    observer.observe(document.body, { childList: true, subtree: true });
})();