Redaktor:Atomobot/atomobot makecosmetics.py

#!/usr/bin/python2.4
# -*- coding: utf-8  -*-

from datetime import date, datetime, timedelta
import re
import socket
import wikipedia
import catlib
import atomobot_settings as config
from atomobot_date import AtomobotDate
from atomobot_language import AtomobotLanguageSlovak
from atomobot_misc import dequotize, dewikize
from atomobot_cosmetics import AtomobotCosmetics


lang = AtomobotLanguageSlovak()



class AtomobotMakeCosmetics( object ):

    def __init__( self ):
        self.readonly = True


    def make_cosmetics( self, artname ):
        p = wikipedia.Page( self.site, artname )
        data = p.get()
        old_data = data
        data = self.cosmetics.cosmetize( data )
        summary = u'kozmetika'
        if data == old_data:
            print 'NO CHANGE NEEDED'
            return
        if not self.readonly:
            self.strong_put( p, data, summary )


    def strong_put( self, page, data, summary ):
        MAX_RETRIES = 20
        retries = 0
        while retries < MAX_RETRIES:
            retries += 1
            try:
                page.put( data, summary )
            except socket.error, exc:
                print '#%02d socket error - retrying' % retries
                continue
            break


    def run( self, artname, readonly=True ):
        self.readonly = readonly
        self.atomodate = AtomobotDate( lang )
        self.site = wikipedia.getSite()
        self.site.forceLogin()
        self.cosmetics = AtomobotCosmetics()
        self.make_cosmetics( artname )
        wikipedia.stopme()



def main():
    print 'Article name:',
    artname = unicode( raw_input(), 'utf8' )
    if not artname:
        return
    print 'Read only (Y/n)?',
    readonly = not ( raw_input() in ( 'N', 'n' ) )
    make_cosm = AtomobotMakeCosmetics()
    make_cosm.run( artname, readonly )


main()