Revision: 7680
Author: alexsh
Date: 2009-11-22 22:33:38 +0000 (Sun, 22 Nov 2009)
Log Message:
-----------
Fix: welcomed users not log if KeyboardInterrupt
Modified Paths:
--------------
trunk/pywikipedia/welcome.py
Modified: trunk/pywikipedia/welcome.py
===================================================================
--- trunk/pywikipedia/welcome.py 2009-11-22 22:17:54 UTC (rev 7679)
+++ trunk/pywikipedia/welcome.py 2009-11-22 22:33:38 UTC (rev 7680)
@@ -1042,7 +1042,14 @@
wikipedia.output('WARING: both -offset and -timeoffset were provided, ignoring -offset')
globalvar.offset = 0
bot = WelcomeBot()
- bot.run()
+ try:
+ bot.run()
+ except KeyboardInterrupt:
+ if bot.welcomed_users:
+ showStatus()
+ wikipedia.output("Put welcomed users before quit...")
+ bot.makelogpage(bot.welcomed_users)
+ wikipedia.output("Quitting...")
finally:
# If there is the savedata, the script must save the number_user.
if globalvar.randomSign and globalvar.saveSignIndex and bot.welcomed_users:
Revision: 7679
Author: alexsh
Date: 2009-11-22 22:17:54 +0000 (Sun, 22 Nov 2009)
Log Message:
-----------
welcome: add quick option to batch load user datas by API
Modified Paths:
--------------
trunk/pywikipedia/welcome.py
Modified: trunk/pywikipedia/welcome.py
===================================================================
--- trunk/pywikipedia/welcome.py 2009-11-22 20:56:47 UTC (rev 7678)
+++ trunk/pywikipedia/welcome.py 2009-11-22 22:17:54 UTC (rev 7679)
@@ -468,6 +468,7 @@
defaultSign = '--~~~~' # default signature
queryLimit = 50 # number of users that the bot load to check
quiet = False # Prevents users without contributions are displayed
+ quick = False # Provide quick check by API bulk-retrieve user datas
#fileOption = False # check if the user wants to use a file or the wikipage
@@ -697,6 +698,7 @@
params['lestart'] = globalvar.offset
count = 0
+ count_auto = 0
wikipedia.output("Querying new user log from API....")
while True:
lev = query.GetData(params, self.site)
@@ -709,8 +711,10 @@
if not globalvar.welcomeAuto and x['action'] == 'create2':
continue
if not globalvar.welcomeAuto and x['action'] == 'autocreate':
- showStatus(3)
- wikipedia.output(u'%s has been created automatically.' % x['user'])
+ if not globalvar.quick:
+ showStatus(3)
+ wikipedia.output(u'%s has been created automatically.' % x['user'])
+ count_auto += 1
continue
yield userlib.User(self.site, x['user'])
@@ -720,6 +724,10 @@
else:
break
if someone_found:
+ if globalvar.quick and count_auto > 0:
+ showStatus()
+ wikipedia.output(u'Ignored %d user(s) by auto-create' % count_auto)
+
showStatus(5)
wikipedia.output(u'There is nobody left to be welcomed...')
else:
@@ -805,7 +813,18 @@
def run(self):
while True:
welcomed_count = 0
- for users in self.parseNewUserLog():
+ if globalvar.quick and config.use_api:
+ us = [x for x in self.parseNewUserLog()]
+ showStatus()
+ try:
+ userlib.getall(self.site, us)
+ except NotImplementedError:
+ globalvar.quick = False
+ us = self._parseNewUserLogOld()
+ else:
+ us = self.parseNewUserLog()
+
+ for users in us:
if users.isBlocked():
showStatus(3)
wikipedia.output(u'%s has been blocked!' % users.name() )
@@ -1013,6 +1032,9 @@
globalvar.dumpToLog = int(arg[11:])
elif arg == '-quiet':
globalvar.quiet = True
+ elif arg == '-quick':
+ globalvar.quick = True
+
# Filename and pywikipedia path
# file where is stored the random signature index
filename = wikipedia.config.datafilepath('welcome-%s-%s.data' % (wikipedia.default_family, wikipedia.default_code))