Wikipedia:nlwikibots
nlwikibots is een project op Toolforge. Het account is bedoeld voor bots, scripts of webtools waar Wikipediagebruikers veel waarde aan hechten. Denk daarbij aan onderhoudstaken of het publiceren van databasegegevens.
Het doel is dat zulke bots niet meer per se door één persoon onderhouden moeten worden. Dat betekent niet dat alles door meerdere gebruikers onderhouden moet worden, maar vooral dat de continuïteit beter gewaarborgd wordt.
Toegang bewerken
Op dit moment hebben Multichill, Siebrand, Valhallasw, Silver Spoon, Akoopal en Frank Geerlings toegang tot het account. Het staat echter open voor andere gebruikers die bots, scripts of webtools erin onder willen brengen. Plaats daarvoor een bericht op de overlegpagina of mail naar nlwikibots-l lists.wikimedia.org.
De broncode van de verschillende bots is te vinden op github.
Op wikitech:Nova_Resource:Local-nlwikibots/SAL is het 'Server Admin Log' van nlwikibots te vinden. Voeg daar een regel toe als je iets aangepast hebt; dat kan ook via IRC op #wikimedia-cloud met !log tools.nlwikibots <tekst>
Regels bewerken
- Zorg er alsjeblieft voor dat andermans tools niet omvallen door jouw werkzaamheden.
- Hanteer alsjeblieft een een logische mapstructuur:
- ~/lib: libraries.
- ~/bin: binaries of scripts. Deze map staat als eerste in $PATH.
- ~/bots/<taak>: bestanden etc. om een specifieke bottaak te draaien.
- ~/log/<naam>: logbestanden, bijvoorbeeld voor <taak>.
- Beschrijf elke bot etc. in een readme, bijvoorbeeld ~/bots/<taak>/readme.
- Kondig het aan wanneer je libraries wilt updaten. Ze kunnen namelijk door anderen gebruikt worden.
- Mails aan nlwikibots-l lists.wikimedia.org worden aan alle maintainers gestuurd. De lijst van maintainers is ook te zien op de voorpagina van het Tools-project.
Huidig gebruik bewerken
Op dit moment draaien de volgende bots onder het beheer van nlwikibots:
- Nlwikibots (heeft een botbitje)
- Archivering
- Tbpmelder door Frank Geerlings: stelt gebruikers op de hoogte van verwijdernominaties van pagina's
- Tvpupdater door valhallasw: voegt dagelijks een nieuwe TBP-pagina toe aan WP:TBP
- Afbeelding van de dag-updater door Frank Geerlings: Kopieert foto's en onderschriften van commons naar Hoofdpagina
De bijbehorende broncode is te vinden op Github: [1].
Voormalige gebruikersnamen: Erwin85TBot, E85Bot, Valhallasw-toolserver-botje
Tvpmelder bewerken
Teksten gebruikt door tbpmelder zijn terug te vinden op:
Aanwijzingen bewerken
Cron jobs bewerken
Je kunt cron jobs in ~/cronfile plaatsen. Vervolgens moet je in crontab de nieuwe configuratie laden:
- $ crontab ~/cronfile.
Bots moeten tegenwoordig via SGE gestart worden. Dit doe je door een wrapper script te schrijven dat je bot runt, met daarin een aantal extra SGE-commando's. Het volgende template kan je daarvoor gebruiken.
- ~/bin/<taak>
#!/bin/bash #$ -l h_rt=0:30:00 # max runtime #$ -l h_vmem=350M # max memory use, including shared libs #$ -N tvpupdater-valhallasw # naam van taak, eindigt in naam eigenaar #$ -M valhallasw@arctus.nl #$ -m a # alleen mails bij een abort (vanwege bv. runtime-overschrijding of out-of-memory) #$ -b y # draai over netwerkschijf ipv het bestand te kopiëren #$ -o /dev/null # output naar /dev/null #$ -e $HOME/log/tvpupdater-valhallasw.err cd ~/bots/<taak> python <taak>.py
Vergeet niet het script executable te maken (chmod 755 wrapper
). Als commando in de cronfile gebruik je vervolgens qsub $HOME/pad/naar/wrapper > $HOME/log/crontab/botnaam
.
Mocht je logging preciezer willen instellen, dan kun je een bashscript gebruiken. In dat script verwijs je stdout naar een bestand en stuur je stderr via een pipe naar mail. Bijvoorbeeld:
python <taak>.py 2>&1 >> ~/log/<taak>/$(date +\%Y\%m\%d).log | mail -e -s "Cron error: <taak>" <e-mailadres>
NB. Let op de volgorde van 2>&1 en de >>! Eerst de 2>&1, dan de >> - anders krijg je je stderr in je logfile in plaats van in je inbox.
Logging bewerken
Logs van veranderingen worden bijgehouden op wikitech:Nova Resource:Tools.nlwikibots/SAL.
Beheerders kunnen op #wikimedia-cloud via '!log tools.nlwikibots <bericht>' een bericht plaatsen.