DBLP Page Count Display

Add total page count to DBLP paper listings

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey, Greasemonkey или Violentmonkey.

Для установки этого скрипта вам необходимо установить расширение, такое как Tampermonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Violentmonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Userscripts.

Чтобы установить этот скрипт, сначала вы должны установить расширение браузера, например Tampermonkey.

Чтобы установить этот скрипт, вы должны установить расширение — менеджер скриптов.

(у меня уже есть менеджер скриптов, дайте мне установить скрипт!)

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

(у меня уже есть менеджер стилей, дайте мне установить скрипт!)

// ==UserScript==
// @name         DBLP Page Count Display
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Add total page count to DBLP paper listings
// @author       You
// @match        https://dblp.org/*
// @match        https://dblp.uni-trier.de/*
// @match        https://*.dblp.org/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    function addPageCounts() {
        // Find all pagination spans
        const paginationSpans = document.querySelectorAll('span[itemprop="pagination"]');

        paginationSpans.forEach(span => {
            // Check if we've already processed this span
            if (span.dataset.processed) return;

            const pageRange = span.textContent.trim();

            // Match patterns like "23-42" or "123-456"
            const match = pageRange.match(/^(\d+)-(\d+)$/);

            if (match) {
                const startPage = parseInt(match[1], 10);
                const endPage = parseInt(match[2], 10);
                const totalPages = endPage - startPage + 1;

                // Create a new span for the page count
                const countSpan = document.createElement('span');
                countSpan.textContent = ` (${totalPages} pages)`;
                countSpan.style.color = '#666';
                countSpan.style.fontSize = '0.95em';

                // Insert after the pagination span
                span.parentNode.insertBefore(countSpan, span.nextSibling);

                // Mark as processed
                span.dataset.processed = 'true';
            }
        });
    }

    // Run initially
    addPageCounts();

    // Watch for dynamic content changes
    const observer = new MutationObserver(() => {
        addPageCounts();
    });

    observer.observe(document.body, {
        childList: true,
        subtree: true
    });
})();