WikiGuc

MediaWiki User Contributions Extractor

Cos’è?

WikiGuc è uno strumento per estrarre e archiviare in un database PostgreSQL locale i contributi degli utenti MediaWiki, inclusi i contributi globali su tutti i progetti Wikimedia (Wikipedia, Commons, Meta, Wikidata e altri). Consente di tracciare sistematicamente la storia editoriale di uno o più contributori con aggiornamenti incrementali.

Perché API live e non data dump?

I dump completi di Wikimedia pesano diversi terabyte. Estrarre i contributi di N=1 utente da N=tutti gli utenti è computazionalmente inefficiente. WikiGuc usa le API live di MediaWiki per ottenere dati mirati, in tempo reale e nel rispetto della netiquette API.

Architettura

graph TD
    A[MediaWiki API] -->|Pywikibot| B[Extraction Layer]
    C[XTools API] -->|globalcontribs| B
    B -->|Contributi| D[PostgreSQL]
    D -->|Query| E[Web Interface]
    D -->|CLI| F[wikiguc CLI]

    subgraph Storage
        D
        G[monitored_users]
        H[wiki_projects]
        I[user_contributions]
    end

    D --- G
    D --- H
    D --- I

    style D fill:#336791,color:#fff
    style B fill:#4C8BF5,color:#fff

Funzionalità principali

Schema database

Tre tabelle normalizzate con schema ibrido relazionale-JSONB:

Tabella Contenuto
monitored_users Utenti tracciati con timestamp ultimo aggiornamento
wiki_projects Domini wiki normalizzati (en.wikipedia.org, commons.wikimedia.org, …)
user_contributions Contributi con colonne relazionali + raw JSON completo

La tabella user_contributions combina colonne indicizzate (mw_revid, page_title, revision_timestamp, size_bytes) con una colonna JSONB raw_api_response che preserva l’intera risposta API per flessibilità futura.

Estrazione a due livelli

Livello Strumento Uso
Primario Pywikibot Framework ufficiale MediaWiki con paginazione automatica e rate limiting built-in
Fallback XTools API Endpoint globalcontribs per aggregazione cross-wiki in una singola chiamata

CLI

wikiguc init                              # Crea tabelle database
wikiguc add-user "NomeUtente"             # Aggiungi utente al tracciamento
wikiguc list-users                        # Lista utenti tracciati
wikiguc extract "NomeUtente"              # Estrai contributi (wiki default)
wikiguc extract "NomeUtente" --global     # Tutti i wiki (globale)
wikiguc extract "NomeUtente" --incremental  # Solo nuovi contributi
wikiguc validate                          # Valida installazione

Interfaccia Web

A partire dalla versione 0.3.0, WikiGuc include un’interfaccia web basata su FastAPI con template Jinja2 per la visualizzazione dei contributi estratti, containerizzata con Docker Compose.

Stack tecnologico

Stato del progetto


WikiGuc consente di preservare e analizzare la storia editoriale dei contributori Wikimedia nel rispetto delle policy API.