RosettaCode Conribution Records Counter

count specific li elements within section.mw-pager-body

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

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

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

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

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

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         RosettaCode Conribution Records Counter
// @description  count specific li elements within section.mw-pager-body
// @name:ar          عداد سجلات المساهمات في RosettaCode
// @description:ar    عداد عناصر li معينة داخل section.mw-pager-body
// @name:bg          Брояч на записи за принос към RosettaCode
// @description:bg    Преброява специфични li елементи в section.mw-pager-body
// @name:cs          Počítadlo záznamů o příspěvcích RosettaCode
// @description:cs    Počítá specifické li elementy uvnitř section.mw-pager-body
// @name:da          RosettaCode bidragsrekordtæller
// @description:da    Tæller specifikke li-elementer inden for section.mw-pager-body
// @name:de          RosettaCode Beitragsdatensatzzähler
// @description:de    Zählt bestimmte li-Elemente innerhalb von section.mw-pager-body
// @name:el          Μετρητής αρχείων συνεισφοράς RosettaCode
// @description:el    Μετράει συγκεκριμένα στοιχεία li μέσα στο section.mw-pager-body
// @name:eo          RosettaCode Kontribuaĵo-Rekordoj-Nombrilo
// @description:eo    Kalkulas specifajn li elementojn ene de section.mw-pager-body
// @name:es          Contador de registros de contribuciones de RosettaCode
// @description:es    Cuenta elementos li específicos dentro de section.mw-pager-body
// @name:fi          RosettaCode Osallistumistietojen laskuri
// @description:fi    Laskee tietyt li-elementit section.mw-pager-body -sisällä
// @name:fr          Compteur d'enregistrements de contributions RosettaCode
// @description:fr    Compte les éléments li spécifiques dans section.mw-pager-body
// @name:fr-CA       Compteur d'enregistrements de contributions RosettaCode
// @description:fr-CA    Compte les éléments li spécifiques dans section.mw-pager-body
// @name:he          מונה רשומות תרומה של RosettaCode
// @description:he    סופר רכיבי li ספציפיים בתוך section.mw-pager-body
// @name:hr          Brojač zapisa doprinosa za RosettaCode
// @description:hr    Broji određene li elemente unutar section.mw-pager-body
// @name:hu          RosettaCode Hozzájárulás-rekord számláló
// @description:hu    Megszámolja a specifikus li elemeket a section.mw-pager-body-n belül
// @name:id          Penghitung Catatan Kontribusi RosettaCode
// @description:id    Menghitung elemen li tertentu di dalam section.mw-pager-body
// @name:it          Contatore di record di contributo di RosettaCode
// @description:it    Conta elementi li specifici all'interno di section.mw-pager-body
// @name:ja          RosettaCode投稿記録カウンター
// @description:ja    section.mw-pager-body内の特定のli要素をカウントします
// @name:ka          RosettaCode-ის წვლილის ჩანაწერების მთვლელი
// @description:ka    ითვლის კონკრეტულ li ელემენტებს section.mw-pager-body-ში
// @name:ko          RosettaCode 기여 기록 카운터
// @description:ko    section.mw-pager-body 내의 특정 li 요소를 계산합니다.
// @name:nb          RosettaCode bidragsrekordteller
// @description:nb    Teller spesifikke li-elementer innenfor section.mw-pager-body
// @name:nl          RosettaCode Bijdrage Records Teller
// @description:nl    Telt specifieke li-elementen binnen section.mw-pager-body
// @name:pl          Licznik rekordów kontrybucji RosettaCode
// @description:pl    Zlicza określone elementy li wewnątrz section.mw-pager-body
// @name:pt-BR       Contador de Registros de Contribuições do RosettaCode
// @description:pt-BR    Conta elementos li específicos dentro de section.mw-pager-body
// @name:ro          Contor de înregistrări de contribuții RosettaCode
// @description:ro    Numără elemente li specifice în interiorul section.mw-pager-body
// @name:ru          Счетчик записей о вкладе в RosettaCode
// @description:ru    Подсчитывает определенные элементы li внутри section.mw-pager-body
// @name:sk          Počítadlo záznamov o príspevkoch RosettaCode
// @description:sk    Počíta špecifické li elementy vnútri section.mw-pager-body
// @name:sr          Бројач записа о доприносима за RosettaCode
// @description:sr    Броји одређене li елементе унутар section.mw-pager-body
// @name:sv          RosettaCode bidragsregisterräknare
// @description:sv    Räknar specifika li-element inom section.mw-pager-body
// @name:th          ตัวนับบันทึกการมีส่วนร่วมของ RosettaCode
// @description:th    นับองค์ประกอบ li เฉพาะภายใน section.mw-pager-body
// @name:tr          RosettaCode Katkı Kayıtları Sayacı
// @description:tr    section.mw-pager-body içindeki belirli li öğelerini sayar
// @name:ug          RosettaCode تۆھپە خاتىرىسى سانىغۇچ
// @description:ug    section.mw-pager-body ئىچىدىكى كونكرېت li ئېلېمېنتلىرىنى ھېسابلايدۇ
// @name:uk          Лічильник записів внеску RosettaCode
// @description:uk    Підраховує певні елементи li всередині section.mw-pager-body
// @name:vi          Bộ đếm hồ sơ đóng góp RosettaCode
// @description:vi    Đếm các phần tử li cụ thể bên trong section.mw-pager-body
// @name:zh          RosettaCode贡献记录计数器
// @description:zh    计算 section.mw-pager-body 中特定的 li 元素
// @name:zh-CN       RosettaCode贡献记录计数器
// @description:zh-CN    计算 section.mw-pager-body 中特定的 li 元素
// @name:zh-HK       RosettaCode貢獻記錄計數器
// @description:zh-HK    計算 section.mw-pager-body 中特定的 li 元素
// @name:zh-SG       RosettaCode贡献记录计数器
// @description:zh-SG    计算 section.mw-pager-body 中特定的 li 元素
// @name:zh-TW       RosettaCode貢獻記錄計數器
// @description:zh-TW    計算 section.mw-pager-body 中特定的 li 元素
// @namespace    http://tampermonkey.net/
// @version      1.0.2.2
// @author       aspen138
// @match        *://rosettacode.org/wiki/Special:Contributions?end=&limit=5000&namespace=all&start=&tagfilter=&target=*
// @match        *://rosettacode.org/wiki/Special:Contributions*
// @match        *://rosettacode.miraheze.org/wiki/Special:Contributions?end=&limit=5000&namespace=all&start=&tagfilter=&target=*
// @match        *://rosettacode.miraheze.org/wiki/Special:Contributions*
// @grant        none
// @license    MIT
// ==/UserScript==


(function() {
    'use strict';

    function countAndDisplayDistinctTitles() {
        // Find the target section
        var section = document.querySelector('section.mw-pager-body');
        if (!section) return;

        // Collect all title attributes from 'a' elements
        var liElements = section.querySelectorAll('a.mw-contributions-title');
        var titlesSet = new Set();
        liElements.forEach(function(aElement) {
            var title = aElement.getAttribute('title');
            if (title && !title.startsWith('User:') && !title.startsWith('File:')) {
                titlesSet.add(title);
            }
        });
        console.log('titlesSet=',titlesSet);

        // Count distinct titles
        var countDistinctTitles = titlesSet.size;

        // Create a new element to display the count of distinct titles
        var resultDisplay = document.createElement('div');
        resultDisplay.textContent = `(RosettaCode Contribution Records Counter) Count of distinct titles: ${countDistinctTitles}`;
        resultDisplay.style.backgroundColor = 'yellow'; // Set the background color to yellow
        resultDisplay.style.color = 'blue'; // Optional: Set text color to blue for better readability
        resultDisplay.style.padding = '10px'; // Optional: Add some padding
        resultDisplay.style.marginBottom = '10px'; // Optional: Add some margin at the bottom
        resultDisplay.style.border = "2px solid black";

        // Insert the results as the first child of the section
        if (section.firstChild) {
            section.insertBefore(resultDisplay, section.firstChild);
        } else {
            section.appendChild(resultDisplay);
        }
    }

    // Assuming this function is called when the document is fully loaded
    window.addEventListener('load', countAndDisplayDistinctTitles);
})();