# A pywikibot script to dump out all users who can vote in the ArbCom 2017 elections# Defined as any unblocked user who on 1 November 2017 00:00 UTC has at least 150 mainspace edits and 4 days' service# Usage : python aceusers.py start_from output_fileimportsysfromdatetimeimportdatetimeimportpywikibotfrompywikibot.dataimportapistartfrom=sys.argv[1]or'!'output=sys.argv[2]out=open(output,'w')site=pywikibot.Site('en','wikipedia')minEdits=150minDays=4cutOff=datetime(2017,11,1,0,0,0)augen=site._generator(api.ListGenerator,type_arg='allusers',auprop='editcount|registration|blockinfo',aufrom=startfrom,auexcludegroup='bot',auwitheditsonly=1)foruserpropsinaugen:username=userprops['name'].encode('utf-8')printusernameeditCount=int(userprops['editcount'])ifminEdits<=editCount:indeffed=Falseif'blockexpiry'inuserpropsanduserprops['blockexpiry']=='infinity':indeffed=Trueifnotindeffedanduserprops['registration']:reg=datetime.strptime(userprops['registration'],'%Y-%m-%dT%H:%M:%SZ')diff=cutOff-regifdiff.days>=minDays:ucgen=site._generator(api.ListGenerator,type_arg='usercontribs',ucuser=userprops['name'],ucstart=cutOff,ucprop='',namespaces=0,total=minEdits)ifminEdits<=len(list(ucgen)):print'storing '+usernameout.write(username+'\n')