Käyttäjä:KonttiBot/ListaaLinkit.py
Siirry navigaatioon
Siirry hakuun
#!/usr/bin/python # -*- coding: utf-8 -*- """ This bot goes over multiple pages of the home wiki, and edits them without changing. This is for example used to get category links in templates working. This script understands various command-line arguments: -start: used as -start:page_name, specifies that the robot should go alphabetically through all pages on the home wiki, starting at the named page. -file: used as -file:file_name, read a list of pages to treat from the named textfile. Page titles should be enclosed in [[double-squared brackets]]. -ref: used as -start:page_name, specifies that the robot should touch all pages referring to the named page. -links: used as -links:page_name, specifies that the robot should touch all pages referred to from the named page. -cat: used as -cat:category_name, specifies that the robot should touch all pages in the named category. -redir specifies that the robot should touch redirect pages; otherwise, they will be skipped. All other parameters will be regarded as a page title; in this case, the bot will only touch a single page. """ __version__='$Id: touch.py,v 1.13 2006/03/01 14:07:06 russblau Exp $' import wikipedia, pagegenerators, catlib import sys import codecs class TouchBot: def __init__(self, generator, touch_redirects): self.generator = generator self.touch_redirects = touch_redirects def run(self): #Starttexts alkutekstit=u"'''Eth\u00e4n muokkaa t\u00e4t\u00e4 sivua. T\u00e4m\u00e4n sivun tekee automaattisesti [[K\u00e4ytt\u00e4j\u00e4:KonttiBot|KonttiBot]].'''\n" alkutekstit+=u"'''<br />Do not modify this page. This page is automatically created by [[K\u00e4ytt\u00e4j\u00e4:KonttiBot|KonttiBot]].'''\n\n" #All the languagelinks tekstit=u'' #Endtexts lopputekstit=u"[[Luokka: PartioWiki]]" for page in self.generator: try: text = page.get(get_redirect=self.touch_redirects) scoutwikis=['partiowiki:','scoutpedia:','scoutpedia.com:','scout-o-wiki:','gondi-online:','pfadiwiki:','wikiroca:','schlauesbuch:','scoutwiki.nl:','scoutaid:','roexploratori:','scoutopedia:'] for llink in scoutwikis: lstart=text.find("[["+llink) if lstart>=0: lend=text.find("]]",lstart)+2 ltext=text[lstart+2:lend-2] tekstit+=u'* '+page.aslink()+' -> [[:'+ltext+']]\n' except wikipedia.NoPage: print "Page %s does not exist?!" % page.aslink() except wikipedia.IsRedirectPage: print "Page %s is a redirect; skipping." % page.aslink() except wikipedia.LockedPage: print "Page %s is locked?!" % page.aslink() #Page to write Langualinks writePage='PartioWiki:Kielilinkit' page = wikipedia.Page(wikipedia.getSite(), writePage) page.put(alkutekstit+tekstit+lopputekstit) def main(): #page generator gen = None redirs = False pageTitle = [] for arg in wikipedia.handleArgs(): if arg.startswith('-start:'): page = wikipedia.Page(wikipedia.getSite(),arg[7:]) gen = pagegenerators.AllpagesPageGenerator(page.titleWithoutNamespace(),namespace=page.namespace()) elif arg.startswith('-ref:'): referredPage = wikipedia.Page(wikipedia.getSite(), arg[5:]) gen = pagegenerators.ReferringPageGenerator(referredPage) elif arg.startswith('-links:'): linkingPage = wikipedia.Page(wikipedia.getSite(), arg[7:]) gen = pagegenerators.LinkedPageGenerator(linkingPage) elif arg.startswith('-file:'): gen = pagegenerators.TextfilePageGenerator(arg[6:]) elif arg.startswith('-cat:'): cat = catlib.Category(wikipedia.getSite(), arg[5:]) gen = pagegenerators.CategorizedPageGenerator(cat) elif arg == '-redir': redirs = True else: pageTitle.append(arg) if pageTitle: page = wikipedia.Page(wikipedia.getSite(), ' '.join(pageTitle)) gen = iter([page]) if not gen: wikipedia.showHelp('touch') else: preloadingGen = pagegenerators.PreloadingGenerator(gen) bot = TouchBot(preloadingGen, redirs) bot.run() if __name__ == "__main__": try: main() finally: wikipedia.stopme()