Module:NPO Radio 2 Top 2000/doc
Dit is de documentatiepagina voor Module:NPO Radio 2 Top 2000. Deze pagina bevat uitleg, informatie en overige inhoud die geen onderdeel is van de originele modulepagina. |
Deze module gebruikt de volgende sjablonen: |
Deze module maakt gebruik van de volgende Wikidata-eigenschap:
|
Deze module maakt gebruik van data afkomstig uit Module:NPO Radio 2 Top 2000/data. |
Module:NPO Radio 2 Top 2000
bewerkenDeze module wordt gebruikt om tabellen aan te maken voor noteringen in de NPO Radio 2 Top 2000, een eindejaarslijst die sinds 1999 jaarlijks een week lang non-stop wordt uitgezonden op radio, televisie en internet.
Input
bewerkenArgumenten
bewerkenDe module moet worden aangeroepen via het sjabloon {{Tabel NPO Radio 2 Top 2000}}.
Twee verplichte argumenten worden bepaald door het sjabloon: het argument bezig
(ja/nee) en laatste_editie
(jaartal: xxxx). De eerste geeft aan of er op dit moment gewerkt wordt aan het verwerken van nieuwe noteringen, de tweede is het jaartal van de recentste lijst, bij bezig=ja
is dat het jaartal van de nieuwe lijst.
Daarnaast zijn er twee optionele argumenten die meegegeven kunnen worden aan het sjabloon: qid
(Wikidata-ID: Qxxxx of lijst van Wikidata-ID's gescheiden door komma's: Qxxxx,Qxxxx,Qxxxx) en artiesten
(ja/nee). Eerstgenoemde kent twee mogelijkheden: één Wikidata-ID behorend bij een artiest met noteringen in de hitlijst óf één of meerdere Wikidata-ID's behorend bij nummers met noteringen in de hitlijst (ongeacht of ze van dezelfde artiest zijn). Met het argument artiesten
kan worden aangegeven of achter de titel van het nummer de medeartiesten getoond moeten worden, iets wat alleen bepaald kan worden als een tabel wordt gemaakt voor de noteringen van een of meerdere nummers. In het geval van een tabel van alle nummers met noteringen van een artiest, worden medeartiesten standaard getoond, alsmede wanneer het sjabloon op Lijst van Radio 2-Top 2000's wordt aangeroepen (wat niet kan door limitaties in de Wikimedia-software).
Databestand
bewerkenDe daadwerkelijk gebruikte data staat opgeslagen in het databestand: Module:NPO Radio 2 Top 2000/data. Zie die pagina voor uitleg over de structuur van de data en definities van de verschillende kenmerken.
Werking
bewerkenDe module bestaat uit twee functies. De functie main is de enige aan te roepen functie, de lokale functie Top2000table wordt door eerstgenoemde aangeroepen. De sjabloonparameters hebben hier een andere naam: bezig=wip
en laatste_editie=last_edition
.
main
bewerkenDe functie main begint met de definitie van de twee verplichte argumenten en het definiëren van enkele strings. Daarna wordt het argument qid
omgezet in een lijst met Wikidata-ID's (al dan niet met de lengte 1) of, als dat argument niet was opgegeven, is de enige Wikidata-ID die van de Wikidata-pagina gekoppeld aan de pagina waarvandaan het sjabloon wordt aangeroepen. Wat vervolgens gebeurt, verschilt per situatie:
- Als de lijst lengte 1 heeft en die ene Wikidata-ID hoort bij een nummer met noteringen in het databestand, dan wordt een tabel gemaakt met de noteringen van dat nummer.
- Als de lijst lengte 1 heeft en die ene Wikidata-ID hoort bij een artiest met nummers met noteringen in het databestand, dan wordt een tabel gemaakt met de noteringen van die nummers.
- Als de lijst een lengte langer dan 1 heeft en al die Wikidata-ID's horen bij een nummer met noteringen in het databestand, dan wordt een tabel gemaakt met de noteringen van die nummers.
- Is geen van deze drie opties het geval, dan wordt een gepaste foutmelding geretourneerd. Pagina's met foutmeldingen komen terecht in Categorie:Wikipedia:Foutmelding NPO Radio 2 Top 2000.
Er is in de code eigenlijk nog een vierde optie, dat is het aanroepen van het sjabloon op de pagina Lijst van Radio 2-Top 2000's, waarbij de lijst met Wikidata-ID's leeg zou kunnen blijven. Het idee is dat de tabel dan een tabel maakt met alle nummers erin, maar vanwege limitaties in de Wikimedia-software werkt dit niet.
Top2000table
bewerkenDeze functie creëert een tabel. Van de functie main krijgt deze functie drie relevante argumenten:
keys
: een lijst met Wikidata-ID's van de nummers die in de tabel komen te staan.data
: een lijst met dataobjecten van die nummers, afkomstig uit het databestand.artist_qid
: de Wikidata-ID van de artiest (alleen in het geval van optie 2 hierboven, of in het geval van de niet-werkende optie 4 de string list).
Op basis van dit laatste argument onderscheidt deze functie drie soorten tabellen: een nummertabel (artist_qid
is leeg), een artiestentabel (artist_qid
is een Wikidata-ID) of de volledige lijst (artist_qid
is lijst). Als er maar één nummer is met één notering, wordt geen tabel maar een simpele zin geretourneerd. In het geval van een artiestentabel is het nummer gelinkt, verder hangt de precieze output af van de waarde van wip
in combinatie met het jaartal van die ene notering en een eventueel titelextra
-veld, afkomstig uit het databestand.
Vervolgens wordt een dictionary gemaakt met de jaartallen waarin minstens een van de nummers in de aan te maken tabel een notering had. Daarna wordt het title
-veld in data
uitgebreid met eventuele titelextra en wordt voor ieder nummer de hoogste notering (laagste waarde) opgeslagen in een nieuw veld highest_position
.
Daarop volgt het meest geavanceerde deel van de code, het aanmaken van de tabelinhoud. Jaren waarin geen enkel van de beschouwde nummers een notering had, krijgen ook een kolom, maar worden waar mogelijk gecombineerd met aangrenzende jaren zonder noteringen. Nummers zonder noteringen in bepaalde jaren of in zogenoemde tussenjaren (waarin geen enkel nummer een notering had) krijgen een kruisje (×) als ze toen nog niet uitgebracht waren en een streepje (-) als het nummer al wel bestond. Bij aangrenzende tussenjaren (die dus een kolom delen) wordt hiervoor gekeken naar het laatste jaar in die periode. Er wordt voor gezorgd dat iedere hoogste notering dikgedrukt wordt gemaakt. Als er aan de huidige editie gewerkt wordt (wip=ja
), wordt een kolom met vraagtekens toegevoegd, al dan niet voorafgegaan door een of meerdere tussenjaren. Al wel bekende noteringen uit de laatste editie worden dan al wel ingevuld, bijvoorbeeld die in de top 10 die al een week eerder bekend is dan de rest van de lijst.
Het aanmaken van de tabelinhoud wordt afgesloten met het opsommen van de medeartiesten voor ieder nummer, waarbij deze alleen genoemd worden in het geval van een artiestentabel, de volledige lijst of een nummertabel met artiesten=ja
. Er wordt niet gelinkt bij een nummertabel. Ten slotte wordt alle tabelinhoud achter elkaar gezet (titel, medeartiesten en posities met sterretjes, streepjes en vraagtekens) zodat een deel van de daadwerkelijke tabel ontstaat. Als laatste worden noten toegevoegd, waar relevant, die uitleg bevatten over de betekenis van streepjes, kruisjes en vraagtekens. Als er niet direct noteringen waren in de eerste editie (1999), wordt bij de eerste kolom in de tabel (behorend bij het eerste jaar met noteringen) hierover een noot getoond. Ook komt er een noot over het jaar van de laatste update van de tabel, indien er in de tabel geen noteringen zijn in de laatste editie (last_edition
) (wat ook het geval kan zijn met wip=ja
op een nummerpagina als geen van de nummers in de nieuwe editie een notering had). Ten slotte wordt de hele tabel in elkaar gezet, inclusief kopcellen, noten en referentielijst en wordt dit als resultaat geretourneerd.