Flaschenpost.de Bestpreis Sortierer

Sortiert Angeboote auf flaschenpost.de nach Bestpreis pro Liter.

当前为 2024-04-04 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name            Flaschenpost.de Bestpreis Sortierer
// @description     Sortiert Angeboote auf flaschenpost.de nach Bestpreis pro Liter.
// @namespace       https://www.flaschenpost.de
// @version         0.14
// @license         MIT
// @match           https://www.flaschenpost.de/*
// @run-at          document-end
// @icon            https://www.google.com/s2/favicons?sz=64&domain=flaschenpost.de
// @require         https://code.jquery.com/jquery-3.6.3.js
// ==/UserScript==

$(window).bind("load", function() {
    const sortButton = $(`<button
            id="bestpreisbtn"
            class="fp_button fp_button_primary fp_button_medium"
            style="margin-top: 1.25rem;">Sortieren nach Bestpreis
        </button>`);

    sortButton.click(function() {
        $('.products_list_vue_container, .products_grid_vue_container, .product_groups').each(function() {
            const listElements = $(this).find('.fp_product');

            console.log('listElements', listElements);

            $(listElements).sort(function(a, b) {
                function extract_price(e) {
                    const priceElements = $(e).find('.fp_article_pricePerUnit_deposit');
                    const prices = $.map(priceElements, function (e) {
                        const htmlText = $(e).text();
                        console.log('htmlText', htmlText);
                        const regExMatch = htmlText.match(/\(([0-9\,]+) €\//);  // match (_,__ €/___...) Unit can be "L" "Liter" "kg"
                        console.log('regExMatch', regExMatch);
                        return Number.parseFloat(regExMatch[1].replace(',', '.'));
                    });

                    console.log('prices', prices);
                    return Math.min(...prices);
                }

                return extract_price(a) - extract_price(b);
            }).appendTo(this);
        });
    });

    setInterval(() => {
        if (!$('.fp-benefits_holder #bestpreisbtn').length) {
            $('.fp-benefits_holder').append(sortButton);
        }
    }, 1000);
});