Revision: 8761
Author: purodha
Date: 2010-12-06 02:14:54 +0000 (Mon, 06 Dec 2010)
Log Message:
-----------
Cosmetic: few glitches from description and comments removed, better formatting of some
long source lines.
Modified Paths:
--------------
trunk/pywikipedia/interwiki.py
Modified: trunk/pywikipedia/interwiki.py
===================================================================
--- trunk/pywikipedia/interwiki.py 2010-12-05 22:07:02 UTC (rev 8760)
+++ trunk/pywikipedia/interwiki.py 2010-12-06 02:14:54 UTC (rev 8761)
@@ -60,18 +60,6 @@
against the live wiki is using the warnfile.py
script.
- -quiet: Use this option to get less output
-
- -async: Put page on queue to be saved to wiki asynchronously. This
- enables loading pages during saving throtteling and gives a
- better performance.
- NOTE: For post-processing it always assumes that saving the
- the pages was sucessful.
-
- -summary: Set an additional action summary message for the edit. This
- could be used for further explainings of the bot action.
- This will only be used in non-autonomous mode.
-
Additionaly, these arguments can be used to restrict the bot to certain pages:
-namespace:n Number or name of namespace to process. The parameter can be
@@ -104,8 +92,22 @@
-lack: used as -lack:xx with xx a language code: only work on pages
without links to language xx. You can also add a number nn
like -lack:xx:nn, so that the bot only works on pages with
- at least n interwiki links (the default value for n is 1).
-
+ at least nn interwiki links (the default value for nn is 1).
+
+These arguments control miscellanous bot behaviour:
+
+ -quiet: Use this option to get less output
+
+ -async: Put page on queue to be saved to wiki asynchronously. This
+ enables loading pages during saving throtteling and gives a
+ better performance.
+ NOTE: For post-processing it always assumes that saving the
+ the pages was sucessful.
+
+ -summary: Set an additional action summary message for the edit. This
+ could be used for further explainings of the bot action.
+ This will only be used in non-autonomous mode.
+
These arguments are useful to provide hints to the bot:
-hint: used as -hint:de:Anweisung to give the robot a hint
@@ -206,7 +208,7 @@
-initialredirect work on its target if a redirect or category redirect is
entered on the command line or by a generator (note: without
- ending colon). It is recommended to use this option with
+ ending colon). It is recommended to use this option with the
-movelog pagegenerator.
-neverlink: used as -neverlink:xx where xx is a language code:
@@ -220,10 +222,10 @@
-ignorefile: similar to -ignore, except that the pages are taken from
the given file instead of the command line.
- -localright do not follow interwiki from other pages than the starting
- page. (Warning! Should be used very sparingly, only when
- you are sure you have first gotten the interwiki on the
- starting page exactly right).
+ -localright do not follow interwiki links from other pages than the
+ starting page. (Warning! Should be used very sparingly,
+ only when you are sure you have first gotten the interwiki
+ links on the starting page exactly right).
(note: without ending colon)
-hintsareright do not follow interwiki links to sites for which hints
@@ -248,23 +250,25 @@
-limittwo only update two pages - one in the local wiki (if logged-in)
and one in the top available one.
For example, if the local page has links to de and fr,
- this option will make sure that only local and de: (larger)
- site is updated. This option is useful to quickly set two
- way links without updating all of wiki's sites.
+ this option will make sure that only the local site and
+ the de: (larger) sites are updated. This option is useful
+ to quickly set two way links without updating all of
+ wiki families sites.
(note: without ending colon)
-whenneeded works like limittwo, but other languages are changed in the
following cases:
- * If there are no interwiki at all on the page
- * If an interwiki must be removed
- * If an interwiki must be changed and there has been a
- conflict for this page
+ * If there are no interwiki links at all on the page
+ * If an interwiki link must be removed
+ * If an interwiki link must be changed and there has been
+ a conflict for this page
Optionally, -whenneeded can be given an additional number
(for example -whenneeded:3), in which case other languages
will be changed if there are that number or more links to
change or add. (note: without ending colon)
The following arguments influence how many pages the bot works on at once:
+
-array: The number of pages the bot tries to be working on at once.
If the number of pages loaded is lower than this number,
a new set of pages is loaded from the starting wiki. The
@@ -297,8 +301,8 @@
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.
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.
+pages on a language, run it with option "-start:!", and if it takes so long
+ithat you have to break it off, use "-continue" next time.
"""
#
@@ -822,7 +826,7 @@
# to the original topic than pages found later on, after
# 3, 4, 5 or more interwiki hops.
- # Keeping this order is hence important to display ordered
+ # Keeping this order is hence important to display an ordered
# list of pages to the user when he'll be asked to resolve
# conflicts.
self.tree = {}
@@ -1130,17 +1134,24 @@
if linkedPage.namespace() in nsmatch:
return False
if globalvar.autonomous:
- pywikibot.output(u"NOTE: Ignoring link from page %s in namespace %i
to page %s in namespace %i." % (linkingPage.aslink(True), linkingPage.namespace(),
linkedPage.aslink(True), linkedPage.namespace()))
+ pywikibot.output(u"NOTE: Ignoring link from page %s in namespace %i
to page %s in namespace %i."
+ % (linkingPage.aslink(True), linkingPage.namespace(),
+ linkedPage.aslink(True), linkedPage.namespace()))
# Fill up foundIn, so that we will not write this notice
self.foundIn[linkedPage] = [linkingPage]
return True
else:
preferredPage = self.getFoundInCorrectNamespace(linkedPage.site())
if preferredPage:
- pywikibot.output(u"NOTE: Ignoring link from page %s in namespace
%i to page %s in namespace %i because page %s in the correct namespace has already been
found." % (linkingPage.aslink(True), linkingPage.namespace(),
linkedPage.aslink(True), linkedPage.namespace(), preferredPage.aslink(True)))
+ pywikibot.output(u"NOTE: Ignoring link from page %s in namespace
%i to page %s in namespace %i because page %s in the correct namespace has already been
found."
+ % (linkingPage.aslink(True), linkingPage.namespace(),
linkedPage.aslink(True),
+ linkedPage.namespace(),
preferredPage.aslink(True)))
return True
else:
- choice = pywikibot.inputChoice('WARNING: %s is in namespace %i,
but %s is in namespace %i. Follow it anyway?' % (self.originPage.aslink(True),
self.originPage.namespace(), linkedPage.aslink(True), linkedPage.namespace()),
['Yes', 'No', 'Add an alternative', 'give up'],
['y', 'n', 'a', 'g'])
+ choice = pywikibot.inputChoice('WARNING: %s is in namespace %i,
but %s is in namespace %i. Follow it anyway?'
+ % (self.originPage.aslink(True),
self.originPage.namespace(),
+ linkedPage.aslink(True),
linkedPage.namespace()),
+ ['Yes', 'No',
'Add an alternative', 'give up'], ['y', 'n', 'a',
'g'])
if choice != 'y':
# Fill up foundIn, so that we will not ask again
self.foundIn[linkedPage] = [linkingPage]
@@ -1186,31 +1197,42 @@
"""
if globalvar.autonomous:
if self.originPage.isDisambig() and not page.isDisambig():
- pywikibot.output(u"NOTE: Ignoring link from disambiguation page %s
to non-disambiguation %s" % (self.originPage.aslink(True), page.aslink(True)))
+ pywikibot.output(u"NOTE: Ignoring link from disambiguation page %s
to non-disambiguation %s"
+ % (self.originPage.aslink(True), page.aslink(True)))
return (True, None)
elif not self.originPage.isDisambig() and page.isDisambig():
- pywikibot.output(u"NOTE: Ignoring link from non-disambiguation page
%s to disambiguation %s" % (self.originPage.aslink(True), page.aslink(True)))
+ pywikibot.output(u"NOTE: Ignoring link from non-disambiguation page
%s to disambiguation %s"
+ % (self.originPage.aslink(True), page.aslink(True)))
return (True, None)
else:
choice = 'y'
if self.originPage.isDisambig() and not page.isDisambig():
disambig = self.getFoundDisambig(page.site())
if disambig:
- pywikibot.output(u"NOTE: Ignoring non-disambiguation page %s for
%s because disambiguation page %s has already been found." % (page.aslink(True),
self.originPage.aslink(True), disambig.aslink(True)))
+ pywikibot.output(u"NOTE: Ignoring non-disambiguation page %s for
%s because disambiguation page %s has already been found."
+ % (page.aslink(True), self.originPage.aslink(True),
disambig.aslink(True)))
return (True, None)
else:
- choice = pywikibot.inputChoice(u'WARNING: %s is a disambiguation
page, but %s doesn\'t seem to be one. Follow it anyway?' %
(self.originPage.aslink(True), page.aslink(True)), ['Yes', 'No', 'Add
an alternative', 'Give up'], ['y', 'n', 'a',
'g'])
+ choice = pywikibot.inputChoice(u'WARNING: %s is a disambiguation
page, but %s doesn\'t seem to be one. Follow it anyway?'
+ % (self.originPage.aslink(True),
page.aslink(True)),
+ ['Yes', 'No',
'Add an alternative', 'Give up'],
+ ['y', 'n',
'a', 'g'])
elif not self.originPage.isDisambig() and page.isDisambig():
nondisambig = self.getFoundNonDisambig(page.site())
if nondisambig:
- pywikibot.output(u"NOTE: Ignoring disambiguation page %s for %s
because non-disambiguation page %s has already been found." % (page.aslink(True),
self.originPage.aslink(True), nondisambig.aslink(True)))
+ pywikibot.output(u"NOTE: Ignoring disambiguation page %s for %s
because non-disambiguation page %s has already been found."
+ % (page.aslink(True), self.originPage.aslink(True),
nondisambig.aslink(True)))
return (True, None)
else:
- choice = pywikibot.inputChoice(u'WARNING: %s doesn\'t seem to
be a disambiguation page, but %s is one. Follow it anyway?' %
(self.originPage.aslink(True), page.aslink(True)), ['Yes', 'No', 'Add
an alternative', 'Give up'], ['y', 'n', 'a',
'g'])
+ choice = pywikibot.inputChoice(u'WARNING: %s doesn\'t seem to
be a disambiguation page, but %s is one. Follow it anyway?'
+ % (self.originPage.aslink(True),
page.aslink(True)),
+ ['Yes', 'No',
'Add an alternative', 'Give up'],
+ ['y', 'n',
'a', 'g'])
if choice == 'n':
return (True, None)
elif choice == 'a':
- newHint = pywikibot.input(u'Give the alternative for language %s, not
using a language code:' % page.site().language())
+ newHint = pywikibot.input(u'Give the alternative for language %s, not
using a language code:'
+ % page.site().language())
alternativePage = pywikibot.Page(page.site(), newHint)
return (True, alternativePage)
elif choice == 'g':
@@ -1288,7 +1310,9 @@
if globalvar.skipauto:
dictName, year = page.autoFormat()
if dictName is not None:
- pywikibot.output(u'WARNING: %s:%s relates to %s:%s, which is an
auto entry %s(%s)' % (self.originPage.site().language(), self.originPage.title(),
page.site().language(),page.title(),dictName,year))
+ pywikibot.output(u'WARNING: %s:%s relates to %s:%s, which is an
auto entry %s(%s)'
+ % (self.originPage.site().language(),
self.originPage.title(),
+
page.site().language(),page.title(),dictName,year))
# Abort processing if the bot is running in autonomous mode.
if globalvar.autonomous:
@@ -2047,16 +2071,22 @@
if expectedPage != page:
try:
linkedPage = linkedPagesDict[expectedPage.site()]
- pywikibot.output(u"WARNING: %s: %s does not link to
%s but to %s" % (page.site().family.name, page.aslink(True),
expectedPage.aslink(True), linkedPage.aslink(True)))
+ pywikibot.output(u"WARNING: %s: %s does not link to
%s but to %s"
+ % (page.site().family.name,
page.aslink(True),
+ expectedPage.aslink(True),
linkedPage.aslink(True)))
except KeyError:
- pywikibot.output(u"WARNING: %s: %s does not link to
%s" % (page.site().family.name, page.aslink(True), expectedPage.aslink(True)))
+ pywikibot.output(u"WARNING: %s: %s does not link to
%s"
+ % (page.site().family.name,
page.aslink(True),
+ expectedPage.aslink(True)))
# Check for superfluous links
for linkedPage in linkedPages:
if linkedPage not in expectedPages:
# Check whether there is an alternative page on that
language.
# In this case, it was already reported above.
if linkedPage.site() not in expectedSites:
- pywikibot.output(u"WARNING: %s: %s links to
incorrect %s" % (page.site().family.name, page.aslink(True),
linkedPage.aslink(True)))
+ pywikibot.output(u"WARNING: %s: %s links to
incorrect %s"
+ % (page.site().family.name,
page.aslink(True),
+ linkedPage.aslink(True)))
except (socket.error, IOError):
pywikibot.output(u'ERROR: could not report backlinks')