Revision: 7729
Author:   xqt
Date:     2009-12-02 16:50:10 +0000 (Wed, 02 Dec 2009)

Log Message:
-----------
-titlecase option added

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

Modified: trunk/pywikipedia/capitalize_redirects.py
===================================================================
--- trunk/pywikipedia/capitalize_redirects.py   2009-12-02 15:39:17 UTC (rev 
7728)
+++ trunk/pywikipedia/capitalize_redirects.py   2009-12-02 16:50:10 UTC (rev 
7729)
@@ -1,7 +1,9 @@
+#!/usr/bin/python
 # -*- coding: utf-8  -*-
 
 '''
-Bot to create redirects.
+Bot to create capitalized redirects where the first character of the first
+word is uppercase and the remainig characters and words are lowercase.
 
 Command-line arguments:
 
@@ -28,16 +30,24 @@
 
     -always     Don't prompt to make changes, just do them.
 
+    -titlecase  creates a titlecased redirect version of a given page
+                where all words of the title start with an uppercase 
+                character and the remaining characters are lowercase
+
 Example: "python capitalize_redirects.py -start:B -always"
 '''
 #
 # (C) Yrithinnd
+# (C) Pywikipedia bot team, 2007-2009
+#
 # Class licensed under terms of the MIT license
 #
 __version__ = '$Id$'
+#
 
 import time, sys
-import wikipedia, pagegenerators, catlib
+import wikipedia as pywikibot
+import pagegenerators, catlib
 
 msg = {
      'ar': u'روبوت: إنشاء تحويلة إلى [[%s]]',
@@ -55,9 +65,11 @@
     }
 
 class CapitalizeBot:
-    def __init__(self, generator, acceptall):
+    def __init__(self, generator, acceptall, titlecase):
         self.generator = generator
         self.acceptall = acceptall
+        self.titlecase = titlecase
+        self.site = pywikibot.getSite()
 
     def run(self):
         for page in self.generator:
@@ -66,31 +78,32 @@
             page_t = page.title()
             # Show the title of the page we're working on.
             # Highlight the title in purple.
-            wikipedia.output(u"\n>>> \03{lightpurple}%s\03{default} <<<"
+            pywikibot.output(u"\n>>> \03{lightpurple}%s\03{default} <<<"
                              % page_t)
-            page_cap = wikipedia.Page(wikipedia.getSite(), 
page_t.title().capitalize())
+            if self.titlecase:
+                page_cap = pywikibot.Page(self.site, page_t.title())
+            else:
+                page_cap = pywikibot.Page(self.site, page_t.capitalize())
             if not page_cap.exists():
-                wikipedia.output(u'%s doesn\'t exist' % page_cap.title())
+                pywikibot.output(u'[[%s]] doesn\'t exist' % page_cap.title())
                 if not self.acceptall:
-                    choice = wikipedia.inputChoice(
+                    choice = pywikibot.inputChoice(
                             u'Do you want to create a redirect?',
-                            ['Yes', 'No', 'All'], ['y', 'N', 'a'], 'N')
+                            ['Yes', 'No', 'All', 'Quit'], ['y', 'N', 'a', 
'q'], 'N')
                     if choice == 'a':
                         self.acceptall = True
+                    elif choice == 'q':
+                        break
                 if self.acceptall or choice == 'y':
+                    comment = pywikibot.translate(self.site, msg) % page_t
                     try:
-                        wikipedia.setAction(
-                            wikipedia.translate(wikipedia.getSite(), msg)
-                            % page_t)
-                        page_cap.put(u"#REDIRECT [[%s]]" % page_t)
+                        page_cap.put(u"#REDIRECT [[%s]]" % page_t, comment)
                         print
                     except:
-                        wikipedia.output(
-                            u"An error occurred. Retrying in 15 seconds...")
-                        time.sleep(15)
+                        pywikibot.output(u"An error occurred, skipping...")
                         continue
             else:
-                wikipedia.output(u'%s already exists, skipping...\n'
+                pywikibot.output(u'%s already exists, skipping...\n'
                                  % page_t.title())
 
 def main():
@@ -103,44 +116,47 @@
     acceptall = False
     namespaces = []
     startpage = None
+    titlecase = False
 
-    for arg in wikipedia.handleArgs():
+    for arg in pywikibot.handleArgs():
         if arg.startswith('-file'):
             if len(arg) == 5:
-                textfilename = wikipedia.input(u'Please enter the filename:')
+                textfilename = pywikibot.input(u'Please enter the filename:')
             else:
                 textfilename = arg[6:]
             source = 'textfile'
         elif arg.startswith('-cat'):
             if len(arg) == 4:
-                categoryname = wikipedia.input(
+                categoryname = pywikibot.input(
                                u'Please enter the category name:')
             else:
                 categoryname = arg[5:]
             source = 'category'
         elif arg.startswith('-page'):
             if len(arg) == 5:
-                pageNames.append(wikipedia.input(
+                pageNames.append(pywikibot.input(
                                  u'Which page do you want to change?'))
             else:
                 pageNames.append(arg[6:])
             source = 'singlepage'
         elif arg.startswith('-ref'):
             if len(arg) == 4:
-                referredPageName = wikipedia.input(
+                referredPageName = pywikibot.input(
                                    u'Links to which page should be processed?')
             else:
                 referredPageName = arg[5:]
             source = 'ref'
         elif arg.startswith('-start'):
             if len(arg) == 6:
-                firstPageTitle = wikipedia.input(
+                firstPageTitle = pywikibot.input(
                                  u'Which page do you want to change?')
             else:
                 firstPageTitle = arg[7:]
             source = 'allpages'
         elif arg == '-always':
             acceptall = True
+        elif arg == '-titlecase':
+            titlecase = True
         elif arg.startswith('-namespace:'):
             try:
                 namespaces.append(int(arg[11:]))
@@ -152,30 +168,30 @@
     if source == 'textfile':
         gen = pagegenerators.TextfilePageGenerator(textfilename)
     elif source == 'category':
-        cat = catlib.Category(wikipedia.getSite(), categoryname)
+        cat = catlib.Category(pywikibot.getSite(), categoryname)
         gen = pagegenerators.CategorizedPageGenerator(cat)
     elif source == 'singlepage':
-        pages = [wikipedia.Page(wikipedia.getSite(), pageName)
+        pages = [pywikibot.Page(pywikibot.getSite(), pageName)
                  for pageName in pageNames]
         gen = iter(pages)
     elif source == 'allpages':
-        namespace = wikipedia.Page(wikipedia.getSite(),
+        namespace = pywikibot.Page(pywikibot.getSite(),
                                    firstPageTitle).namespace()
         gen = pagegenerators.AllpagesPageGenerator(firstPageTitle, namespace)
     elif source == 'ref':
-        referredPage = wikipedia.Page(wikipedia.getSite(), referredPageName)
+        referredPage = pywikibot.Page(pywikibot.getSite(), referredPageName)
         gen = pagegenerators.ReferringPageGenerator(referredPage)
     elif source == None or len(commandline_replacements) not in [0, 2]:
-        wikipedia.showHelp(u'capitalize_redirects')
+        pywikibot.showHelp(u'capitalize_redirects')
         return
     if namespaces != []:
         gen =  pagegenerators.NamespaceFilterPageGenerator(gen, namespaces)
     preloadingGen = pagegenerators.PreloadingGenerator(gen, pageNumber = 20)
-    bot = CapitalizeBot(preloadingGen, acceptall)
+    bot = CapitalizeBot(preloadingGen, acceptall, titlecase)
     bot.run()
 
 if __name__ == "__main__":
     try:
         main()
     finally:
-        wikipedia.stopme()
+        pywikibot.stopme()



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

Reply via email to