User:MordantMaenad/scripts/welcomeusers2.py
< User:MordantMaenad(Redirected from User:Blue/scripts/welcomeusers2.py)
Jump to navigation
Jump to search
"""
The difference between this and welcomeusers.py is that this accesses the user
creation log directly. This process is much faster, but it does not catch
unregistered (IP) editors, and is thus less inclusive.
by Miranda van Etten (User:Blue on RationalWiki)
"""
import wikipedia, userlib
def getUserContrib(userName, wikiPage):
"""
Returns [None] if user has not made any revisions, returns set of sets
containing user's revision ID and previous revision ID for diff
purposes.
"""
result = []
site = wikipedia.getSite('en', 'rationalwiki')
pageHist = wikiPage.fullVersionHistory()
for marker, l in enumerate(pageHist):
if l[2] == userName:
prevRev = pageHist[marker - 1]
result.append([prevRev[0], l[0]])
return result or None
def getContribList(userName):
"""
Returns a list of pages a user has edited (the Page object).
"""
site = wikipedia.getSite('en', 'rationalwiki')
user = userlib.User(site, userName)
return [t[0] for t in user.contributions()]
def __main__():
site = wikipedia.getSite('en','rationalwiki')
uNum = wikipedia.input(u'Latest users to check: ')
try:
uNum = int(uNum)
except ValueError:
uNum = wikipedia.input(u'Latest users to check (defaults to 25): ')
try:
uNum = int(uNum)
except ValueError:
wikipedia.output(u'You are an imbecile. Defaulting.')
uNum = 25
wikipedia.output(u'Getting user creation log...')
log = site.logpages(uNum, 'newusers')
try:
signature = unicode(wikipedia.input(u'Signature (defaults to none, type "exit" to leave): '))
except UnicodeEncodeError:
signature = unicode(wikipedia.input(u'One more time, with feeling: '))
finally:
pass
if signature == u'exit':
wikipedia.stopme()
exit()
for item in log:
userCheck = user = item[1]
talkPage = wikipedia.Page(site, u'User talk:' + userCheck)
if not talkPage.exists():
wikipedia.output(u'----------------')
wikipedia.output(u'User:' + user + u':')
last = getContribList(user)
if last == []:
wikipedia.output(u'No contributions.')
else:
wikipedia.output(u'Last edit was to ' + str(last[0]))
if wikipedia.input(u'Show user contribs? (type "more" to show, enter = skip) ') == u'more':
wikipedia.output(u'Contributions:')
for item in last:
cl = getUserContrib(user, item)
if cl == None:
wikipedia.output(u"User's contribs deleted.")
else:
for edit in cl:
wikipedia.output(u'In ' + str(item) + u':')
wikipedia.showDiff(item.getOldVersion(edit[0]), item.getOldVersion(edit[1]))
wikipedia.output(u'User is not welcomed. (enter = skip, type "exit" to leave)')
action = wikipedia.input(u'Create page with: ')
if action != u'' and action != u'exit':
comment = wikipedia.input(u'Edit comment (defaults to "Welcome!"): ')
if comment == u'':
comment = u'Welcome!'
try:
talkPage.put(unicode(action) + u' ' + signature + u' ~~~~~', unicode(comment), False, False)
except UnicodeEncodeError:
wikipedia.output(u"Please don't hurt the encoding.")
pass
except wikipedia.PageNotSaved:
wikipedia.output(u'Error: page not saved.')
pass
finally:
pass
wikipedia.output(u'----------------')
wikipedia.output(u'Searching...')
elif action == u'exit':
wikipedia.stopme()
exit()
wikipedia.output(u'Finished.')
if __name__ == "__main__":
try:
__main__()
finally:
wikipedia.stopme()
exit()