Installeren

Veelgebruikte software voor een Wikipedia-bot is pywikipedia. Daarover gaat de komende handleiding. Ook wordt er vanuit gegaan dat u het besturingssysteem Windows gebruikt, anders kunt u verderop kijken voor instructies. Om een pywikipedia-bot te kunnen gebruiken moet u over de volgende software beschikken:

  • De pywikipedia-code, die te vinden is op de projectpagina van pywikipedia op Sourceforge. U kunt dit downloaden via de site (kies voor Files) of via CVS. Via CVS beschikt u altijd over de recentste versie, via de site zelf is dit vaak niet het geval. U wordt aangeraden om CVS te gebruiken, de meest recente versie is meteen via een CVS-programma te downloaden van sourceforge.net. Uitleg hierover kunt u vinden op sourceforge.net, bijv. SourceForge.net: CVS Client: TortoiseCVS with PuTTY
  • Kiest u er niet voor om de CVS-versie te gebruiken, dan heeft u nog een tar.gz-compressiebestand-uitpakprogramma nodig (bijvoorbeeld WinZip).
  • Het pakket Programmeertaal Python, welke te vinden is op Python.org.
  1. Maak voor het gemak een nieuwe map voor de bot, bijvoorbeeld C:\Bot.
  2. Installeer vervolgens Python, instructies hiervoor vindt u op de website van Python. Dit kan in de door het installatieprogramma aangegeven map, maar ook bijvoorbeeld in de map C:\Bot\Python.
  3. Installeer daarna de pywikipedia-code in bijvoorbeeld C:\Bot\Pywikipedia. Dit doet u eenvoudigweg door het gedownloade tar.gz-compressie-bestand uit te pakken met het eerder gedownloade programma. Wanneer u de CVS-methode heeft gekozen, hoeft u niet eens uit te pakken.

Gereedmaken

  • Maak op Wikimedia NL een gebruikersnaam aan voor uw bot. Bij voorkeur een naam waaruit blijkt dat het gaat om een bot, bijvoorbeeld BotGebruikersnaam.
  • Voeg dit account toe aan de lijst van bots op Wikimedia NL.
  • Maak een tekstbestand aan met de naam "user-config.py" in de map met de pywikipedia-software en plaats daarin de volgende tekst:
usernames['wikimedia']['nl']='BotGebruikersnaam'
mylang='nl'

Eventueel aangevuld met onderstaande zin, indien ook pydot wordt gebruikt voor het laten zien van problemen met interwiki in een afbeelding

interwiki_graph = True
  • Start een DOS-scherm (vanuit Windows (via "Start", "Run..." en typ cmd) of een ander programma dat deze mogelijkheid biedt) en ga naar de map waar de code van pywikipedia in staat. Dat doet u door middel van het commando cd, en wel als volgt:
cd C:\Bot\Pywikipedia
  • Nu is het zaak onze bot in te loggen. Dit hoeft doorgaans maar eenmalig en voert u eenvoudig uit door het daartoe geschreven Python-script uit te voeren:
login.py
  • Er wordt nu gevraagd om de naam en het gekozen wachtwoord van het gebruikersprofiel van de bot. Nu bent u ingelogd op Wikimedia NL.

Gebruik

Open wederom een DOS-scherm, bijvoorbeeld met cmd.exe, en ga naar de map met de pywikipedia-code:

cd C:\Bot\Pywikipedia

Nu kunt u een script uitvoeren om uw bot aan het werk te zetten. De verschillende scripts hebben verschillende functies, die vaak bovenaan het script kort worden besproken. Hieronder worden enkele kort uitgelegd.

solve_disambiguation.py

Met deze functie kunnen doorverwijspagina's worden afgehandeld. Er wordt voor gezorgd dat links in artikelen direct naar het juiste artikel wijzen, en niet via een doorverwijspagina.

Type het volgende in:

solve_disambiguation.py -optie xxx
  • waarbij xxx de naam is van de doorverwijspagina die u wilt afhandelen.
  • volgende opties kunnen worden meegegeven:
  • -pos:XXXX, hiermee wordt een alternatieve doorverwijsoptie meegegeven
  • -redir, als de pagina een redirect is, wordt dit als enige alternatief gebruikt. Wordt dit commando niet meegegeven, dan worden ook de opties gebruikt, die op de doorverwezen pagina staan. Als de pagina geen redirect pagina is, breekt de bot de actie af

De bot zal even zoeken en wellicht een aantal pagina's vinden die naar de doorverwijspagina verwijzen. Het is nu de taak van de botbestuurder om de juiste betekenis toe te kennen aan de doorverwijzingsterm in de gevonden artikelen. Deze functie is half-automatisch, en na elke aangepaste pagina kan de volgende pagina worden voorzien van de juiste doorverwijsbetekenis.

Per gevonden verwijzing zijn de volgende codes beschikbaar:

Een getal: wijzig de link zodanig dat het verwijst naar de pagina die met het getal correspondeert.
r+x (waarbij x een getal is): wijzig zowel de link als de tekst van de link op die wijze.
s: wijzig deze link niet.
n: wijzig deze hele pagina niet.
u: maak van deze tekst een niet-linkende tekst.
m: toon een groter deel van de tekst van de pagina, zodat u meer gegevens heeft om te beslissen. (Dit kan herhaaldelijk gebruikt worden, de hoeveelheid tekst wordt elke keer bij benadering verdubbeld.)
l: geef de lijst van mogelijke links nog een keer.
a: geef een nieuwe mogelijke link op.
e: ga over tot handmatige bewerking van de pagina (u krijgt dan iets dat vergelijkbaar is met het wijzig-scherm in uw browser).
q: beëindig het programma.

N.B. Er zit een kleine bug in een oudere versie van deze bot, die aan het licht komt zodra binnen tabellen gedisambigueerd wordt. Deze bug is opgelost in versie 1.147.

category.py

Met deze functie kunnen categorieën worden aangepast.

Met

category.py add 

kunnen categorieën automatisch worden toegevoegd aan een lijst van artikelen.

Met

category.py move

kunnen categorieën automatisch worden verplaatst en hernoemd. Dit is vooral makkelijk wanneer er een spelfout in de categorienaam staat.

Type

category.py

in voor een complete lijst met alle opties.

interwiki.py

Interwiki.py voegt interwiki-links toe aan een pagina. Het bekijkt daarvoor de pagina's waar al naar wordt gelinkt, de pagina's waar die pagina's naar linken, enzovoort.

Wanneer u

interwiki.py

invoert, wordt u gevraagd welke pagina u in behandeling wilt nemen.

U kunt ook

interwiki.py xxx

, waarbij xxx de paginanaam is, gebruiken om het proces te versnellen.

Er zijn nu vier mogelijke uitkomsten:

  • De bot vindt geen nieuwe, veranderde of foute links. Het programma wordt beëindigd zonder dat er iets gewijzigd wordt.
  • De bot vindt nieuwe of veranderde links, zonder verdere problemen. De pagina wordt aangepast.
  • De bot vindt dat een interwiki-link niet werkt, en vindt er ook geen alternatief voor. De bot vraagt of je de pagina wilt aanpassen (inclusief het verwijderen van de bewuste link).
  • De bot vindt voor één of meer talen meerdere links, of vindt een link naar een andere pagina in het Nederlands. Dan krijgt u eerst alle talen met meerdere links, en wordt gevraagd er één te kiezen (met een nummer, of n wanneer geen enkele voldoet, of g om helemaal op te houden). Daarna komen de talen met één link, en moet u kiezen tussen a (toevoegen), r (niet toevoegen), l (alles toevoegen) of g (om helemaal op te houden).

Wanneer u alle talen waarvoor links gevonden zijn, gehad hebt, volgt een van de bovenstaande gedragingen.

De interwiki-bot heeft diverse "command line opties". Dit zijn toegevoegde opties die u aan de opdracht kunt toevoegen (bij het opstarten van het script). Ze beginnen allemaal met "-". Sommige hebben daarna een Engels woord, andere een Engels woord gevolgd door ":" en verdere tekst, hier aangegeven als "xxx". Een aantal staan hieronder vermeld:

  • -start:xxx - doe niet slechts één pagina, maar alle pagina's op Wikipedia NL, beginnend (in alfabetische volgorde) met "xxx" (of de eerste pagina daarna). Om werkelijk alle pagina's te doen, kunt u "-start:!" gebruiken.
  • -hint:xx:yyy - kijk of er op taal "xx" een pagina "yyy" is; zo ja, voeg die dan toe alsof het een gevonden pagina was. Als geen 'yyy' gegeven is, wordt de titel van de pagina zelf gebruikt. "xx" kan een taalcode (zoals "en", "de" of "fy") zijn, of speciale codes "10", "20", "30", "50" of "all". Dit geeft 10, 20, 30 of 50 van de grootste Wikipedia's, of alle Wikipedia's met minimaal circa 100 pagina's. -
  • -autonomous - als er een probleem is of er pagina's verwijderd moeten worden, vraag dan niet de gebruiker, maar noteer het in een bestand en ga zonder te wijzigen verder. Dit wordt vooral gebruikt in combinatie met de "-start" optie om snel door de pagina's heen te gaan.
  • -askhints - vraag om een of meer hints.
  • -untranslated - als askhints, maar vraagt alleen als de pagina nog geen interwiki-links heeft.
  • -untranslatedonly - als untranslated, maar werkt uitsluitend op pagina's die nog geen interwiki-links hebben.
  • -force - stel geen vragen als een of meerdere interwiki-links verwijderd worden, maar doe dat gewoon.
  • -confirm - vraag altijd voordat een of meerdere interwiki-links veranderd worden.
  • -restore - als het programma (door control-C of door een bug) onderbroken wordt, wordt in een speciaal bestand een lijst aangemaakt met de pagina's waar de robot mee bezig was. -restore laat de robot werken aan de laatst aangemaakte dergelijke lijst.
  • -continue - werkt als een combinatie van "-restore" en "-start": nadat de pagina's in de file doorgewerkt zijn, wordt er verder gegaan alsof er "-start:xxx" stond met als "xxx" de laatste pagina in het bestand. Handig voor een "-start" die over een aantal dagen loopt.
  • - array:xx - de lijst van pagina's waaraan de interwikibot tegelijkertijd werkt, bevat xx artikelen. Vooral handig in combinatie met de optie -untranslatedonly.

Er zijn nog meer opties, en de meeste andere bots hebben ook opties. Bekijk het eerste deel van de broncode om deze te zien.

Enkele commando's worden door meerdere scripts herkend:

  • -lang:xx - werk op taal "xx" in plaats van mijn standaardtaal.
  • -throttle:nn - wacht nn seconden tussen het ophalen van 2 pagina's. Standaard is 5 seconden, een aantal bots (solve_disambiguation.py en imagetransfer.py) zijn zelf uitgerust met commando's om ze niet te laten wachten.
  • -putthrottle:nn - wacht minimaal nn seconden tussen het bewerken van twee pagina's. Standaard is 60 seconden.

redirect.py

redirect.py actie [-argument]

actie:

  • double - lost de problemen met redirects op die naar andere redirects verwijzen
  • broken - deze actie verwijdert redirects die naar niet-bestaande pagina's wijzen. Dit kan alleen door moderators worden gedaan.

-argument:

  • xml - haal informatie van een lokale XML-dump (http://download.wikimedia.org), of met "-xml:filename.xml" van een lokale, op de harde schijf van de computer, opgeslagen XML-dump. Zonder dit argument zal de informatie van een speciale pagina worden gehaald.

replace.py

Replace.py is uitstekend geschikt om veel gemaakte taalfouten te verbeteren. Tevens is het makkelijk als binnen een file veel keer dezelfde fout is gemaakt en je bijvoorbeeld 10 keer dezelfde benaming van een vlag wilt veranderen naar de nieuwe naam.

Voor de taalfouten is het noodzakelijk dat je een recente xml-dump gebruikt. Hoe daar aan te komen vindt men hieronder bij #Dumpfile.

Een aantal voorbeelden van een syntax:

  • replace.py -xml:pages_current.xml -namespace:0 "produkt" "product"
  • replace.py -cat:Belarus "Belarus" "Wit-Rusland"

De eerste "tekst" (de foute) is de tekst die vervangen wordt door de tweede "tekst".

De volgende commando's worden gegeven om de plaats aan te geven waar de bot moet werken (je moet 1 van deze 4 kiezen):

  • -xml = Haal de informatie uit de lokaal opgeslagen sqldump, Op deze manier "-xml:filenaam" - bijvoorbeeld -xml:pages_current.xml
  • -file = werk op een aantal pagina's die gegeven zijn in een lokale tekst file. De robot leest alle [[wiki link]] aangegeven in deze file. Op deze manier "-file:filenaam".
  • -cat = Werk op alle pagina's die in een bepaalde categorie worden opgevoerd. Op deze manier "-cat:categoryname".
  • -page = Werk op een enkel artikel. Op deze manier "-page:artikelnaam". Als je deze parameter meerdere keren ingeeft dan kan de bot in 1 keer meerdere pagina's afhandelen

De volgende opties kunnen meegegeven worden:

  • -regex = staat voor regular expressions. Als dit niet in de syntax wordt opgenomen wordt alleen tekst gelezen
  • -except:XYZ - Artikelen met XYZ moeten niet veranderd worden. Met -regex is XYZ reguliere uitdrukking. XYZ geldt niet voor titels van artikelen, alleen voor tekst binnen artikelen.
  • -fix:XYZ - een van de voorgedefinieerde taken uitvoeren bijvoorbeeld HTML tags naar wiki syntax omzetten
  • -namespace:n - werkt alleen met een xmldump, 0 staat voor de artikelen (mag meerdere malen worden opgenomen om meerdere namespaces te selecteren)
  • -always - niet navragen of de verandering moet worden uitgevoerd maar altijd uitvoeren.

Opmerking: wanneer men Xxx -> xxx uitvoert, kan men die vervanging laten vooraf gaan door een replace.py werkend de links naar Xxx (-ref:Xxx) waarbij je [[Xxx|xxx]] vervangt door [[xxx]]. Wanneer men dit immers niet doet, krijgt men na de vervanging [[xxx|xxx]] (twee keer hetzelfde dus). Dat heeft geen enkel nut, maakt de pagina langer en kan verwarrend werken ten opzichte van nieuwe gebruikers die dit zien in het 'bewerk'-venster en denken dat dit zo moet.

table2wiki.py

Voorbeeld van de eenvoudigste syntax:

  • table2wiki.py "artikelnaam"

Op deze manier wordt maar 1 artikel veranderd.

Het proces kan ook geautomatiseerd aflopen voor de gehele nl:wikipedia, daarvoor is een xml-dump nodig (zie bij replace.py hoe dat te verkrijgen is):

  • table2wiki.py -xml:20050406_cur_table.xml -lang:nl

-xml = naam van de xmldump en met -lang:nl geef je aan dat in de samenvatting tekst Nederlands wordt gebruikt.

Let op: elke verandering moet gecontroleerd worden. Deze bot is niet geheel vrij van bugs. Hij geeft weliswaar aan dat er mogelijke fouten zijn opgetreden, maar waakzaamheid is gewenst.

upload.py

Upload.py zorgt voor het uploaden van afbeeldingen. Er zijn drie mogelijkheden:

  • upload.py afbeelding.png
  • upload.py http://www.ergens.nl/afbeelding.png
  • upload.py -wiki:xx afbeelding.png

Het eerste commando uploadt een afbeelding dat momenteel op uw harde schijf staat, het tweede een afbeelding op een willekeurige URI, het derde een afbeelding op één van de andere Wikipedia's. Upload.py werkt niet wanneer uw bot niet is ingelogd (in tegenstelling tot de andere bots, die werken dan wel, maar doen hun wijzigingen anoniem, wat als niet netjes wordt beschouwd).

pagefromfile.py

pagefromfile.py zorgt voor het uploaden van nieuwe artikelen in een door de gebruiker voorbereid bestand.

Het (Utf) tekstbestand moet als volgt worden aangemaakt. Elk artikel moet worden afgebakend met een start-code (b.v. Start) en een eindcode (b.v End). Als artikel-titel wordt de tekst tussen ''' gebruikt. Er kunnen dus vele artikelen in 1 bestand staan!

Start Boek A is geschreven door schrijver B in 1990. End
Start Boek C is geschreven door schrijver B in 1990. End

Andere scripts

Er zijn nog een heel stel andere scripts. U kunt bekijken wat ze doen en hoe ze bediend moeten worden in het bovenste (Engels- in plaats van Pythontalige) deel van de broncode (of, als het dan nog niet duidelijk is, kunt u het André Engels vragen). Op het moment van schrijven zijn de volgende bots bruikbaar:

  • brackethttp
  • catall
  • category
  • check_extern
  • editarticle
  • getimages
  • imageharvest
  • imagetransfer
  • interwiki
  • login (één keer uitvoeren voor elke taal)
  • replace
  • solve_disambiguation
  • table2wiki
  • template
  • test
  • touchall
  • upload
  • warnfile
  • windows_chars

De volgende scripts zijn hulpprogramma's die bestanden aanmaken voor andere bots:

  • extract_names
  • extract_wikilinks
  • splitwarning

De volgende scripts gebruiken SQL-dumps:

  • find
  • redirect

De volgende scripts zijn verouderd, of zijn slechts voor een specifiek doel of een specifieke taal gemaakt en niet bruikbaar voor Wikipedia NL:

  • copy_table
  • pagelist
  • saveHTML
  • sqldump
  • standardize_interwiki
  • us-states
  • WdT

De volgende Python-bestanden zijn geen bots, maar worden gebruikt door andere bots:

  • catlib
  • commons_family
  • config
  • date
  • family
  • gui
  • lib_images
  • logger
  • mediawiki_messages
  • meta_family
  • titletranslate
  • translator
  • unequal
  • WdTXMLParser
  • wikibooks_family
  • wikipedia
  • wikipedia_cd_fork_family
  • wikipedia_family
  • wikiquote_family
  • wikitravel_family
  • wiktionary
  • wiktionary_family
  • xmltest

Andere besturingssystemen

Hoewel het bovenstaande voor Windows is geschreven, gaat het bij Unix-gebaseerde besturingssystemen zoals Linux vrijwel hetzelfde. Enkele verschillen zijn:

  • Python is bij sommige distributies al toegevoegd, dan kunt u dat dus overslaan.
  • Sommige bots werken niet 'automatisch'. In plaats van "botnaam.py" moet u dan "python botnaam.py" gebruiken.
  • Mac OS X:
    • Bij Mac OS X maakt het programma Teksteditor een pagina in RTF-formaat aan. Dit is niet bruikbaar voor een user-config.py bestand. Gebruik om user-config.py aan te maken een programma als BBEdit of TextMate.
    • Bij Mac OS X is python al geïnstalleerd, dus dat is niet meer nodig, en het aanroepen van een script gaat via de terminal (programma's → hulpprogramma's → terminal) en dan navigeer je naar de map, zoals uitgelegd. Het script voor je uit met het commando python script.py

Dumpfile

De laatste dumpfile van Wikipedia is beschikbaar XML op deze plaats: http://download.wikimedia.org/nlwiki/latest/ . Voor de meeste toepassingen volstaat het downloaden van nlwiki-latest-pages-articles.xml.bz2.

Vroeger werd ook een SQL-bestand voorzien, maar deze wordt niet meer geactualiseerd: het laatste bestand is van 23-06-2005. Indien u MySQL wil gebruiken is een SQL-file echter nodig. Hiertoe kan XML2SQL gebruikt worden, of kan een Perl-script uitgevoerd worden. Het Perl-script bevindt zich in dit artikel als commentaar in de tekst, omdat anders fouten kunnen ontstaan bij het overnemen van de tekst in de scriptfile (druk dus op bewerk om het script te zien).

  • Om dit script te kunnen uitvoeren is een Perl-programma nodig. Onder windows kan ActivePerl gebruikt worden. Dit programma kan gedownload worden en dan volgens instructies van het installatieprogramma geïnstalleerd worden.
  • De scriptfile zoals hier te vinden is, wordt via een editor als een .pl file opgeslagen (bijv: conversie.pl) in de c:/perl/bin directory.
  • Na het downloaden van de XML-file (nlwiki-latest-pages-articles.xml.bz2) moet deze eerst unzipped worden. Dit kan bijvoorbeeld in de directory van de bot (c:/nlpy bijvoorbeeld)
  • Hierna wordt een DOS-schermpje geopend. Ga met het commando cd naar de bot-directory
  • Voor het omzetten van XML in SQL geef volgend commando: type nlwiki-latest-pages-articles.xml | c:\perl\bin\perl c:\perl\bin\conversie.pl > nlwiki-latest-pages-articles.sql
  • De script geeft een foutmelding(en) die beginnen met "duplicate key". Die kan je negeren
  • De SQL-file nlwiki-latest-pages-articles.sql kan gebruikt worden voor MySQL