Revision: 7684
Author:   xqt
Date:     2009-11-23 14:01:26 +0000 (Mon, 23 Nov 2009)

Log Message:
-----------
docu

Modified Paths:
--------------
    trunk/pywikipedia/welcome.py

Modified: trunk/pywikipedia/welcome.py
===================================================================
--- trunk/pywikipedia/welcome.py        2009-11-23 13:39:16 UTC (rev 7683)
+++ trunk/pywikipedia/welcome.py        2009-11-23 14:01:26 UTC (rev 7684)
@@ -90,6 +90,8 @@
 
    -quiet          Prevents users without contributions are displayed
 
+   -quick          Provide quick check by API bulk-retrieve user datas
+
 ********************************* GUIDE ***********************************
 
 Report, Bad and white list guide:
@@ -485,11 +487,11 @@
             self.defineSign(True)
         if __name__ != '__main__': #use only in module call
             self._checkQueue = []
-    
+
     def badNameFilter(self, name, force = False):
         if not globalvar.filtBadName:
             return False
-        
+
         #initialize blacklist
         if not hasattr(self, '_blacklist') or force:
             elenco = [
@@ -523,7 +525,7 @@
                 "vandal", " v.f. ", "v. fighter", "vandal f.", "vandal 
fighter", 'wales jimmy',
                 "wheels", "wales", "www.",
             ]
-            
+
             #blacklist from wikipage
             badword_page = wikipedia.Page(self.site, 
wikipedia.translate(self.site, bad_pag) )
             list_loaded = list()
@@ -535,7 +537,7 @@
                 wikipedia.output(u'The bad word page doesn\'t exist!')
             self._blacklist = elenco + elenco_others + list_loaded
             del elenco, elenco_others, list_loaded
-        
+
         if not hasattr(self, '_whitelist') or force:
             #initialize whitelist
             whitelist_default = ['emiliano']
@@ -552,11 +554,11 @@
             else:
                 showStatus(4)
                 wikipedia.output(u"WARNING: The whitelist hasn't been setted!")
-            
+
             # Join the whitelist words.
             self._whitelist = list_white + whitelist_default
             del list_white, whitelist_default
-        
+
         try:
             for bname in self._blacklist:
                 if bname.lower() in str(name.lower()): #bad name positive
@@ -573,7 +575,7 @@
                         return bname.lower() in name.lower()
         except UnicodeEncodeError:
             pass    
-        
+
         return False
 
     def reportBadAccount(self, name = None, final = False):
@@ -587,7 +589,7 @@
                     globalvar.confirm = False
             else:
                 answer = 'y'
-            
+
             if answer.lower() in ['yes', 'y'] or not globalvar.confirm:
                 showStatus()
                 wikipedia.output(u'%s is possibly an unwanted username. It 
will be reported.' % name)
@@ -595,7 +597,7 @@
                     self._BAQueue.append(name)
                 else:
                     self._BAQueue = [name]
-        
+
         if len(self._BAQueue) >= globalvar.dumpToLog or final:
             rep_text = ''
             #name in queue is max, put detail to report page
@@ -618,7 +620,7 @@
                     rep_text += wikipedia.translate(self.site, report_text) % 
username
                     if self.site.lang == 'it':
                         rep_text = "%s%s}}" % (rep_text, self.bname)
-            
+
             com = wikipedia.translate(self.site, comment)
             if rep_text != '':
                 rep_page.put(text_get + rep_text, comment = com, minorEdit = 
True)
@@ -627,22 +629,22 @@
             self.BAQueue = list()
         else:
             return True
-    
+
     def makelogpage(self, queue = []):
         if not globalvar.makeWelcomeLog:
             return None
         if len(queue) == 0:
             return None
-        
+
         text = u''
         logg = wikipedia.translate(self.site, logbook)
         if not logg:
             return None
-        
+
         target = logg + '/' + time.strftime('%Y/%m/%d', 
time.localtime(time.time()))
         if self.site.lang == 'it':
             target = logg + '/' + time.strftime('%d/%m/%Y', 
time.localtime(time.time()))
-        
+
         logPage = wikipedia.Page(self.site, target)
         if logPage.exists():
             text = logPage.get()
@@ -653,7 +655,7 @@
             text = wikipedia.translate(self.site, logpage_header)
             text += u'\n!%s' % self.site.namespace(2)
             text += u'\n!%s' % 
capitalize(self.site.mediawiki_message('contribslink'))
-        
+
         for result in queue:
             # Adding the log... (don't take care of the variable's name...).
             luser = wikipedia.url2link(result.name(), self.site, self.site)
@@ -666,7 +668,7 @@
             except wikipedia.EditConflict:
                 wikipedia.output(u'An edit conflict has occured. Pausing for 
10 seconds before continuing.')
                 time.sleep(10)
-    
+
     def parseNewUserLog(self):
         #if __name__ != '__main__':
         #    if self._checkQueue:
@@ -682,7 +684,7 @@
             for x in self._parseNewUserLogOld():
                 yield x
             return
-        
+
         params = {
             'action':'query',
             'list':'logevents',
@@ -696,15 +698,14 @@
             params['lestart'] = int(now.strftime("%Y%m%d%H%M%S"))
         elif globalvar.offset != 0:
             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)
+            count = len(lev['query']['logevents'])
             for x in lev['query']['logevents']:
                 someone_found = True
-                count += 1
                 if 'user' not in x:
                     continue
                 #created twice?
@@ -716,9 +717,9 @@
                         wikipedia.output(u'%s has been created automatically.' 
% x['user'])
                     count_auto += 1
                     continue
-                
+
                 yield userlib.User(self.site, x['user'])
-            
+
             if count < globalvar.queryLimit and 'query-continue' in lev:
                 params['lestart'] = 
lev['query-continue']['logevents']['lestart']
             else:
@@ -732,7 +733,7 @@
             wikipedia.output(u'There is nobody left to be welcomed...')
         else:
             wikipedia.output(u'\nLoaded all users...')
-    
+
     def _parseNewUserLogOld(self):
         someone_found = False
         URL = self.site.log_address(globalvar.queryLimit, 'newusers')
@@ -750,9 +751,9 @@
         reg =  u'\(<a href=\"' + re.escape(self.site.path())
         reg += 
u'\?title=%s(?P<user>.*?)&(?:amp;|)action=(?:edit|editredlink|edit&amp;redlink=1)\"'
 % re.escape('%s:' % urllib.quote(self.site.namespace(3).replace(" ", 
"_").encode(self.site.encoding())))
         reg += u'.*?</span> (?P<reason>.*?) *?</li>'
-        
+
         p = re.compile(reg, re.UNICODE)
-        
+
         for x in p.finditer(raw):
             someone_found = True
             userN = unicode(urllib.unquote(str(x.group('user'))), 'utf-8')
@@ -761,22 +762,22 @@
                 showStatus(3)
                 wikipedia.output(u'%s has been created automatically, 
skipping...' % userN)
                 continue
-            
+
             #FIXME: It counts the first 50 edits
             # if number > 50, it won't work
             # (not *so* useful, it should be enough).
             yield userlib.User(self.site, userN)
-        
+
         if someone_found:
             showStatus(5)
             wikipedia.output(u'There is nobody left to be welcomed...')
         else:
             wikipedia.output(u'\nLoaded all users...')
-    
+
     def defineSign(self, force = False):
         if hasattr(self,'_randomSignature') and not force:
             return self._randomSignature
-        
+
         signText = u''
         creg = re.compile(r"^\* ?(.*?)$", re.M)
         if not globalvar.signFileName:
@@ -786,7 +787,7 @@
                 wikipedia.output("%s doesn't allow random signature, force 
disable." % self.site)
                 globalvar.randomSign = False
                 return None
-            
+
             signPage = wikipedia.Page(self.site, signPageName )
             if signPage.exists():
                 wikipedia.output('Loading signature list...')
@@ -804,12 +805,12 @@
             except IOError:
                 wikipedia.output(u'Error! - No fileName!')
                 raise FilenameNotSet("No signature filename specified.")
-            
+
             signText = f.read()
             f.close()
         self._randomSignature = creg.findall(signText)
         return self._randomSignature
-    
+
     def run(self):
         while True:
             welcomed_count = 0
@@ -823,7 +824,7 @@
                     us = self._parseNewUserLogOld()
             else:
                 us = self.parseNewUserLog()
-            
+
             for users in us:
                 if users.isBlocked():
                     showStatus(3)
@@ -869,7 +870,7 @@
                         except wikipedia.EditConflict:
                             showStatus(4)
                             wikipedia.output(u'An edit conflict has occured, 
skipping this user.')
-                    
+
                     if globalvar.makeWelcomeLog and 
wikipedia.translate(self.site, logbook):
                         showStatus(5)
                         if welcomed_count == 1:
@@ -1049,7 +1050,7 @@
                 showStatus()
                 wikipedia.output("Put welcomed users before quit...")
                 bot.makelogpage(bot.welcomed_users)
-            wikipedia.output("Quitting...")
+            wikipedia.output("\nQuitting...")
     finally:
         # If there is the savedata, the script must save the number_user.
         if globalvar.randomSign and globalvar.saveSignIndex and 
bot.welcomed_users:



_______________________________________________
Pywikipedia-svn mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikipedia-svn

Reply via email to