Revision: 7881 Author: xqt Date: 2010-01-15 11:44:43 +0000 (Fri, 15 Jan 2010)
Log Message: ----------- Additional options: * read addtext from a textfile * put addtext to the corresponding talk page * create it if necessary
Modified Paths: -------------- trunk/pywikipedia/add_text.py
Modified: trunk/pywikipedia/add_text.py =================================================================== --- trunk/pywikipedia/add_text.py 2010-01-15 08:23:54 UTC (rev 7880) +++ trunk/pywikipedia/add_text.py 2010-01-15 11:44:43 UTC (rev 7881) @@ -13,8 +13,13 @@
-page Use a page as generator
+-talkpage Put the text onto the talk page instead the generated on +-talk + -text Define which text to add. "\n" are interpreted as newlines.
+-textfile Define a texfile name which contains the text to add + -summary Define the summary to use
-except Use a regex to check if the text is already in the page @@ -67,6 +72,7 @@
import re, pagegenerators, urllib2, urllib import wikipedia +import codecs, config
# This is required for the text that is shown when you run this script # with the parameter -help. @@ -140,7 +146,7 @@ yield wikipedia.Page(wikipedia.getSite(), result)
def add_text(page = None, addText = None, summary = None, regexSkip = None, regexSkipUrl = None, - always = False, up = False, putText = True, oldTextGiven = None): + always = False, up = False, putText = True, oldTextGiven = None, create=False): if not addText: raise NoEnoughData('You have to specify what text you want to add!') if not summary: @@ -186,8 +192,12 @@ try: text = page.get() except wikipedia.NoPage: - wikipedia.output(u"%s doesn't exist, skip!" % page.title()) - return (False, False, always) # continue + if create: + wikipedia.output(u"%s doesn't exist, creating it!" % page.title()) + text = u'' + else: + wikipedia.output(u"%s doesn't exist, skip!" % page.title()) + return (False, False, always) # continue except wikipedia.IsRedirectPage: wikipedia.output(u"%s is a redirect, skip!" % page.title()) return (False, False, always) # continue @@ -298,13 +308,21 @@ # If none, the var is setted only for check purpose. summary = None; addText = None; regexSkip = None; regexSkipUrl = None; generator = None; always = False + textfile=None + talkPage=False + namespaces=[] # Load a lot of default generators genFactory = pagegenerators.GeneratorFactory() # Put the text above or below the text? up = False # Loading the arguments for arg in wikipedia.handleArgs(): - if arg.startswith('-text'): + if arg.startswith('-textfile'): + if len(arg) == 9: + textfile = wikipedia.input(u'Which textfile do you want to add?') + else: + textfile = arg[10:] + elif arg.startswith('-text'): if len(arg) == 5: addText = wikipedia.input(u'What text do you want to add?') else: @@ -339,17 +357,30 @@ up = True elif arg == '-always': always = True + elif arg == '-talk' or arg == '-talkpage': + talkPage = True else: genFactory.handleArg(arg) - + if textfile and not addText: + f = codecs.open(textfile, 'r', config.textfile_encoding) + addText = f.read() + f.close() if not generator: generator = genFactory.getCombinedGenerator() # Check if there are the minimal settings if not generator: raise NoEnoughData('You have to specify the generator you want to use for the script!') + if talkPage: + generator = pagegenerators.PageWithTalkPageGenerator(generator) + site = wikipedia.getSite() + for namespace in site.namespaces(): + index = site.getNamespaceIndex(namespace) + if index%2==1 and index>0: + namespaces += [index] + generator = pagegenerators.NamespaceFilterPageGenerator(generator, namespaces) # Main Loop for page in generator: - (text, newtext, always) = add_text(page, addText, summary, regexSkip, regexSkipUrl, always, up, True) + (text, newtext, always) = add_text(page, addText, summary, regexSkip, regexSkipUrl, always, up, True, create=talkPage)
if __name__ == "__main__": try: