This code was taken from Botwiki, modified to allow for emergency shutoff. Thanks to valhallasw for fixing the disambig page. This is current as of 4/13/2008
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# (C) Pietrodn, it.wiki 2006-2007
# (C) Filnik, it.wiki 2007
#
# Distributed under the terms of the MIT license.
#
__version__ = '$Id:$'
#
import wikipedia
import re
import time
from pagegenerators import AllpagesPageGenerator
commento = {
'en':u'Bot: Orphan page, add template',
'it':u'Bot: Voce orfana, aggiungo template {{O}}',
}
commenttodisambig = {
'en':u'Bot: This page is a disambig',
'it':u'Bot: Voce orfana, aggiungo template {{O}}',
}
Template = {
'en':u'{{Orphan|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}<!-- Automatically added by User:SoxBot. If this is an error, please contact User:Soxred93 -->}}',
'it':u'{{O||mese={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}',
}
def main():
while 1 == 1:
global commento; global Template
args = wikipedia.handleArgs()
for arg in wikipedia.handleArgs():
if arg == '-all':
allfunction = True
wikiSite = wikipedia.getSite()
comment = wikipedia.translate(wikiSite, commento)
commentdisambig = wikipedia.translate(wikiSite, commenttodisambig)
template = wikipedia.translate(wikiSite, Template)
allfunction = False
wikipediasite = wikipedia.getSite('en', 'wikipedia')
enable = wikipedia.Page(wikipediasite, 'User:SoxBot/Run')
getenable = enable.get()
disambigpage = wikipedia.Page(wikipediasite, 'User:SoxBot/disambig')
disambigtext = disambigpage.get()
if getenable != 'enable':
wikipedia.output('The bot is disabled')
wikipedia.stopme()
else:
for i in wikiSite.lonelypages(number = 1000, repeat = False):
#if i.title()[0] in ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L']:
#continue
if i.isRedirectPage():
continue
refs = i.getReferences()
refsList = list()
for j in refs:
if j == None:
continue
refsList.append(j)
if getenable != 'enable':
wikipedia.output('The bot is disabled')
wikipedia.stopme()
elif refsList != []:
continue
elif refsList == None:
continue # FIXME: ????
else:
try:
oldtxt = i.get()
except wikipedia.NoPage:
wikipedia.output("%s doesn't exist! Skip.." % i.title())
continue
except wikipedia.IsRedirectPage:
wikipedia.output("%s is a redirect! Skip..." % i.title())
if getenable != 'enable':
wikipedia.output('The bot is disabled')
wikipedia.stopme()
elif '{{orphan}}' in oldtxt.lower() or '{{orphan|' in oldtxt.lower() or '{{wi|' in oldtxt.lower() or '{{soft redirect|' in oldtxt.lower() or '{{wi}}' in oldtxt.lower():
wikipedia.output('This page already has the template or a wiktionary redirect, skipping')
continue
elif i.isDisambig():
wikipedia.output('Disambig page...')
disambigtext = disambigtext + ' [[' + i.title() + ']]'
disambigpage.put(disambigtext, commentdisambig)
continue
else:
newtxt = template + '\n' + oldtxt
wikipedia.output("\t\t>>> %s <<<" % i.title())
wikipedia.showDiff(oldtxt, newtxt)
choice = 'y'
try:
i.put(newtxt, comment)
except wikipedia.EditConflict:
wikipedia.output('Edit Conflict! Skip...')
except wikipedia.ServerError:
wikipedia.output('Server error')
if __name__ == '__main__':
try:
main()
finally:
wikipedia.stopme()
This code was taken from Botwiki, modified to allow for emergency shutoff. Thanks to valhallasw for fixing the disambig page. This is current as of 4/13/2008
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# (C) Pietrodn, it.wiki 2006-2007
# (C) Filnik, it.wiki 2007
#
# Distributed under the terms of the MIT license.
#
__version__ = '$Id:$'
#
import wikipedia
import re
import time
from pagegenerators import AllpagesPageGenerator
commento = {
'en':u'Bot: Orphan page, add template',
'it':u'Bot: Voce orfana, aggiungo template {{O}}',
}
commenttodisambig = {
'en':u'Bot: This page is a disambig',
'it':u'Bot: Voce orfana, aggiungo template {{O}}',
}
Template = {
'en':u'{{Orphan|date={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}<!-- Automatically added by User:SoxBot. If this is an error, please contact User:Soxred93 -->}}',
'it':u'{{O||mese={{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}}}',
}
def main():
while 1 == 1:
global commento; global Template
args = wikipedia.handleArgs()
for arg in wikipedia.handleArgs():
if arg == '-all':
allfunction = True
wikiSite = wikipedia.getSite()
comment = wikipedia.translate(wikiSite, commento)
commentdisambig = wikipedia.translate(wikiSite, commenttodisambig)
template = wikipedia.translate(wikiSite, Template)
allfunction = False
wikipediasite = wikipedia.getSite('en', 'wikipedia')
enable = wikipedia.Page(wikipediasite, 'User:SoxBot/Run')
getenable = enable.get()
disambigpage = wikipedia.Page(wikipediasite, 'User:SoxBot/disambig')
disambigtext = disambigpage.get()
if getenable != 'enable':
wikipedia.output('The bot is disabled')
wikipedia.stopme()
else:
for i in wikiSite.lonelypages(number = 1000, repeat = False):
#if i.title()[0] in ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L']:
#continue
if i.isRedirectPage():
continue
refs = i.getReferences()
refsList = list()
for j in refs:
if j == None:
continue
refsList.append(j)
if getenable != 'enable':
wikipedia.output('The bot is disabled')
wikipedia.stopme()
elif refsList != []:
continue
elif refsList == None:
continue # FIXME: ????
else:
try:
oldtxt = i.get()
except wikipedia.NoPage:
wikipedia.output("%s doesn't exist! Skip.." % i.title())
continue
except wikipedia.IsRedirectPage:
wikipedia.output("%s is a redirect! Skip..." % i.title())
if getenable != 'enable':
wikipedia.output('The bot is disabled')
wikipedia.stopme()
elif '{{orphan}}' in oldtxt.lower() or '{{orphan|' in oldtxt.lower() or '{{wi|' in oldtxt.lower() or '{{soft redirect|' in oldtxt.lower() or '{{wi}}' in oldtxt.lower():
wikipedia.output('This page already has the template or a wiktionary redirect, skipping')
continue
elif i.isDisambig():
wikipedia.output('Disambig page...')
disambigtext = disambigtext + ' [[' + i.title() + ']]'
disambigpage.put(disambigtext, commentdisambig)
continue
else:
newtxt = template + '\n' + oldtxt
wikipedia.output("\t\t>>> %s <<<" % i.title())
wikipedia.showDiff(oldtxt, newtxt)
choice = 'y'
try:
i.put(newtxt, comment)
except wikipedia.EditConflict:
wikipedia.output('Edit Conflict! Skip...')
except wikipedia.ServerError:
wikipedia.output('Server error')
if __name__ == '__main__':
try:
main()
finally:
wikipedia.stopme()