Revision: 7639 Author: misza13 Date: 2009-11-12 17:47:47 +0000 (Thu, 12 Nov 2009)
Log Message: ----------- Revert of r7630 - breaks the bot with a "language none not found in wikipedia family file" error. wikipedia.handleArgs is not compatible with OptionParse used by this script.
Modified Paths: -------------- trunk/pywikipedia/archivebot.py
Modified: trunk/pywikipedia/archivebot.py =================================================================== --- trunk/pywikipedia/archivebot.py 2009-11-12 15:01:35 UTC (rev 7638) +++ trunk/pywikipedia/archivebot.py 2009-11-12 17:47:47 UTC (rev 7639) @@ -26,7 +26,6 @@ -c PAGE, --calc=PAGE calculate key for PAGE and exit -l LOCALE, --locale=LOCALE switch to locale LOCALE - -L LANG, --lang=LANG set the language code to work on """ # # (C) Misza13, 2006-2007 @@ -36,6 +35,8 @@ __version__ = '$Id$' # import wikipedia, pagegenerators, query +Site = wikipedia.getSite() + import os, re, time, locale, traceback, string, urllib
try: #Get a constructor for the MD5 hash object @@ -45,6 +46,8 @@ import md5 new_hash = md5.md5
+ +language = Site.language() messages = { '_default': { 'ArchiveFull': u'(ARCHIVE FULL)', @@ -121,8 +124,7 @@ }, }
-def message(key): - lang = wikipedia.getSite().language() +def message(key, lang=Site.language()): if not lang in messages: lang = '_default' return messages[lang][key] @@ -265,11 +267,7 @@ TM = re.search(r'(\d\d?). (\S+) (\d\d\d\d) kl.\W*(\d\d):(\d\d) (.*?)', line) #3. joulukuuta 2008 kello 16.26 (EET) if not TM: - TM = re.search(r'(\d\d?). (\S+) (\d\d\d\d) kello \W*(\d\d).(\d\d) (.*?)', line) - if not TM: -# 14:23, 12. Jan. 2009 (UTC) - pat = re.compile(r'(\d\d):(\d\d), (\d\d?). (\S+).? (\d\d\d\d) (UTC)') - TM = pat.search(line) + TM = re.search(r'(\d\d?). (\S+) (\d\d\d\d) kello \W*(\d\d).(\d\d) (.*?)', line) if TM: # wikipedia.output(TM) TIME = txt2timestamp(TM.group(0),"%d. %b %Y kl. %H:%M (%Z)") @@ -289,8 +287,6 @@ TIME = txt2timestamp(TM.group(0),"%H:%M, %b %d, %Y (%Z)") if not TIME: TIME = txt2timestamp(TM.group(0),"%d. %Bta %Y kello %H.%M (%Z)") - if not TIME: - TIME = txt2timestamp(TM.group(0),"%H:%M, %d. %b. %Y (%Z)") if TIME: self.timestamp = max(self.timestamp,time.mktime(TIME)) # wikipedia.output(u'Time to be parsed: %s' % TM.group(0)) @@ -322,11 +318,10 @@ Feed threads to it and run an update() afterwards.""" #TODO: Make it a subclass of wikipedia.Page
- def __init__(self, site, title, archiver, vars=None): - self.site = site + def __init__(self, title, archiver, vars=None): self.title = title self.threads = [] - self.Page = wikipedia.Page(self.site, self.title) + self.Page = wikipedia.Page(Site,self.title) self.full = False self.archiver = archiver self.vars = vars @@ -396,7 +391,7 @@ pageSummary = message('PageSummary') archiveSummary = message('ArchiveSummary')
- def __init__(self, site, Page, tpl, salt, force=False): + def __init__(self, Page, tpl, salt, force=False): self.attributes = { 'algo' : ['old(24h)',False], 'archive' : ['',False], @@ -407,8 +402,7 @@ self.tpl = tpl self.salt = salt self.force = force - self.site = site - self.Page = DiscussionPage(self.site, Page.title(),self) + self.Page = DiscussionPage(Page.title(),self) self.loadConfig() self.commentParams = { 'from' : self.Page.title, @@ -436,7 +430,7 @@
def loadConfig(self): hdrlines = self.Page.header.split('\n') - wikipedia.output(u'Looking for: %s' % self.tpl) +# wikipedia.output(u'Looking for: %s' % self.tpl) mode = 0 for line in hdrlines: if mode == 0 and re.search('{{'+self.tpl,line): @@ -503,7 +497,7 @@ return set(whys)
def run(self): - if not self.Page.Page.botMayEdit(wikipedia.getSite().username): + if not self.Page.Page.botMayEdit(Site.username): return whys = self.analyzePage() if self.archivedThreads < int(self.get('minthreadstoarchive',2)): @@ -544,20 +538,17 @@ help='calculate key for PAGE and exit', metavar='PAGE') parser.add_option('-l', '--locale', dest='locale', help='switch to locale LOCALE', metavar='LOCALE') - parser.add_option('-L', '--lang', dest='lang', - help='current language code', metavar='lang') parser.add_option('-T', '--timezone', dest='timezone', help='switch timezone to TIMEZONE', metavar='TIMEZONE') (options, args) = parser.parse_args() - Site = wikipedia.getSite(code=options.lang) - wikipedia.handleArgs('-lang:%s' %options.lang) - language = Site.language() + if options.locale: locale.setlocale(locale.LC_TIME,options.locale) #Required for english month names
- if hasattr(time, 'tzset') and options.timezone: + if options.timezone: os.environ['TZ'] = options.timezone - time.tzset() + #Or use the preset value + time.tzset()
if options.calc: if not options.salt: @@ -600,7 +591,7 @@
for pg in pagelist: try: #Catching exceptions, so that errors in one page do not bail out the entire process - Archiver = PageArchiver(Site, pg, a, salt, force) + Archiver = PageArchiver(pg, a, salt, force) Archiver.run() time.sleep(10) except: @@ -611,7 +602,5 @@
if __name__ == '__main__': - try: - main() - finally: - wikipedia.stopme() + main() + wikipedia.stopme()
pywikipedia-svn@lists.wikimedia.org