Auto Rozwijanie Menu Poczta Polska

Automatycznie rozwija wszystkie sekcje "Status przesyłki" na stronie śledzenia Poczty Polskiej.

// ==UserScript==
// @name         Auto Rozwijanie Menu Poczta Polska
// @namespace    http://tampermonkey.net/
// @version      1.5
// @description  Automatycznie rozwija wszystkie sekcje "Status przesyłki" na stronie śledzenia Poczty Polskiej.
// @author       Chinchill
// @match        https://www.poczta-polska.pl/sledzenie-przesylek/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function () {
    'use strict';

    const MAX_RETRIES = 10; // Maksymalna liczba prób ponowienia
    let retries = 0; // Licznik prób

    const expandAllAccordions = () => {
        // Wyszukaj wszystkie przyciski akordeonu i ich zawartość
        const buttons = document.querySelectorAll('button.accordion-button[data-bs-target]');
        const contents = document.querySelectorAll('.accordion-collapse.collapse');

        if (buttons.length > 0 && contents.length > 0) {
            console.log(`Znaleziono ${buttons.length} sekcji do rozwinięcia.`);

            buttons.forEach((button, index) => {
                const accordionContent = contents[index];

                if (button && accordionContent) {
                    console.log(`Rozwijanie sekcji ${index + 1}.`);
                    try {
                        // Rozwiń akordeon
                        button.classList.remove('collapsed');
                        button.setAttribute('aria-expanded', 'true');
                        accordionContent.classList.add('show');
                        accordionContent.style.display = 'block';
                    } catch (err) {
                        console.error(`Błąd przy rozwijaniu sekcji ${index + 1}:`, err);
                    }
                }
            });

            console.log("Wszystkie sekcje zostały rozwinięte.");
        } else {
            console.log("Nie znaleziono elementów akordeonu, ponawianie...");

            // Ponów próbę, jeśli nie znaleziono akordeonów i są dostępne próby
            if (retries < MAX_RETRIES) {
                retries++;
                setTimeout(expandAllAccordions, 500); // Ponów próbę po 500ms
            } else {
                console.error("Nie znaleziono elementów akordeonu po maksymalnej liczbie prób.");
            }
        }
    };

    // Uruchom po pełnym załadowaniu DOM
    document.addEventListener('DOMContentLoaded', () => {
        console.log("DOM został załadowany. Próba rozwinięcia wszystkich sekcji.");
        expandAllAccordions();
    });

    // Użyj MutationObserver do wykrywania dynamicznie ładowanych elementów
    const observer = new MutationObserver(() => {
        console.log("Wykryto zmianę w DOM, próba rozwinięcia wszystkich sekcji.");
        expandAllAccordions();
    });

    // Obserwuj zmiany w DOM
    observer.observe(document.body, { childList: true, subtree: true });
})();