Меню

Главная
Случайная статья
Настройки
Участник:LankLinkBot/imgresizer.py
Материал из https://ru.wikipedia.org

#!/usr/bin/env python
# -*- mode: python; coding: utf-8; -*-
# (c) Lankier mailto:lankier@gmail.com
#
# $Id$
#
from StringIO import StringIO
import Image
import wikipedia
import upload
import pagegenerators

max_size = 600,600
msg = u'Бот: Изменение размера файла'

site = wikipedia.getSite()

def resize(pagename):
    wikipedia.output('resize: '+pagename)
    # download
    page = wikipedia.ImagePage(site, pagename)
    if not page.exists():
        wikipedia.output('file does not exists')
        if page.fileIsOnCommons():
            wikipedia.output('file is stored on commons')
        return
    url = page.fileUrl().encode('utf-8')
    content = wikipedia.MyURLopener.open(url).read()
    # resize
    buf = StringIO(content)
    image = Image.open(buf)
    if image.size[0] <= max_size[0] and image.size[1] <= max_size[1]:
        wikipedia.output('no need to resize: size: %s x %s' % image.size)
        return
    xf, yf = float(max_size[0])/image.size[0], float(max_size[1])/image.size[1]
    f = min(xf, yf)
    size = int(image.size[0]*f), int(image.size[1]*f)
    format = image.format
    image = image.resize(size, Image.ANTIALIAS)
    buf = StringIO()
    image.save(buf, format)
    content = buf.getvalue()
    # upload
    bot = upload.UploadRobot(url, keepFilename=True, verifyDescription=False,
                             ignoreWarning=True, description=msg, targetSite=site)
    bot._contents = content
    bot.upload_image(debug=False)
    return page

def main():
    #genFactory = pagegenerators.GeneratorFactory()
    pages = []
    for arg in wikipedia.handleArgs():
        #if genFactory.handleArg(arg):
        #    continue
        pages.append(arg)
    if not pages:
        wikipedia.output('missing page(s) name')
        return
    for p in pages:
        resize(u'Файл:'+p)

try:
    main()
finally:
    wikipedia.stopme()
Downgrade Counter