AbdealiJK

pywikibot - bot to add "{{lowercase title}}"

May 3rd, 2016
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.14 KB | None | 0 0
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3.  
  4. # Usage: ../pywikibot-core/pwb.py lowercase.py -titleregex:"^(iPad|iPod|iPhone|iOS) .*" -catr:"Category:iPod" -putthrottle:60
  5. # Result: https://commons.wikimedia.org/w/index.php?title=File:IPod_with_iTrip01.jpg&diff=prev&oldid=195144294
  6. #         https://commons.wikimedia.org/w/index.php?title=File:IPod_2G.jpg&diff=prev&oldid=195144362
  7.  
  8. from __future__ import absolute_import, unicode_literals
  9.  
  10. import pywikibot
  11. from pywikibot import pagegenerators
  12.  
  13. puttext = '{{lowercase title}}\n'
  14. putcomment = 'Use lowercase title due to the name'
  15.  
  16. def isLowercase(page):
  17.     pywikibot.output(u'Working on ' + page.title())
  18.     for templateWithTrail in page.templates():
  19.         # Strip of trailing garbage
  20.         template = templateWithTrail.title().rstrip().lower()
  21.         if template == "template:lowercase" or \
  22.                 template == "template:lowercase title":
  23.             pywikibot.output('Already tagged with {}, skip it'.format(template))
  24.             return False
  25.  
  26.     pywikibot.output(u'Not ignoring ' + page.title())
  27.     return True
  28.  
  29.  
  30. def addLowercase(page):
  31.     newtext = puttext + page.get()
  32.     pywikibot.showDiff(page.get(), newtext)
  33.     try:
  34.         page.put(newtext, putcomment)
  35.     except pywikibot.EditConflict:
  36.         # Skip this page
  37.         pass
  38.     except pywikibot.LockedPage:
  39.         # Skip this page
  40.         pass
  41.     return
  42.  
  43.  
  44. def main(*args):
  45.     generator = None
  46.     local_args = pywikibot.handle_args(args)
  47.     site = pywikibot.Site('commons', 'commons')
  48.     genFactory = pagegenerators.GeneratorFactory(site)
  49.     for arg in local_args:
  50.         genFactory.handleArg(arg)
  51.  
  52.     generator = genFactory.getCombinedGenerator(gen=generator)
  53.     if not generator:
  54.         pywikibot.bot.suggest_help(missing_generator=True)
  55.     else:
  56.         pregenerator = pagegenerators.PreloadingGenerator(generator)
  57.         site.login()
  58.         for page in pregenerator:
  59.             if (page.exists() and (not page.isRedirectPage())
  60.                     and isLowercase(page)):
  61.                 addLowercase(page)
  62.             pywikibot.output("")
  63.  
  64. if __name__ == "__main__":
  65.     main()
Add Comment
Please, Sign In to add comment