| 1 |
import os |
| 2 |
import pywikibot |
| 3 |
|
| 4 |
from pywikibot.bot import QuitKeyboardInterrupt |
| 5 |
from pywikibot import pagegenerators |
| 6 |
|
| 7 |
def main(*args): |
| 8 |
genFactory = pagegenerators.GeneratorFactory() |
| 9 |
#allowed_suffixes = ('jpg', 'jpeg', 'png', 'gif', 'svg') |
| 10 |
allowed_suffixes = [] |
| 11 |
images_checked = 0 |
| 12 |
capped_suffixes = 0 |
| 13 |
site = pywikibot.Site() |
| 14 |
|
| 15 |
try: |
| 16 |
allowed_suffixes = site.siteinfo.get('fileextensions', get_default=False) |
| 17 |
except KeyError: |
| 18 |
pywikibot.stdout('Failed to get the wiki\'s allowed image suffixes!') |
| 19 |
return |
| 20 |
else: |
| 21 |
allowed_suffixes = [item['ext'].lower() for item in allowed_suffixes] |
| 22 |
pywikibot.stdout('Wiki accepts image suffixes {0}.'.format(allowed_suffixes)) |
| 23 |
|
| 24 |
generator = site.allimages() |
| 25 |
pywikibot.stdout('Looking for images with capitalized suffixes...') |
| 26 |
for page in pagegenerators.PreloadingGenerator(generator, 100): |
| 27 |
images_checked = images_checked + 1 |
| 28 |
suffix = page.title().split('.')[-1] |
| 29 |
if suffix.lower() in allowed_suffixes: |
| 30 |
if suffix != suffix.lower(): |
| 31 |
# We found a page which has an allowed suffix but which is capitalized |
| 32 |
pywikibot.stdout('{0}'.format(page.title())) |
| 33 |
capped_suffixes = capped_suffixes + 1 |
| 34 |
|
| 35 |
# Rename page to have lowercase suffix |
| 36 |
new_page_title = os.path.splitext(page.title())[0] + '.' + suffix.lower() |
| 37 |
pywikibot.stdout('Moving page to {0}...'.format(new_page_title)) |
| 38 |
page.move(new_page_title, reason='use lowercase file suffix', movetalk=True, noredirect=True) |
| 39 |
|
| 40 |
# Warn the user if the page we moved had references to it |
| 41 |
wiki_links = [] |
| 42 |
wiki_links = list(page.backlinks()) |
| 43 |
file_links = [] |
| 44 |
file_links = list(page.usingPages()) |
| 45 |
if len(wiki_links) or len(file_links): |
| 46 |
pywikibot.stdout('However this page is referenced by:') |
| 47 |
for ref in wiki_links: |
| 48 |
pywikibot.stdout(' {0}'.format(ref.title())) |
| 49 |
for ref in file_links: |
| 50 |
pywikibot.stdout(' {0}'.format(ref.title())) |
| 51 |
else: |
| 52 |
pywikibot.stdout('Found disallowed suffix {0}!'.format(suffix)) # should never happen |
| 53 |
|
| 54 |
pywikibot.stdout('Checked {0} images and found {1} with capitalized suffixes.'.format(images_checked, capped_suffixes)) |
| 55 |
|
| 56 |
if __name__ == '__main__': |
| 57 |
main() |