Χρήστης: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:

&params;

Much of this code was stolen from cosmetic_changes.py.

"""
import wikipedia, pagegenerators, string
import sys
import re

warning = u"""Προσοχή! Αν σκοπεύετε να εκτελέσετε αυτό το μποτ κάπου αλλού εκτός από
το el.wiktionary, ξανασκεφτείτε το!"""

docuReplacements = {
    '&params;': 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


Μένουν ακόμα:

ΔΑΠ-ΝΔΦΚ ΑΕ ΔΣ ΓΣ ΓΕΣ ΓΕΝ ΑΕΙ ΤΕΙ ΙΕΚ ΝΑΤΟ ΗΠΑ ΟΗΕ ΟΑ ΟΕΔΒ ΟΑΕΔ ΤΕΒΕ ΤΣΑΥ ΙΝΚΑ ΠΘ ΠΚ ΔΕΚΟ ΑΕΒΕ ΚΑΤ ΕΒΟ ΣΕΚ ΣΑΠ ΕΗΣ ΣΠΑΠ ΙΚΑ ΟΠΑΔ ΕΠΟΠ ΔΤΑΛ ΣΙΣ ΑΡΥΣ ΕΣΣΟ ΑΤΗΚ ΑΗΚ ΤΚΕ ΕΤΕΑΜ ΟΠΑΠ ΑΣΜ ΑΦΜ ΓΤΠΚ ΣΕΞ ΚΨΜ ΚΕΝ ΕΚΕ ΔΙΚΕΝ ΟΒΑ ΕΦΥΕΣ ΓΕΑ ΓΕΕΘΑ ΑΣΔΕΝ ΑΣΔΥΣ ΜΕΡΥΠ ΤΟΜΠ ΚΨΑ ΥΠΕΘΑ ΣΞ ΠΝ ΠΑ ΑΔΤΕ ΣΔΙ ΕΤΕΘ ΚΕΥΓ ΕΔΥΕΘΑ ΔΣΛ ΑΔΙΣΠΟ ΑΒΥΠ ΑΒΑΒ ΣΔΙΕΠ ΣΤΥΑ ΓΥΣ ΤΑΜΣ ΤΑΑΣ ΤΥΕΣ ΔΕΣΥ ΑΣΕΑΔ ΑΣΑΕΔ ΝΥΣΜΕ ΝΥΣΔΕ ΓΣΕΒΕΕ ΦΕΑΠΘ ΑΣΔΑΚ ΑΔΣΕΝ ΑΣΕΔΟ ΝΙΜΤΣ ΑΟΕΚ ΓΟΕΒ ΑΒΣΘ ΑΣΝΑ ΟΕΣΒ ΝΔΒΑ ΝΔΝΑ ΝΠΙΔ ΑΔΗΣΚ ΓΔΓΕ ΓΕΜΕ ΓΔΕΕ ΝΙΕΕ ΑΣΚΕ ΓΣΑΕ ΑΕΤΑ ΑΟΟΑ ΓΔΔΛ ΑΣΟΠ ΑΚΕΠ ΑΣΔΥ ΝΕΛΕ ΑΝΥΕ ΑΣΥΕ ΓΕΝΕ ΓΔΕΑ ΑΔΟΣ ΓΓΠΣ ΝΑΤ ΓΟΚ ΑΕΛ ΩΡΛ ΓΔΔ ΒΣΤ ΦΔΘ ΧΕΝ ΑΔΗΝ ΦΑΠ ΦΚΠ ΦΕΚ ΑΟΣ ΝΑΣ ΦΟΣ ΦΜΣ ΑΓΡΕΞ ΦΑ ΑΑ ΠΑΕ ΕΣΣΔ ΓΤΠ ΓΕΣΥ ΚΙΣ ΠΑΜΕ

Τι θέλουμε να τις κάνουμε τις παραπάνω;