Revision: 7711
Author: xqt
Date: 2009-11-30 09:20:11 +0000 (Mon, 30 Nov 2009)
Log Message:
-----------
* option -restore:all for restoring all dump files which are
in the interwikidump directory
* docu for restore-options and dump files
* readOptions becomes class instance,
enables global settings by list objects
* detects self link redirects and don't process them
* return last dump filename, prevents deleting it on interrupt
* put main stuff to main()
Modified Paths:
--------------
trunk/pywikipedia/interwiki.py
Modified: trunk/pywikipedia/interwiki.py
===================================================================
--- trunk/pywikipedia/interwiki.py 2009-11-28 22:35:07 UTC (rev 7710)
+++ trunk/pywikipedia/interwiki.py 2009-11-30 09:20:11 UTC (rev 7711)
@@ -39,11 +39,18 @@
This implies -noredirect.
-restore: restore a set of "dumped" pages the robot was working on
- when it terminated.
+ when it terminated. The dump file will be subsequently
+ removed.
+ -restore:all restore a set of "dumped" pages of all dumpfiles to a given
+ family remaining in the "interwiki-dumps" directory. All
+ these dump files will be subsequently removed. If restoring
+ process interrupts again, it saves all unprocessed pages in
+ one new dump file of the given site.
+
-continue: like restore, but after having gone through the dumped pages,
continue alphabetically starting at the last of the dumped
- pages.
+ pages. The dump file will be subsequently removed.
-warnfile: used as -warnfile:filename, reads all warnings from the
given file that apply to the home wiki language,
@@ -53,7 +60,7 @@
against the live wiki is using the warnfile.py
script.
- -quiet Use this option to get less output
+ -quiet: Use this option to get less output
Additionaly, these arguments can be used to restrict the bot to certain pages:
@@ -269,9 +276,10 @@
If interwiki.py is terminated before it is finished, it will write a dump file
to the interwiki-dumps subdirectory. The program will read it if invoked with
the "-restore" or "-continue" option, and finish all the subjects in that list.
-To run the interwiki-bot on all pages on a language, run it with option
-"-start:!", and if it takes so long you have to break it off, use "-continue"
-next time.
+After finishing the dump file will be deleted. To run the interwiki-bot on all
+pages on a language, run it with option "-start:!", and if it takes so long you
+have to break it off, use "-continue" next time.
+
"""
#
# (C) Rob W.W. Hooft, 2003
@@ -541,6 +549,113 @@
minlinks = 0
quiet = False
+ def readOptions(self, arg):
+ if arg == '-noauto':
+ self.auto = False
+ elif arg.startswith('-hint:'):
+ self.hints.append(arg[6:])
+ elif arg.startswith('-hintfile'):
+ hintfilename = arg[10:]
+ if (hintfilename is None) or (hintfilename == ''):
+ hintfilename = pywikibot.input(u'Please enter the hint filename:')
+ f = codecs.open(hintfilename, 'r', config.textfile_encoding)
+ R = re.compile(ur'\[\[(.+?)(?:\]\]|\|)') # hint or title ends either before | or before ]]
+ for pageTitle in R.findall(f.read()):
+ self.hints.append(pageTitle)
+ f.close()
+ elif arg == '-force':
+ self.force = True
+ elif arg == '-same':
+ self.same = True
+ elif arg == '-wiktionary':
+ self.same = 'wiktionary'
+ elif arg == '-untranslated':
+ self.untranslated = True
+ elif arg == '-untranslatedonly':
+ self.untranslated = True
+ self.untranslatedonly = True
+ elif arg == '-askhints':
+ self.untranslated = True
+ self.untranslatedonly = False
+ self.askhints = True
+ elif arg == '-hintnobracket':
+ self.hintnobracket = True
+ elif arg == '-confirm':
+ self.confirm = True
+ elif arg == '-select':
+ self.select = True
+ elif arg == '-autonomous' or arg == '-auto':
+ self.autonomous = True
+ elif arg == '-noredirect':
+ self.followredirect = False
+ elif arg == '-initialredirect':
+ self.initialredirect = True
+ elif arg == '-localonly':
+ self.localonly = True
+ elif arg == '-limittwo':
+ self.limittwo = True
+ self.strictlimittwo = True
+ elif arg.startswith('-whenneeded'):
+ self.limittwo = True
+ self.strictlimittwo = False
+ try:
+ self.needlimit = int(arg[12:])
+ except KeyError:
+ pass
+ except ValueError:
+ pass
+ elif arg.startswith('-skipfile:'):
+ skipfile = arg[10:]
+ skipPageGen = pagegenerators.TextfilePageGenerator(skipfile)
+ for page in skipPageGen:
+ self.skip.add(page)
+ del skipPageGen
+ elif arg == '-skipauto':
+ self.skipauto = True
+ elif arg.startswith('-neverlink:'):
+ self.neverlink += arg[11:].split(",")
+ elif arg.startswith('-ignore:'):
+ self.ignore += [pywikibot.Page(None,p) for p in arg[8:].split(",")]
+ elif arg.startswith('-ignorefile:'):
+ ignorefile = arg[12:]
+ ignorePageGen = pagegenerators.TextfilePageGenerator(ignorefile)
+ for page in ignorePageGen:
+ self.ignore.append(page)
+ del ignorePageGen
+ elif arg == '-showpage':
+ self.showtextlink += self.showtextlinkadd
+ elif arg == '-graph':
+ # override configuration
+ config.interwiki_graph = True
+ elif arg == '-bracket':
+ self.parenthesesonly = True
+ elif arg == '-localright':
+ self.followinterwiki = False
+ elif arg == '-hintsareright':
+ self.hintsareright = True
+ elif arg.startswith('-array:'):
+ self.minsubjects = int(arg[7:])
+ elif arg.startswith('-query:'):
+ self.maxquerysize = int(arg[7:])
+ elif arg == '-back':
+ self.nobackonly = True
+ elif arg == '-async':
+ self.async = True
+ elif arg == '-giveup':
+ self.giveup = True
+ elif arg == '-quiet':
+ self.quiet = True
+ elif arg.startswith('-lack:'):
+ remainder = arg[6:].split(':')
+ self.lacklanguage = remainder[0]
+ if len(remainder) > 1:
+ self.minlinks = int(remainder[1])
+ else:
+ self.minlinks = 1
+ else:
+ return False
+ return True
+
class StoredPage(pywikibot.Page):
"""
Store the Page contents on disk to avoid sucking too much
@@ -1127,9 +1242,11 @@
if globalvar.initialredirect:
if globalvar.contentsondisk:
redirectTargetPage = StoredPage(redirectTargetPage)
- self.originPage = redirectTargetPage
- self.todo.add(redirectTargetPage)
- counter.plus(redirectTargetPage.site)
+ #don't follow double redirects; it might be a self loop
+ if not redirectTargetPage.isRedirectPage():
+ self.originPage = redirectTargetPage
+ self.todo.add(redirectTargetPage)
+ counter.plus(redirectTargetPage.site)
else:
# This is a redirect page to the origin. We don't need to
# follow the redirection.
@@ -1744,13 +1861,14 @@
dumpfn = pywikibot.config.datafilepath(
'interwiki-dumps',
'interwikidump-%s-%s.txt' % (site.family.name, site.lang))
- if append: mode = 'a'
- else: mode = 'w'
- f = codecs.open(dumpfn, mode, 'utf-8')
+ if append: mode = 'appended'
+ else: mode = 'written'
+ f = codecs.open(dumpfn, mode[0], 'utf-8')
for subj in self.subjects:
f.write(subj.originPage.aslink(None)+'\n')
f.close()
- pywikibot.output(u'Dump %s (%s) saved' % (site.lang, site.family.name))
+ pywikibot.output(u'Dump %s (%s) %s.' % (site.lang, site.family.name, mode))
+ return dumpfn
def generateMore(self, number):
"""Generate more subjects. This is called internally when the
@@ -1940,8 +2058,7 @@
removing = sorted(oldiw - newiw)
modifying = sorted(site for site in oldiw & newiw if old[site] != new[site])
- mcomment = u''
- mods = u""
+ mcomment = mods = u''
if len(adding) + len(removing) + len(modifying) <= 3:
# Use an extended format for the string linking to all added pages.
@@ -1950,11 +2067,10 @@
# Use short format, just the language code
fmt = lambda d, site: site.lang
+ head, add, rem, mod = pywikibot.translate(insite.lang, msg)
+
colon = u': '
comma = u', '
-
- head, add, rem, mod = pywikibot.translate(insite.lang, msg)
-
sep = u''
if adding:
@@ -1980,274 +2096,208 @@
hintStrings = ['%s:%s' % (hintedPage.site().language(), hintedPage.title()) for hintedPage in pagelist]
bot.add(page, hints = hintStrings)
-#===========
+def main():
+ singlePageTitle = []
+ start = None
+ # Which namespaces should be processed?
+ # default to [] which means all namespaces will be processed
+ namespaces = []
+ number = None
+ until = None
+ warnfile = None
+ # a normal PageGenerator (which doesn't give hints, only Pages)
+ hintlessPageGen = None
+ optContinue = False
+ optRestore = False
+ restoreAll = False
+ restoredFiles = []
+ File2Restore = []
+ dumpFileName = ''
+ append = True
+ newPages = None
+ # This factory is responsible for processing command line arguments
+ # that are also used by other scripts and that determine on which pages
+ # to work on.
+ genFactory = pagegenerators.GeneratorFactory()
-globalvar=Global()
+ for arg in pywikibot.handleArgs():
+ if globalvar.readOptions(arg):
+ continue
+ elif arg.startswith('-xml'):
+ if len(arg) == 4:
+ xmlFilename = pywikibot.input(u'Please enter the XML dump\'s filename:')
+ else:
+ xmlFilename = arg[5:]
+ hintlessPageGen = XmlDumpLmoLinkPageGenerator(xmlFilename)
+ elif arg.startswith('-warnfile:'):
+ warnfile = arg[10:]
+ elif arg.startswith('-years'):
+ # Look if user gave a specific year at which to start
+ # Must be a natural number or negative integer.
+ if len(arg) > 7 and (arg[7:].isdigit() or (arg[7] == "-" and arg[8:].isdigit())):
+ startyear = int(arg[7:])
+ else:
+ startyear = 1
+ # avoid problems where year pages link to centuries etc.
+ globalvar.followredirect = False
+ hintlessPageGen = pagegenerators.YearPageGenerator(startyear)
+ elif arg.startswith('-days'):
+ if len(arg) > 6 and arg[5] == ':' and arg[6:].isdigit():
+ # Looks as if the user gave a specific month at which to start
+ # Must be a natural number.
+ startMonth = int(arg[6:])
+ else:
+ startMonth = 1
+ hintlessPageGen = pagegenerators.DayPageGenerator(startMonth)
+ elif arg.startswith('-new'):
+ if len(arg) > 5 and arg[4] == ':' and arg[5:].isdigit():
+ # Looks as if the user gave a specific number of pages
+ newPages = int(arg[5:])
+ else:
+ newPages = 100
+ elif arg.startswith('-restore'):
+ restoreAll = arg[9:].lower() == 'all'
+ optRestore = not restoreAll
+ elif arg == '-continue':
+ optContinue = True
+ elif arg.startswith('-namespace:'):
+ try:
+ namespaces.append(int(arg[11:]))
+ except ValueError:
+ namespaces.append(arg[11:])
+ # deprecated for consistency with other scripts
+ elif arg.startswith('-number:'):
+ number = int(arg[8:])
+ elif arg.startswith('-until:'):
+ until = arg[7:]
+ else:
+ if not genFactory.handleArg(arg):
+ singlePageTitle.append(arg)
-if __name__ == "__main__":
+ # ensure that we don't try to change main page
try:
- singlePageTitle = []
- start = None
- # Which namespaces should be processed?
- # default to [] which means all namespaces will be processed
- namespaces = []
- number = None
- until = None
- warnfile = None
- # a normal PageGenerator (which doesn't give hints, only Pages)
- hintlessPageGen = None
- optContinue = False
- optRestore = False
- newPages = None
- # This factory is responsible for processing command line arguments
- # that are also used by other scripts and that determine on which pages
- # to work on.
- genFactory = pagegenerators.GeneratorFactory()
- dumped = False
+ site = pywikibot.getSite()
+ try:
+ mainpagename = site.siteinfo()['mainpage']
+ except TypeError: #pywikibot module handle
+ mainpagename = site.siteinfo['mainpage']
+ globalvar.skip.add(pywikibot.Page(site, mainpagename))
+ except pywikibot.Error:
+ pywikibot.output(u'Missing main page name')
- for arg in pywikibot.handleArgs():
- if arg.startswith('-xml'):
- if len(arg) == 4:
- xmlFilename = pywikibot.input(u'Please enter the XML dump\'s filename:')
- else:
- xmlFilename = arg[5:]
- hintlessPageGen = XmlDumpLmoLinkPageGenerator(xmlFilename)
- elif arg == '-noauto':
- globalvar.auto = False
- elif arg.startswith('-hint:'):
- globalvar.hints.append(arg[6:])
- elif arg.startswith('-hintfile'):
- hintfilename = arg[10:]
- if (hintfilename is None) or (hintfilename == ''):
- hintfilename = pywikibot.input(u'Please enter the hint filename:')
- f = codecs.open(hintfilename, 'r', config.textfile_encoding)
- R = re.compile(ur'\[\[(.+?)(?:\]\]|\|)') # hint or title ends either before | or before ]]
- for pageTitle in R.findall(f.read()):
- globalvar.hints.append(pageTitle)
- f.close()
- elif arg == '-force':
- globalvar.force = True
- elif arg == '-same':
- globalvar.same = True
- elif arg == '-wiktionary':
- globalvar.same = 'wiktionary'
- elif arg == '-untranslated':
- globalvar.untranslated = True
- elif arg == '-untranslatedonly':
- globalvar.untranslated = True
- globalvar.untranslatedonly = True
- elif arg == '-askhints':
- globalvar.untranslated = True
- globalvar.untranslatedonly = False
- globalvar.askhints = True
- elif arg == '-noauto':
- pass
- elif arg == '-hintnobracket':
- globalvar.hintnobracket = True
- elif arg.startswith('-warnfile:'):
- warnfile = arg[10:]
- elif arg == '-confirm':
- globalvar.confirm = True
- elif arg == '-select':
- globalvar.select = True
- elif arg == '-autonomous' or arg == '-auto':
- globalvar.autonomous = True
- elif arg == '-noredirect':
- globalvar.followredirect = False
- elif arg == '-initialredirect':
- globalvar.initialredirect = True
- elif arg == '-localonly':
- globalvar.localonly = True
- elif arg == '-limittwo':
- globalvar.limittwo = True
- globalvar.strictlimittwo = True
- elif arg.startswith('-whenneeded'):
- globalvar.limittwo = True
- globalvar.strictlimittwo = False
- try:
- globalvar.needlimit = int(arg[12:])
- except KeyError:
- pass
- except ValueError:
- pass
- elif arg.startswith('-years'):
- # Look if user gave a specific year at which to start
- # Must be a natural number or negative integer.
- if len(arg) > 7 and (arg[7:].isdigit() or (arg[7] == "-" and arg[8:].isdigit())):
- startyear = int(arg[7:])
- else:
- startyear = 1
- # avoid problems where year pages link to centuries etc.
- globalvar.followredirect = False
- hintlessPageGen = pagegenerators.YearPageGenerator(startyear)
- elif arg.startswith('-days'):
- if len(arg) > 6 and arg[5] == ':' and arg[6:].isdigit():
- # Looks as if the user gave a specific month at which to start
- # Must be a natural number.
- startMonth = int(arg[6:])
- else:
- startMonth = 1
- hintlessPageGen = pagegenerators.DayPageGenerator(startMonth)
- elif arg.startswith('-new'):
- if len(arg) > 5 and arg[4] == ':' and arg[5:].isdigit():
- # Looks as if the user gave a specific number of pages
- newPages = int(arg[5:])
- else:
- newPages = 100
- elif arg.startswith('-skipfile:'):
- skipfile = arg[10:]
- skipPageGen = pagegenerators.TextfilePageGenerator(skipfile)
- for page in skipPageGen:
- globalvar.skip.add(page)
- del skipPageGen
- elif arg == '-skipauto':
- globalvar.skipauto = True
- elif arg == '-restore':
- optRestore = True
- elif arg == '-continue':
- optContinue = True
- elif arg.startswith('-namespace:'):
- try:
- namespaces.append(int(arg[11:]))
- except ValueError:
- namespaces.append(arg[11:])
- # deprecated for consistency with other scripts
- elif arg.startswith('-number:'):
- number = int(arg[8:])
- elif arg.startswith('-until:'):
- until = arg[7:]
- elif arg.startswith('-neverlink:'):
- globalvar.neverlink += arg[11:].split(",")
- elif arg.startswith('-ignore:'):
- globalvar.ignore += [pywikibot.Page(None,p) for p in arg[8:].split(",")]
- elif arg.startswith('-ignorefile:'):
- ignorefile = arg[12:]
- ignorePageGen = pagegenerators.TextfilePageGenerator(ignorefile)
- for page in ignorePageGen:
- globalvar.ignore.append(page)
- del ignorePageGen
- elif arg == '-showpage':
- globalvar.showtextlink += globalvar.showtextlinkadd
- elif arg == '-graph':
- # override configuration
- config.interwiki_graph = True
- elif arg == '-bracket':
- globalvar.parenthesesonly = True
- elif arg == '-localright':
- globalvar.followinterwiki = False
- elif arg == '-hintsareright':
- globalvar.hintsareright = True
- elif arg.startswith('-array:'):
- globalvar.minsubjects = int(arg[7:])
- elif arg.startswith('-query:'):
- globalvar.maxquerysize = int(arg[7:])
- elif arg.startswith('-lack:'):
- remainder = arg[6:].split(':')
- globalvar.lacklanguage = remainder[0]
- if len(remainder) > 1:
- globalvar.minlinks = int(remainder[1])
- else:
- globalvar.minlinks = 1
- elif arg == '-back':
- globalvar.nobackonly = True
- elif arg == '-quiet':
- globalvar.quiet = True
- else:
- if not genFactory.handleArg(arg):
- singlePageTitle.append(arg)
+ if newPages is not None:
+ if len(namespaces) == 0:
+ ns = 0
+ elif len(namespaces) == 1:
+ ns = namespaces[0]
+ if ns != 'all':
+ if isinstance(ns, unicode) or isinstance(ns, str):
+ index = site.getNamespaceIndex(ns)
+ if index is None:
+ raise ValueError(u'Unknown namespace: %s' % ns)
+ ns = index
+ namespaces = []
+ else:
+ ns = 'all'
+ hintlessPageGen = pagegenerators.NewpagesPageGenerator(newPages, namespace=ns)
- # ensure that we don't try to change main page
- try:
- site = pywikibot.getSite()
- try:
- mainpagename = site.siteinfo()['mainpage']
- except TypeError: #pywikibot module handle
- mainpagename = site.siteinfo['mainpage']
-
- globalvar.skip.add(pywikibot.Page(site, mainpagename))
- except pywikibot.Error:
- pywikibot.output(u'Missing main page name')
-
- if newPages is not None:
- if len(namespaces) == 0:
- ns = 0
- elif len(namespaces) == 1:
- ns = namespaces[0]
- if ns != 'all':
- if isinstance(ns, unicode) or isinstance(ns, str):
- index = site.getNamespaceIndex(ns)
- if index is None:
- raise ValueError(u'Unknown namespace: %s' % ns)
- ns = index
- namespaces = []
- else:
- ns = 'all'
- hintlessPageGen = pagegenerators.NewpagesPageGenerator(newPages, namespace=ns)
-
- if optRestore or optContinue:
- site = pywikibot.getSite()
- dumpFileName = pywikibot.config.datafilepath(
+ elif optRestore or optContinue or restoreAll:
+ site = pywikibot.getSite()
+ if restoreAll:
+ import glob
+ for FileName in glob.iglob('interwiki-dumps/interwikidump-*.txt'):
+ s = FileName.split('\\')[1].split('.')[0].split('-')
+ sitename = s[1]
+ for i in range(0,2): s.remove(s[0])
+ sitelang = '-'.join(s)
+ if site.family.name == sitename:
+ File2Restore.append([sitename, sitelang])
+ else:
+ File2Restore.append([site.family.name, site.lang])
+ for sitename, sitelang in File2Restore:
+ dumpfn = pywikibot.config.datafilepath(
'interwiki-dumps',
u'interwikidump-%s-%s.txt'
- % (site.family.name, site.lang))
- hintlessPageGen = pagegenerators.TextfilePageGenerator(dumpFileName)
+ % (sitename, sitelang))
+ pywikibot.output(u'Reading interwikidump-%s-%s.txt' % (sitename, sitelang))
+ site = pywikibot.getSite(sitelang, sitename)
+ if not hintlessPageGen:
+ hintlessPageGen = pagegenerators.TextfilePageGenerator(dumpfn, site)
+ else:
+ hintlessPageGen = pagegenerators.CombinedPageGenerator([hintlessPageGen,pagegenerators.TextfilePageGenerator(dumpfn, site)])
+ restoredFiles.append(dumpfn)
+ if hintlessPageGen:
hintlessPageGen = pagegenerators.DuplicateFilterPageGenerator(hintlessPageGen)
- if optContinue:
- # We waste this generator to find out the last page's title
- # This is an ugly workaround.
- nextPage = "!"
- namespace = 0
- for page in hintlessPageGen:
- lastPage = page.titleWithoutNamespace()
- if lastPage > nextPage:
- nextPage = lastPage
- namespace = page.namespace()
- if nextPage == "!":
- pywikibot.output(u"Dump file is empty?! Starting at the beginning.")
- else:
- nextPage = page.titleWithoutNamespace() + '!'
- # old generator is used up, create a new one
- hintlessPageGen = pagegenerators.CombinedPageGenerator([pagegenerators.TextfilePageGenerator(dumpFileName), pagegenerators.AllpagesPageGenerator(nextPage, namespace, includeredirects = False)])
+ if optContinue:
+ # We waste this generator to find out the last page's title
+ # This is an ugly workaround.
+ nextPage = "!"
+ namespace = 0
+ for page in hintlessPageGen:
+ lastPage = page.titleWithoutNamespace()
+ if lastPage > nextPage:
+ nextPage = lastPage
+ namespace = page.namespace()
+ if nextPage == "!":
+ pywikibot.output(u"Dump file is empty?! Starting at the beginning.")
+ else:
+ nextPage = page.titleWithoutNamespace() + '!'
+ # old generator is used up, create a new one
+ #hintlessPageGen = pagegenerators.CombinedPageGenerator([pagegenerators.TextfilePageGenerator(dumpFileName), pagegenerators.AllpagesPageGenerator(nextPage, namespace, includeredirects = False)])
+ hintlessPageGen = pagegenerators.CombinedPageGenerator([hintlessPageGen, pagegenerators.AllpagesPageGenerator(nextPage, namespace, includeredirects = False)])
+ if not hintlessPageGen:
+ pywikibot.output(u'No Dumpfiles found.')
+ return
- bot = InterwikiBot()
+ bot = InterwikiBot()
- if not hintlessPageGen:
- hintlessPageGen = genFactory.getCombinedGenerator()
- if hintlessPageGen:
- if len(namespaces) > 0:
- hintlessPageGen = pagegenerators.NamespaceFilterPageGenerator(hintlessPageGen, namespaces)
- # we'll use iter() to create make a next() function available.
- bot.setPageGenerator(iter(hintlessPageGen), number = number, until=until)
- elif warnfile:
- # TODO: filter namespaces if -namespace parameter was used
- readWarnfile(warnfile, bot)
- else:
- singlePageTitle = ' '.join(singlePageTitle)
- if not singlePageTitle:
- singlePageTitle = pywikibot.input(u'Which page to check:')
- singlePage = pywikibot.Page(pywikibot.getSite(), singlePageTitle)
- bot.add(singlePage, hints = globalvar.hints)
+ if not hintlessPageGen:
+ hintlessPageGen = genFactory.getCombinedGenerator()
+ if hintlessPageGen:
+ if len(namespaces) > 0:
+ hintlessPageGen = pagegenerators.NamespaceFilterPageGenerator(hintlessPageGen, namespaces)
+ # we'll use iter() to create make a next() function available.
+ bot.setPageGenerator(iter(hintlessPageGen), number = number, until=until)
+ elif warnfile:
+ # TODO: filter namespaces if -namespace parameter was used
+ readWarnfile(warnfile, bot)
+ else:
+ singlePageTitle = ' '.join(singlePageTitle)
+ if not singlePageTitle:
+ singlePageTitle = pywikibot.input(u'Which page to check:')
+ singlePage = pywikibot.Page(pywikibot.getSite(), singlePageTitle)
+ bot.add(singlePage, hints = globalvar.hints)
+ try:
try:
+ append = not (optRestore or optContinue or restoreAll)
+ bot.run()
+ except KeyboardInterrupt:
+ dumpFileName = bot.dump(append)
+ except:
+ dumpFileName = bot.dump(append)
+ raise
+ finally:
+ if globalvar.contentsondisk:
+ StoredPage.SPdeleteStore()
+ if dumpFileName:
try:
- bot.run()
- except KeyboardInterrupt:
- bot.dump(not (optRestore or optContinue))
- dumped = True
- except:
- bot.dump(not (optRestore or optContinue))
- dumped = True
- raise
- finally:
- if globalvar.contentsondisk:
- StoredPage.SPdeleteStore()
- if (optRestore or optContinue) and not dumped:
- try:
- os.remove(dumpFileName)
- pywikibot.output(u'Dumpfile %s deleted' % dumpFileName)
- except WindowsError:
- pass
+ restoredFiles.remove(dumpFileName)
+ except ValueError:
+ pass
+ for dumpFileName in restoredFiles:
+ try:
+ os.remove(dumpFileName)
+ pywikibot.output(u'Dumpfile %s deleted' % dumpFileName.split('\\')[-1])
+ except WindowsError:
+ pass
+#===========
+globalvar=Global()
+
+if __name__ == "__main__":
+ try:
+ main()
finally:
pywikibot.stopme()