Χρήστης:AtouBot/PAGENAME μετά από το μέρος του λόγου
Ο κώδικας:
# -*- coding: utf-8 -*- u""" This script changes all of the greek entries which have the lemma in bold ('''entry''') instead of '''{{PAGENAME}}''' after the part of speech. The following parameters are supported: ¶ms; Much of this code was stolen from cosmetic_changes.py. """ import wikipedia, pagegenerators, string import sys import re warning = u"""Προσοχή! Αν σκοπεύετε να εκτελέσετε αυτό το μποτ κάπου αλλού εκτός από το el.wiktionary, ξανασκεφτείτε το!""" docuReplacements = { '¶ms;': pagegenerators.parameterHelp, '&warning;': warning, } # Summary message when using this module as a stand-alone script msg_standalone = { 'el': u'Bot: προσθήκη PAGENAME μετά από το μέρος του λόγου', } class AddPagenameToolkit: def __init__(self, site, title, exceptions = [], debug = False): self.site = site self.debug = debug self.title = title self.exceptions = exceptions def allagh(self, keimeno): """ Given a wiki source code text, returns the corrected version. """ toremove = u"\r\n\'\'\'%s" % self.title(); toadd = u'\r\n\'\'\'{{PAGENAME}}'; teliko_keimeno = re.sub(toremove,toadd,keimeno) if self.debug: wikipedia.showDiff(keimeno, teliko_keimeno) return teliko_keimeno class AddPagenameBot: def __init__(self, generator, exceptions=[], acceptall = False): self.generator = generator self.acceptall = acceptall self.exceptions = exceptions # Load default summary message. wikipedia.setAction(wikipedia.translate(wikipedia.getSite(), msg_standalone)) def checkExceptions(self, original_text): """ If one of the exceptions applies for the given text, returns the substring which matches the exception. Otherwise it returns None. """ for exception in self.exceptions: hit = exception.search(original_text) if hit: return hit.group(0) return None def treat(self, page): try: # Show the title of the page we're working on. # Highlight the title in purple. wikipedia.output(u"\n\n>>> \03{lightpurple}%s\03{default} <<<" % page.title()) ccToolkit = AddPagenameToolkit(page.site(), page.title, debug = True) keimeno = page.get() match = self.checkExceptions(keimeno) # skip all pages that contain certain texts if match: wikipedia.output(u'Skipping %s because it contains %s' % (page.aslink(), match)) else: allages = ccToolkit.allagh(keimeno) if allages != keimeno: if not self.acceptall: choice = wikipedia.inputChoice(u'Do you want to accept these changes?', ['Yes', 'No', 'All'], ['y', 'N', 'a'], 'N') if choice in ['a', 'A']: self.acceptall = True if self.acceptall or choice in ['y', 'Y']: page.put(allages) else: wikipedia.output(u"Καμία αλλαγή δεν χρειάστηκε στο %s" % page.title()) except wikipedia.NoPage: wikipedia.output(u"Η σελίδα %s δεν υπάρχει;!" % page.aslink()) except wikipedia.IsRedirectPage: wikipedia.output("Η σελίδα %s είναι ανακατεύθυνση, skipping." % page.aslink()) except wikipedia.LockedPage: wikipedia.output(u"Η σελίδα %s είναι κλειδωμένη;!" % page.aslink()) def run(self): for page in self.generator: self.treat(page) original_text = page.get() def main(): #page generator gen = None PageTitles = [] exceptions=[] namespaces = [] regex = False caseInsensitive = False # 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() for arg in wikipedia.handleArgs(): if arg.startswith('-except:'): exceptions.append(arg[8:]) elif arg == '-regex': regex = True elif arg == '-nocase': caseInsensitive = True elif arg.startswith('-namespace:'): try: namespaces.append(int(arg[11:])) except ValueError: namespaces.append(arg[11:]) elif arg.startswith('-page'): if len(arg) == 5: PageTitles.append(wikipedia.input(u'Which page do you want to change?')) else: PageTitles.append(arg[6:]) else: generator = genFactory.handleArg(arg) if generator: gen = generator else: wikipedia.showHelp() for i in range(len(exceptions)): exception = exceptions[i] if not regex: exception = re.escape(exception) if caseInsensitive: exceptionR = re.compile(exception, re.UNICODE | re.IGNORECASE) else: exceptionR = re.compile(exception, re.UNICODE) exceptions[i] = exceptionR if PageTitles: pages = [wikipedia.Page(wikipedia.getSite(), PageTitle) for PageTitle in PageTitles] gen = iter(pages) if not gen: wikipedia.showHelp() elif wikipedia.inputChoice(warning + u'\nΘέλετε σίγουρα να συνεχίσετε;', ['yes', 'no'], ['y', 'N'], 'N') == 'y': if namespaces != []: gen = pagegenerators.NamespaceFilterPageGenerator(gen, namespaces) preloadingGen = pagegenerators.PreloadingGenerator(gen) bot = AddPagenameBot(preloadingGen, exceptions) bot.run() if __name__ == "__main__": try: main() finally: wikipedia.stopme()
Προσοχή: οι πιο πρόσφατες εκδόσεις του pywikipedia φαίνονται να έχουν σφάλμα και δεν αποθηκεύουν σελίδες.
Οι λέξεις: ελληνικά λήμματα χωρίς PAGENAME
Μένουν ακόμα:
ΔΑΠ-ΝΔΦΚ ΑΕ ΔΣ ΓΣ ΓΕΣ ΓΕΝ ΑΕΙ ΤΕΙ ΙΕΚ ΝΑΤΟ ΗΠΑ ΟΗΕ ΟΑ ΟΕΔΒ ΟΑΕΔ ΤΕΒΕ ΤΣΑΥ ΙΝΚΑ ΠΘ ΠΚ ΔΕΚΟ ΑΕΒΕ ΚΑΤ ΕΒΟ ΣΕΚ ΣΑΠ ΕΗΣ ΣΠΑΠ ΙΚΑ ΟΠΑΔ ΕΠΟΠ ΔΤΑΛ ΣΙΣ ΑΡΥΣ ΕΣΣΟ ΑΤΗΚ ΑΗΚ ΤΚΕ ΕΤΕΑΜ ΟΠΑΠ ΑΣΜ ΑΦΜ ΓΤΠΚ ΣΕΞ ΚΨΜ ΚΕΝ ΕΚΕ ΔΙΚΕΝ ΟΒΑ ΕΦΥΕΣ ΓΕΑ ΓΕΕΘΑ ΑΣΔΕΝ ΑΣΔΥΣ ΜΕΡΥΠ ΤΟΜΠ ΚΨΑ ΥΠΕΘΑ ΣΞ ΠΝ ΠΑ ΑΔΤΕ ΣΔΙ ΕΤΕΘ ΚΕΥΓ ΕΔΥΕΘΑ ΔΣΛ ΑΔΙΣΠΟ ΑΒΥΠ ΑΒΑΒ ΣΔΙΕΠ ΣΤΥΑ ΓΥΣ ΤΑΜΣ ΤΑΑΣ ΤΥΕΣ ΔΕΣΥ ΑΣΕΑΔ ΑΣΑΕΔ ΝΥΣΜΕ ΝΥΣΔΕ ΓΣΕΒΕΕ ΦΕΑΠΘ ΑΣΔΑΚ ΑΔΣΕΝ ΑΣΕΔΟ ΝΙΜΤΣ ΑΟΕΚ ΓΟΕΒ ΑΒΣΘ ΑΣΝΑ ΟΕΣΒ ΝΔΒΑ ΝΔΝΑ ΝΠΙΔ ΑΔΗΣΚ ΓΔΓΕ ΓΕΜΕ ΓΔΕΕ ΝΙΕΕ ΑΣΚΕ ΓΣΑΕ ΑΕΤΑ ΑΟΟΑ ΓΔΔΛ ΑΣΟΠ ΑΚΕΠ ΑΣΔΥ ΝΕΛΕ ΑΝΥΕ ΑΣΥΕ ΓΕΝΕ ΓΔΕΑ ΑΔΟΣ ΓΓΠΣ ΝΑΤ ΓΟΚ ΑΕΛ ΩΡΛ ΓΔΔ ΒΣΤ ΦΔΘ ΧΕΝ ΑΔΗΝ ΦΑΠ ΦΚΠ ΦΕΚ ΑΟΣ ΝΑΣ ΦΟΣ ΦΜΣ ΑΓΡΕΞ ΦΑ ΑΑ ΠΑΕ ΕΣΣΔ ΓΤΠ ΓΕΣΥ ΚΙΣ ΠΑΜΕ
Τι θέλουμε να τις κάνουμε τις παραπάνω;