Utente:Alfiobot/benvenuto.py
Aspetto
###################################################### # # benvenuto.py # # Bot per dare il benvenuto agli utenti (sono diventati troppi per farlo a mano...) # # Scarica il log dei nuovi utenti (fino ad un limite predefinito) e, per ogni utente # che ancora non ha pagina di discussione, crea il seguente testo: # # {{benvenuto|nome=<nomeutente>}} # # Basato sulle librerie pywikipediabot. import urllib, re import wikipedia # No. of users to check limit = 250 # URL of the newuser log url = "http://it.wikipedia.org/w/index.php?title=Speciale:Log&type=newusers&user=&page=&limit=%d" % limit # Search regular expression to find links like this (and the class attribute is optional too) #<a href="/w/index.php?title=Discussioni_utente:Urizon9&action=edit" class="new" title="Discussioni utente:Urizon9">Discussione</a> regexp = '<a href="([^"]*?)"[^<]*?title="Discussioni utente:(.*?)">Discussione</a>' # Modify user-agent string class AppURLopener(urllib.FancyURLopener): version = "Alfiobot/1.0" urllib._urlopener = AppURLopener() # Modify summary text wikipedia.setAction("benvenuto") # Read newuser log print "Getting newuser log (last %d new users)..." % limit f = urllib.urlopen(url) text = f.read() f.close() r = re.compile(regexp, re.UNICODE) # Loop over the newuser log and put welcome messages on empty discussion pages pos = 0 while 1: m = r.search(text, pos) if m == None: break pos = m.end() username = m.group(2) link = m.group(1) if link.find('/w/index.php?') == 0: print "User %s needs welcome" % username page = u'Discussioni utente:%s' % username p = wikipedia.Page(wikipedia.getSite(), page) # Additional check: make a get to prevent the rare case where a discussion page # is created between the newuser log download and now. try: p.get() except wikipedia.NoPage: newtext = u'{{benvenuto|nome=%s}}' % username p.put(newtext) else: print "User %s is OK" % username