# -*- coding: utf-8 -*-
# Author Simon Bijl, Edo de Roo, user:bdijkstra
# 2015, MIT-License
import sys
import datetime
from datetime import datetime, date, time
from itertools import islice
import pywikibot
from pywikibot.data.api import ListGenerator
debugmode = False
site = pywikibot.getSite(u'nl')
editLimit = 500
now = site.getcurrenttime()
oneYearAgo = now.replace(now.year - 1)
def main():
wikiString = u'Onderstaande tabel geeft een indicatie van de activiteit van een moderator. De vermelde aantallen zijn het aantal niet-verwijderde bijdragen van de moderator in het afgelopen jaar. Alleen moderatoren met minder dan %d van zulke bijdragen worden getoond. Laatste update: ((subst:#timel:Y-m-d H:i (T))). \n\n{| class="wikitable sortable"\n! Gebruikersnaam || Aantal\n' % editLimit
sysopNames = getSysopNames() # Get sysop list
# Process for each sysop:
for username in sysopNames:
editCount = lastYearEditCount(username)
if editCount < editLimit:
tableRow = u'|-\n| [[Gebruiker:%(u)s|%(u)s]] || style="text-align:right" | %(ec)s\n' % { 'u':username, 'ec':editCount }
wikiString += tableRow
if debugmode:
print(tableRow)
wikiString += u'|}\n\n[[Categorie:Wikipedia:Moderatoren]]\n'
if not debugmode:
pywikibot.Page(site, u'Wikipedia:Regelingen_rond_moderatoren/Activiteit_moderatoren').put(wikiString, comment=u'Update') #Save page
# Returns the user's number of (non-deleted) edits in the last year,
# capped at `editLimit`+2
def lastYearEditCount(username):
user = pywikibot.User(site, username)
contributions = user.contributions(total=editLimit+2, end=oneYearAgo)
editCount = 0
for contribution in contributions:
editCount += 1
return editCount
# Returns list with usernames of all sysops active on site
def getSysopNames():
array = []
users = ListGenerator('allusers', site=site, augroup='sysop')
for user in users:
array.append(user['name'])
return array
if __name__ == '__main__':
try:
main()
finally:
pywikibot.stopme()