Revision: 7356
Author:   alexsh
Date:     2009-10-02 11:53:53 +0000 (Fri, 02 Oct 2009)

Log Message:
-----------
statistics_in_wikitable: code normalize

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

Modified: trunk/pywikipedia/statistics_in_wikitable.py
===================================================================
--- trunk/pywikipedia/statistics_in_wikitable.py        2009-10-02 09:46:09 UTC 
(rev 7355)
+++ trunk/pywikipedia/statistics_in_wikitable.py        2009-10-02 11:53:53 UTC 
(rev 7356)
@@ -10,13 +10,13 @@
 
 \03{lightred}-screen\03{default}     If True, doesn't do any changes, but only 
shows the statistics.
 
-\03{lightgreen}-page\03{default}       On what page statistics are rendered.
-               If not existing yet, it is created.
-               If existing, it is updated.
+\03{lightgreen}-page\03{default}    On what page statistics are rendered.
+        If not existing yet, it is created.
+        If existing, it is updated.
 """
 __version__ = '$Id$'
 import wikipedia, pagegenerators, query
-import simplejson, time
+import time
 
 # This is the title of the wikipage where to render stats.
 your_page = "Logstats"
@@ -30,131 +30,126 @@
 
 
 class StatisticsBot:
-       def __init__ (self, screen, your_page):
-               """
-               Constructor. Parameter:
-                   * screen    - If True, doesn't do any real changes, but 
only shows
-                                 some stats.
-               """
-               self.screen = screen
-               self.your_page = your_page
-               self.dict = self.getdata() # Try to get data.
+    def __init__ (self, screen, your_page):
+        """
+        Constructor. Parameter:
+            * screen    - If True, doesn't do any real changes, but only shows
+                          some stats.
+        """
+        self.screen = screen
+        self.your_page = your_page
+        self.dict = self.getdata() # Try to get data.
+        self.site = wikipedia.getSite()
 
-       def run(self):
-               if self.screen:
-                       wikipedia.output("Bot is running to output stats.")
-                       self.idle(1) # Run a function to idle
-                       self.outputall()
-               if not self.screen:
-                       self.outputall() # Output all datas on screen.
-                       wikipedia.output("\nBot is running. Going to treat 
\03{lightpurple}%s\03{default}..." % self.your_page )
-                       self.idle(2)
-                       self.treat()
+    def run(self):
+        if self.screen:
+            wikipedia.output("Bot is running to output stats.")
+            self.idle(1) # Run a function to idle
+            self.outputall()
+        if not self.screen:
+            self.outputall() # Output all datas on screen.
+            wikipedia.output("\nBot is running. Going to treat 
\03{lightpurple}%s\03{default}..." % self.your_page )
+            self.idle(2)
+            self.treat()
 
-       def getdata(self): # getdata() returns a dictionnary of the query to 
api.php?action=query&meta=siteinfo&siprop=statistics
-               # This method return data in a dictionnary format.
-               # View data with: 
api.php?action=query&meta=siteinfo&siprop=statistics&format=jsonfm
-               params = {
-               'action'    :'query',
-               'meta'      :'siteinfo',
-               'siprop'    :'statistics',
-               }
-               wikipedia.output("\nQuerying api for json-formatted data...")
-               try:
-                       data = query.GetData(params,
-                                                                useAPI = True, 
encodeTitle = False)
-               except:
-                       site = wikipedia.getSite()
-                       url = site.protocol() + '://' + site.hostname() + 
site.api_address()
-                       wikipedia.output("The query has failed. Have you check 
the API? Cookies are working?")
-                       wikipedia.output(u"\n>> \03{lightpurple}%s\03{default} 
<<" % url)
-               if data != None:
-                       wikipedia.output("Extracting statistics...")
-                       data = data['query']      # "query" entry of data.
-                       dict = data['statistics'] # "statistics" entry of 
"query" dict.
-                       return dict
+    def getdata(self): # getdata() returns a dictionnary of the query to 
api.php?action=query&meta=siteinfo&siprop=statistics
+        # This method return data in a dictionnary format.
+        # View data with: 
api.php?action=query&meta=siteinfo&siprop=statistics&format=jsonfm
+        params = {
+        'action'    :'query',
+        'meta'      :'siteinfo',
+        'siprop'    :'statistics',
+        }
+        wikipedia.output("\nQuerying api for json-formatted data...")
+        try:
+            data = query.GetData(params,self.site, encodeTitle = False)
+        except:
+            url = self.site.protocol() + '://' + self.site.hostname() + 
self.site.api_address()
+            wikipedia.output("The query has failed. Have you check the API? 
Cookies are working?")
+            wikipedia.output(u"\n>> \03{lightpurple}%s\03{default} <<" % url)
+        if data != None:
+            wikipedia.output("Extracting statistics...")
+            data = data['query']      # "query" entry of data.
+            dict = data['statistics'] # "statistics" entry of "query" dict.
+            return dict
 
-       def treat(self):
-                       site = wikipedia.getSite()
-                       page = wikipedia.Page(site, self.your_page)
-                       if page.exists():
-                               wikipedia.output(u'\nWikitable on 
\03{lightpurple}%s\03{default} will be completed with:\n' % self.your_page )
-                               text = page.get()
-                               newtext = self.newraw()
-                               wikipedia.output(newtext)
-                               choice = wikipedia.inputChoice(u'Do you want to 
add these on wikitable?', ['Yes', 'No'], ['y', 'N'], 'N')
-                               text = text[:-3] + newtext
-                               summ = wikipedia.translate(site, summary_update)
-                               if choice == 'y':
-                                       try:
-                                               page.put(u''.join(text), summ)
-                                       except:
-                                               wikipedia.output(u'Impossible 
to edit. It may be an edit conflict... Skipping...')
-                       else:
-                               wikipedia.output(u'\nWikitable on 
\03{lightpurple}%s\03{default} will be created with:\n' % self.your_page )
-                               newtext = self.newtable()+self.newraw()
-                               wikipedia.output(newtext)
-                               summ = wikipedia.translate(site, 
summary_creation)
-                               choice = wikipedia.inputChoice(u'Do you want to 
accept this page creation?', ['Yes', 'No'], ['y', 'N'], 'N')
-                               if choice == 'y':
-                                       try:
-                                               page.put(newtext, summ)
-                                       except wikipedia.LockedPage:
-                                               wikipedia.output(u"Page %s is 
locked; skipping." % title)
-                                       except wikipedia.EditConflict:
-                                               wikipedia.output(u'Skipping %s 
because of edit conflict' % title)
-                                       except wikipedia.SpamfilterError, error:
-                                               wikipedia.output(u'Cannot 
change %s because of spam blacklist entry %s' % (title, error.url))
+    def treat(self):
+            page = wikipedia.Page(self.site, self.your_page)
+            if page.exists():
+                wikipedia.output(u'\nWikitable on 
\03{lightpurple}%s\03{default} will be completed with:\n' % self.your_page )
+                text = page.get()
+                newtext = self.newraw()
+                wikipedia.output(newtext)
+                choice = wikipedia.inputChoice(u'Do you want to add these on 
wikitable?', ['Yes', 'No'], ['y', 'N'], 'N')
+                text = text[:-3] + newtext
+                summ = wikipedia.translate(self.site, summary_update)
+                if choice == 'y':
+                    try:
+                        page.put(u''.join(text), summ)
+                    except:
+                        wikipedia.output(u'Impossible to edit. It may be an 
edit conflict... Skipping...')
+            else:
+                wikipedia.output(u'\nWikitable on 
\03{lightpurple}%s\03{default} will be created with:\n' % self.your_page )
+                newtext = self.newtable()+self.newraw()
+                wikipedia.output(newtext)
+                summ = wikipedia.translate(self.site, summary_creation)
+                choice = wikipedia.inputChoice(u'Do you want to accept this 
page creation?', ['Yes', 'No'], ['y', 'N'], 'N')
+                if choice == 'y':
+                    try:
+                        page.put(newtext, summ)
+                    except wikipedia.LockedPage:
+                        wikipedia.output(u"Page %s is locked; skipping." % 
title)
+                    except wikipedia.EditConflict:
+                        wikipedia.output(u'Skipping %s because of edit 
conflict' % title)
+                    except wikipedia.SpamfilterError, error:
+                        wikipedia.output(u'Cannot change %s because of spam 
blacklist entry %s' % (title, error.url))
 
-       def newraw(self):
-               newtext = ('\n|----\n!\'\''+ self.date() +'\'\'')       # new 
raw for date and stats
-               for name in self.dict:
-                       newtext += '\n|'+str(abs(self.dict[name]))
-               newtext += '\n|----\n|}'
-               return newtext
+    def newraw(self):
+        newtext = ('\n|----\n!\'\''+ self.date() +'\'\'')    # new raw for 
date and stats
+        for name in self.dict:
+            newtext += '\n|'+str(abs(self.dict[name]))
+        newtext += '\n|----\n|}'
+        return newtext
 
-       def newtable(self):
-               newtext = ('\n{| class=wikitable style=text-align:center\n!'+ 
"date")   # create table
-               for name in self.dict:
-                       newtext += '\n|'+name
-               return newtext
+    def newtable(self):
+        newtext = ('\n{| class=wikitable style=text-align:center\n!'+ "date")  
  # create table
+        for name in self.dict:
+            newtext += '\n|'+name
+        return newtext
 
-       def     date(self):
-               rightime = time.localtime(time.time())
-               year = str(rightime[0])
-               month = str(rightime[1])
-               day = str(rightime[2])
-               date = year+'/'+month+'/'+day
-               return date
-       def outputall(self):
-               list = self.dict.keys()
-               list.sort()
-               for name in self.dict:
-                       wikipedia.output("There are "+str(self.dict[name])+" 
"+name)
-       def idle(self, retry_idle_time):
-               time.sleep(retry_idle_time)
-               wikipedia.output(u"Starting in %i second..." % retry_idle_time)
-               time.sleep(retry_idle_time)
+    def date(self):
+        return time.strftime('%Y/%m/%d', time.localtime(time.time()))
+    
+    def outputall(self):
+        list = self.dict.keys()
+        list.sort()
+        for name in self.dict:
+            wikipedia.output("There are "+str(self.dict[name])+" "+name)
+    
+    def idle(self, retry_idle_time):
+        time.sleep(retry_idle_time)
+        wikipedia.output(u"Starting in %i second..." % retry_idle_time)
+        time.sleep(retry_idle_time)
 
 def main(your_page):
-       screen = False # If True it would not edit the wiki, only output 
statistics
-       _page = None
+    screen = False # If True it would not edit the wiki, only output statistics
+    _page = None
 
-       wikipedia.output("\nBuilding the bot...")
-       for arg in wikipedia.handleArgs():      # Parse command line arguments
-               if arg.startswith('-page'):
-                       if len(arg) == 5:
-                               _page = wikipedia.input(u'On what page do you 
want to add statistics?')
-                       else:
-                               _page = arg[6:]
-               if arg.startswith("-screen"):
-                       screen = True
-       if not _page:
-               _page = your_page
-               if not screen:
-                       wikipedia.output("The bot will add statistics on %s.\n" 
% _page )
-       bot = StatisticsBot(screen, _page) # Launch the instance of a 
StatisticsBot
-       bot.run() # Execute the 'run' method
+    wikipedia.output("\nBuilding the bot...")
+    for arg in wikipedia.handleArgs():    # Parse command line arguments
+        if arg.startswith('-page'):
+            if len(arg) == 5:
+                _page = wikipedia.input(u'On what page do you want to add 
statistics?')
+            else:
+                _page = arg[6:]
+        if arg.startswith("-screen"):
+            screen = True
+    if not _page:
+        _page = your_page
+        if not screen:
+            wikipedia.output("The bot will add statistics on %s.\n" % _page )
+    bot = StatisticsBot(screen, _page) # Launch the instance of a StatisticsBot
+    bot.run() # Execute the 'run' method
 
 if __name__ == "__main__":
     try:



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

Reply via email to