Wikipedia image quiz – now also in English

I mitt senaste inlägg berättade jag om hur jag skapade ett bildquiz baserat på Wikipedia. Efter att ha spelat det lite grann så är det uppenbart att slumpfunktionen på Wikipedia verkligen fungerar, den levererar nämligen väldigt många artiklar om olika arter. Och det stämmer ju, då svenska Wikipedia i skrivande stund består till ungefär två tredjedelar av sådana artiklar. Det var därför en av idéerna för vidareutveckling var att använda Holgers nya slumpfunktion som filtrerar bort dessa (och då kan det argumenteras för om det ska kallas för slump, men låt gå).  Men i väntan på att lista ut hur jag kan använda den kom jag på e annan enkel idé. I stället för att använda svenska Wikipedia som grund så har jag gjort en variant för engelska. Även om det skulle tillkomma en miljon artartiklar där (i dagsläget har de mycket färre än vad som finns på svenska) så blir det ändå en mycket mindre del då de har över 4,6 miljoner artiklar totalt.

Den engelska varianten hittas på: http://nyval.wtf/quiz/en/

Jag har också lagt till snabbtangenter för att visa svar och ny fråga. På svenska används Alt+v respektive Alt+n (tangentkombinationen kan variera beroende på din webbläsare/operativssystem, hitta din kombination här) och på engelska Alt+s respektive Alt+n.

Wikipedia-bildquiz

I en Facebooktråd om slumpartikelfunktionen på Wikipedia och en ny variant som Holger Motzkau har byggt så kom David Castor med en idé om ett frågesportspel baserat på slumpartiklarna. Hans idé var:

Jag gjorde häromsistens en frågesport där jag visade en bild från en slumpmässig och namnen på den och tre slumpartiklar till. Sedan skulle deltagarna gissa från vilken av de fyra artiklarna som bilden var hämtad.

Det tänkte jag kunde vara något för mig att använda som exempel, jag har ju tidigare testat lite med att programmera i PHP och jag har en ganska bra koll på Wikipedias API. Sagt och gjort, jag hackade på lite och nu finns det en färdig prototyp. Inga finesser, bara en enkel frågesport. Den bygger på att man kan fråga API:et efter slumpade artiklar och att man kan begära bilder från dessa. Jag gör dessutom en dubbelkoll så att inte samma bild används två gånger. En utmärkt hjälp till utvecklingen var API-sandlådan på Wikipedia. (I min kod har jag konsekvent använt mig av pageid istället för title på artiklarna som i exemplen nedan, detta för att jag i PHP inte lyckades få mellanslag i artikelnamn att hanteras på rätt sätt, men principen är ju densamma.)

Slumpade artiklar

Detta görs med kommandot action=query&list=random I mitt fall begär jag dessutom fyra bilder på en gång. Detta är den exakta frågan jag använder: https://sv.wikipedia.org/w/api.php?action=query&list=random&format=json&rnnamespace=0&rnlimit=4

Hämta bilder

Detta görs med kommandot action=query&prop=pageimages Jag passar dessutom på att i samma anrop begära rätt bildstorlek som jag senare kan använda när jag skapar sidan. Här en hårdkodad variant på anropet (jag använder ju egentligen resultatet från slumpartiklarna):
https://sv.wikipedia.org/w/api.php?action=query&prop=pageimages&format=json&piprop=thumbnail%7Cname&pithumbsize=400&pilimit=4&titles=Stj%C3%A4rtand%7CAnka%7CSn%C3%B6%7CMonotypisk
Hittas inga bilder i någon av de fyra artiklarna begär jag fyra nya slumpartiklar. Under mina testomgångar behövde jag aldrig göra detta mer än en gång, men teoretiskt sett så kan detta ta en stund om man har otur med slumpartiklarna.

Kontrollera dubbletter

Jag väljer helt enkelt en bild från föregående omgång och kolla om den finns i någon av de andra artiklarna. Detta kan göras med kommandot action=query&prop=images och att skicka med en bild och artiklarna som ska kollas som parametrar. Här en hårdkodad variant på anropet: https://sv.wikipedia.org/w/api.php?action=query&prop=images&format=json&imimages=File%3ANorthern_Pintails_(Male_%26_Female)_I_IMG_0911.jpg&titles=Stj%C3%A4rtand%7CGr%C3%A4sand%7CAnka%7C%C3%84nder
Finns bilden i mer än en artikel gör jag det superlätt för mig och börjar om med fyra nya slumpartiklar. Här skulle man kunna effektivisera det genom att kolla andra bilder i de fyra första artiklarn (om det fanns några).

Kontextualisera

När jag visar svaret hämtar jag även ut det första stycket från Wikipedia så att man kan få ett sammanhang av ämnet. Detta görs med kommandot action=query&prop=extracts Här en hårdkodad variant på anropet: http://sv.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exintro=&explaintext=&titles=Stj%C3%A4rtand

Resultatet

Det färdiga resultatet hittas på: http://nyval.wtf/bildquiz/

Idéer för utveckling:

  • Poängräknare
  • Använda Holgers slumpgenerator som tar bort de robotskapade artiklarna.

Har du några andra idéer får du gärna höra av dig.