Revision: 8575
Author:   xqt
Date:     2010-09-19 16:42:57 +0000 (Sun, 19 Sep 2010)

Log Message:
-----------
cosmetic changes for commons due to request bug #3070962 from 
http://commons.wikimedia.org/wiki/Commons:Tools/pywiki_file_description_cleanup

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

Modified: trunk/pywikipedia/cosmetic_changes.py
===================================================================
--- trunk/pywikipedia/cosmetic_changes.py       2010-09-19 12:32:27 UTC (rev 
8574)
+++ trunk/pywikipedia/cosmetic_changes.py       2010-09-19 16:42:57 UTC (rev 
8575)
@@ -129,6 +129,7 @@
 # Summary message  that will be appended to the normal message when
 # cosmetic changes are made on the fly
 msg_append = {
+    'commons': u'; [[Commons talk:Tools/pywiki file description cleanup|desc 
page fmt]]',
     'als':u'; chleineri Änderige',
     'ar': u'; تغييرات تجميلية',
     'be-x-old': u'; касмэтычныя зьмены',
@@ -261,6 +262,8 @@
         Given a wiki source code text, return the cleaned up version.
         """
         oldText = text
+        if self.site.sitename()== u'commons:commons' and self.namespace == 6:
+            text = self.commonsfiledesc(text)
         text = self.fixSelfInterwiki(text)
         text = self.standardizePageFooter(text)
         text = self.cleanUpLinks(text)
@@ -726,8 +729,59 @@
                 text = pywikibot.replaceExcept(text, str(i), u'٠١٢٣٤٥٦٧٨٩'[i], 
exceptions)
         return text
 
+    # Retrieved from 
"http://commons.wikimedia.org/wiki/Commons:Tools/pywiki_file_description_cleanup";
+    def commonsfiledesc(self, text):
+        # section headers to {{int:}} versions
+        exceptions = ['comment', 'includeonly', 'math', 'noinclude', 'nowiki',
+                      'pre', 'source', 'ref', 'timeline']
+        text = pywikibot.replaceExcept(text,
+                                       r"([\r\n]|^)\=\= *Summary *\=\=",
+                                       r"\1== {{int:filedesc}} ==",
+                                       exceptions, True)
+        text = pywikibot.replaceExcept(
+            text,
+            r"([\r\n])\=\= *\[\[Commons:Copyright tags\|Licensing\]\]: *\=\=",
+            r"\1== {{int:license}} ==", exceptions, True)
+        text = pywikibot.replaceExcept(
+            text,
+            r"([\r\n])\=\= *(Licensing|License 
information|{{int:license-header}}) *\=\=",
+            r"\1== {{int:license}} ==", exceptions, True)
+ 
+        # frequent field values to {{int:}} versions
+        text = pywikibot.replaceExcept(
+            text,
+            r'([\r\n]\|[Ss]ource *\= *)(?:[Oo]wn work by uploader|[Oo]wn 
work|[Ee]igene [Aa]rbeit) *([\r\n])',
+            r'\1{{own}}\2', exceptions, True)
+        text = pywikibot.replaceExcept(
+            text,
+            r'(\| *Permission *\=) *(?:[Ss]ee below|[Ss]iehe unten) *([\r\n])',
+            r'\1\2', exceptions, True)
+ 
+        # added to transwikied pages
+        text = pywikibot.replaceExcept(text, r'__NOTOC__', '', exceptions, 
True)
+ 
+        # tracker element for js upload form
+        text = pywikibot.replaceExcept(
+            text,
+            r'<!-- *{{ImageUpload\|(?:full|basic)}} *-->',
+            '', exceptions[1:], True)
+        text = pywikibot.replaceExcept(text, 
r'{{ImageUpload\|(?:basic|full)}}',
+                                       '', exceptions, True)
+ 
+        # duplicated section headers
+        text = pywikibot.replaceExcept(
+            text,
+            r'([\r\n]|^)\=\= *{{int:filedesc}} *\=\=(?:[\r\n ]*)\=\= 
*{{int:filedesc}} *\=\=',
+            r'\1== {{int:filedesc}} ==', exceptions, True)
+        text = pywikibot.replaceExcept(
+            text,
+            r'([\r\n]|^)\=\= *{{int:license}} *\=\=(?:[\r\n ]*)\=\= 
*{{int:license}} *\=\=',
+            r'\1== {{int:license}} ==', exceptions, True)
+        return text
+
 class CosmeticChangesBot:
-    def __init__(self, generator, acceptall = False, comment=u'Robot: Cosmetic 
changes'):
+    def __init__(self, generator, acceptall = False,
+                 comment=u'Robot: Cosmetic changes'):
         self.generator = generator
         self.acceptall = acceptall
         self.comment = comment
@@ -737,13 +791,17 @@
         try:
             # Show the title of the page we're working on.
             # Highlight the title in purple.
-            pywikibot.output(u"\n\n>>> \03{lightpurple}%s\03{default} <<<" % 
page.title())
-            ccToolkit = CosmeticChangesToolkit(page.site(), debug = True, 
namespace = page.namespace(), pageTitle=page.title())
+            pywikibot.output(u"\n\n>>> \03{lightpurple}%s\03{default} <<<"
+                             % page.title())
+            ccToolkit = CosmeticChangesToolkit(page.site(), debug=True,
+                                               namespace=page.namespace(),
+                                               pageTitle=page.title())
             changedText = ccToolkit.change(page.get())
             if changedText.strip() != page.get().strip():
                 if not self.acceptall:
-                    choice = pywikibot.inputChoice(u'Do you want to accept 
these changes?',
-                                                   ['Yes', 'No', 'All', 
'Quit'], ['y', 'N', 'a', 'q'], 'N')
+                    choice = pywikibot.inputChoice(
+                        u'Do you want to accept these changes?',
+                        ['Yes', 'No', 'All', 'Quit'], ['y', 'N', 'a', 'q'], 
'N')
                     if choice == 'a':
                         self.acceptall = True
                     elif choice == 'q':
@@ -752,15 +810,19 @@
                 if self.acceptall or choice == 'y':
                     page.put(changedText, comment=self.comment)
             else:
-                pywikibot.output('No changes were necessary in %s' % 
page.title())
+                pywikibot.output('No changes were necessary in %s'
+                                 % page.title())
         except pywikibot.NoPage:
-            pywikibot.output("Page %s does not exist?!" % page.aslink())
+            pywikibot.output("Page %s does not exist?!"
+                             % page.title(asLink=True))
         except pywikibot.IsRedirectPage:
-            pywikibot.output("Page %s is a redirect; skipping." % 
page.aslink())
+            pywikibot.output("Page %s is a redirect; skipping."
+                             % page.title(asLink=True))
         except pywikibot.LockedPage:
-            pywikibot.output("Page %s is locked?!" % page.aslink())
+            pywikibot.output("Page %s is locked?!" % page.title(asLink=True))
         except pywikibot.EditConflict:
-            pywikibot.output("An edit conflict has occured at %s." % 
page.aslink())
+            pywikibot.output("An edit conflict has occured at %s."
+                             % page.title(asLink=True))
 
     def run(self):
         try:
@@ -793,16 +855,6 @@
     if editSummary == '':
         # Load default summary message.
         editSummary = pywikibot.translate(pywikibot.getSite(), msg_standalone)
-
-    # Disabled this check. Although the point is still valid, there
-    # is now a warning and a prompt (see below).
-    #if pywikibot.getSite() == pywikibot.getSite('nl','wikipedia'):
-        #print "Deze bot is op WikipediaNL niet gewenst."
-        #print "Het toevoegen van cosmetic changes bij andere wijzigingen is 
toegestaan,"
-        #print "maar cosmetic_changes als stand-alone bot niet."
-        #print "Zoek alstublieft een nuttig gebruik voor uw bot."
-        #sys.exit()
-
     if pageTitle:
         page = pywikibot.Page(pywikibot.getSite(), ' '.join(pageTitle))
         gen = iter([page])
@@ -811,11 +863,14 @@
     if not gen:
         pywikibot.showHelp()
     elif not always:
-        answer = pywikibot.inputChoice(warning + '\nDo you really want to 
continue?', ['yes', 'no'], ['y', 'N'], 'N')
+        answer = pywikibot.inputChoice(
+            warning + '\nDo you really want to continue?',
+            ['yes', 'no'], ['y', 'N'], 'N')
 
     if answer == 'y':
         preloadingGen = pagegenerators.PreloadingGenerator(gen)
-        bot = CosmeticChangesBot(preloadingGen, acceptall=always, 
comment=editSummary)
+        bot = CosmeticChangesBot(preloadingGen, acceptall=always,
+                                 comment=editSummary)
         bot.run()
 
 if __name__ == "__main__":



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

Reply via email to