Usuari:TronaBot/Python/user-fixes.py

Aquest fitxer necessita executar-se amb Usuari:TronaBot/Python/ortobot.py

# -*- coding: utf-8  -*-
#30.04.13
exceptions = {
    'inside-tags': [
        'comment',
        #'link',
        'interwiki',
        'math',
        'pre',          # because of code examples
        'source',       # because of code examples
        'startspace',   # because of code examples
        'hyperlink',    # e.g. commas in URLs
        'gallery',      # because of filenames
        'timeline',
        'cite',
        'nowiki',
        #'noinclude',
        #'includeonly',
        #'math',
        'ref',
        #'table',
        'template',
    ],
    'inside': [
        #omitim modificació imatges
        ur'\[\[(?:[Ii]mat?ge|[Ff]i(?:txer|le)):.*?[\|\]]',
        #omitim modificació interwikis
        ur'\[\[[a-z\-]{2,12}:[^\]]+?\]\]',
        #omitim modificació categories
        ur'\[\[ *[Cc]ategor(?:ia|y) *:[^\]]+?\]\]',
        #omitim modificació plantilles
        ur'\{\{[^}]*?\}\}',
        #omitim enllaços interns sense text a mostrar
        ur'\[\[[^\]]*?\]\]',
        #omitim modificació enllaços
        ur'\[\[[^|]*?\|',
        #omitim paràmetres de plantilles amb fitxers imbricats
        ur'(?i)\|[\w\d\s()\-_=]*?\.(?:gif|png|jpg|svg)\b',
        #omitim paràmetres de plantilles
        ur'\|[\w\d\t\s]*=.+',
        #omitim paràmetres de plantilles
        ur'[\w\s_]+=[\w\d\s_,\'\.\[\](){}<>\-/]*\|$',
    ],
}
categories = {
    "abr": "abreviatures",
    "acc": "l'accentuació",
    "apo": "els apòstrofs",
    "brb": "els barbarismes",
    "ctr": "ce trencada",
    "dsc": "errors de tecleig", #descuïts, errors dactilogràfics, per exemple:
                                #"fwr" o "efr" per "fer" (els erròniament
                                #denominats "typo" i "tipogràfics")
    "enl": "enllaços",
    "gem": "ela geminada",
    "grm": "gramàtica",
    "hpc": "hipercorreccions",
    "imp": "ús de l'imperatiu",
    "ort": "ortografia",
    "maj": "majúscules",
    "pnt": "puntuació",
    "prn": "pronoms",
    "prp": "preposicions",
    "tcl": "error de tecleig",
}

#replace.py -fix:elagem -recursive -always -query:125 -sleep:1 -start:"Amando Vilaplana Gironés"
fixes['elagem']={
    'regex': True,
    'msg': {
        'ca':u'[[Usuari:TronaBot/Python/user-fixes.py|Bot]]: corregint ela geminada i apòstrof.',
    },
    'replacements': [
        (ur'(l[•.]l)', ur'l·l'),
        (ur"[’´`]", ur"'"),
        (ur"(«) ", ur"\1")
        #(ur"(\b[sltmd])[’´`]([\w[])", ur"\1'\2"),
        #(ur"(\w)[´’`]((?:[sltm]|ns)\b)", ur"\1'\2")
    ],
    'exceptions': exceptions
}

#ortobot.py -fix:auto -family:wikipedia_o -recursive -always -query:125 -sleep:1 -start:"Bartomeu Bardagí i Moras"
fixes['auto']={
    'regex': True,
    'msg': {
        'ca':u'[[Usuari:TronaBot/Python/user-fixes.py|Bot]]: corregint',
    },
    'categories': categories,
    'replacements': [
        (ur"m´s", u"més", "dsc"),
        (ur"(«) ", ur"\1", "pnt"),
        (ur" (»)", ur"\1", "pnt"),
        (ur"“(.*?)”", ur'"\1"', "pnt"),
        (ur"\( ?([^)]+?) \)", ur"(\1)", "pnt"), #els anys donen problemes, a vore així  22-05-13 12:22
        (ur"\( ([^)]+?) ?\)", ur"(\1)", "pnt"),
        (ur"\( ([^ ]+?)", ur"(\1", "pnt"),
        (ur"([^ \),]+?) ([\),])", ur"\1\2", "pnt"),
        (ur"([^\.]+?) \.([\n\s])", ur"\1.\2", "pnt"),
        #(ur"([a-zçàèíòúóé]) \.", ur"\1.", "pnt"),
        #(ur"([.,])([A-ZÇÀÈÒÉÍÓÚ])", ur"\1 \2", "pnt"),
        #(ur"(:) *([A-ZÇÀÈÒÉÍÓÚ])", ur"\1 \2", "pnt"),
        (ur'(l[•.]l)', ur'l·l', "gem"),
        (ur"‘(\w+)’", ur"'\1'", "apo"),
        (ur"(?i)(\b[sltmd])[‘’´`] *([\w[])", ur"\1'\2", "apo"),
        (ur"(?i)(\b[sltmd])[‘’´`](('''?)[\w]+\3)", ur"\1{{'}}\2", "apo"),
        (ur"(?i)(\b[sltmd]) *' *([\w[])", ur"\1'\2", "apo"),
        (ur"(\w)[’´`]((?:[sltm]|ns)\b)", ur"\1'\2", "apo"),
        (ur"ç([ei])", ur"c\1", "ctr"),
        #(ur"('''?) (\w+(?: \w+)?) (\1)", ur"\1\2\3", "pnt"), dóna falsos positius ex.: ''[[a]]'' o el ''[[b]]''
        (ur"\baprop\b", "a prop", "prp"),
        (ur"\bapart\b", "a part", "prp"),
        (ur"([Hh]an? \w+)a't", ur"\1at", "grm"),
        (ur"(\b)es (cedi|cita|substitu[iï]|succe[iï])(t|da)", ur"\1és \2\3", "acc"), #molts deportistes, reixos i càrrecs...
        (ur"(\b)Es (cedi|cita|substitu[iï]|succe[iï])(t|da)", ur"\1És \2\3", "acc"), #...diversos tenen la passiva sense accent.
        (ur"(\b)es (c[eièéí]|s[aeiouàèéíòóú])", ur"\1se \2", "prn"),
        (ur"Es ([cs][ei])", ur"Se \1", "prn"),
        (
            ur"\bEs (una|el|la|a|encara|damunt|de|m[eé]s|molt|per|que|segons|sobre)\b",
            ur"És \1",  "acc"
        ),
        #(r"(\s[ad])\.?C\.?(\.[\n\r]+|[\b\s])", r"\1C\2", "abr"), #aC i dC
        (ur"(\b[ÉEée]s) mes\b", ur"\1 més", "acc"),
        (ur"\b([Ll]'|[Uu]n )us\b", ur"\1ús", "acc"),
        (ur"\b(A|a)dem[eé]s\b", ur"\1 més", "brb"),
        (ur"\b(A|a)ix[oó]\b", ur"\1ixò", "acc"),
        (ur"\b(A|a)l darrera", ur"\1l darrere", "prp"),
        (ur"\b(A|a)lem[aà]\b", ur"\1lemany", "brb"),
        (ur"\b(A|a)lem[àa]ni?a\b", ur"\1lemanya", "brb"),
        (ur"\b(A|a)ll[oó]\b", ur"\1llò", "acc"),
        (ur"(A|a)mbd[oò]s", ur"\1mbdós", "acc"),
        (ur"\b(A|a)ntifàs\b", ur"\1ntifàç", "ort"),
        (ur"\b(A|a)ss?[ae]ss?(i|í)(?!nato)", ur"\1ssass\2", "brb"),
        (ur"\b(B|b)allen(a|es)", ur"\1alen\2", "brb"),
        (ur"\b(B|b)ull(a|es)\b", ur"\1utll\2", "brb"),
        (ur"\bcirugi([aà])\b", ur"cirurgi\1", "brb"),
        (ur"\bcirugi[aà]ns", ur"cirurgians", "brb"),
        (ur"\bcami\b", ur"camí", "acc"),
        (ur"\bcapdill", ur"cabdill", "ort"),
        (ur"\bcasi b[eéè]\b", ["quasi", ur"gairebé"], "brb"),
        (ur"\bcasi\b", ["quasi", ur"gairebé"], "brb"),
        (ur"\bcasib[eéè]", ["quasi", ur"gairebé"], "brb"),
        #(ur"\bcaudal", "cabal", "brb"), #https://ca.wikipedia.org/?diffonly=1&diff=11833476
        (ur"\bcomplexe\b", "complex", "hpc"),
        (ur"\b(uns|els)( \w+) complexes", r"\1\2 complexos", "hpc"),
        (ur"\bcontexte", "context", "ort"),
        (ur"\bcontextes", "contextos", "ort"),
        (ur"\bdesde\d", r"des de", "brb"),
        (ur"\bde (una?)", r"d'\1", "apo"),
        (ur"\b(colisionar|col·lisionar)", ur"col·lidir", "brb"),
        (ur"\bcolocar", ur"col·locar", "gem"),
        (ur"([Dd])(espr)[èés]s(?: de)? qu[eèé]\b", ur"\1\2és que", "prp"),
        (ur"\bm(?:çe|[`´])s\b", ur"més", "tcl"),
        (r"[Ss]istema [Ss]olar", "sistema solar", "maj"),
        #(
        #    ur"\bpel ('*[%(v)s]|'*\[\[[^|]+?\|%(v)s[^\]*?\]\]|'*\[\[%(v)s[^|\]]+?\]\])" % {
        #        "v": ur"[AEIOUaeiouÀÈÉÍÒÓÚàèéíòóú]"
        #    }, ur"per l'\1", "apo"
        #),

        #http://www.ub.edu/criteris-cub/criteri.php?id=1018
        #(r"\bdegut a que\b", u"atès que", "brb"),
        #(r"\b(?<![ée]s )degut a\b", "a causa de", "brb"),
        #secció vegeu també
        (ur"(=+) ?veure (també) ?(=+)", ur"\1 vegeu \2 \3", "imp"),
        (r"va (?:tindre|tenir) que (\w+)", r"va haver <:de:> \1", "brb"),
        ("reconocible", "recognoscible", "brb"),
        # convertir [[Article#secció|text]] en [[#secció|text]]
        (ur"\[\[^#]+#([^|]+)\|([^\]]+)\]\]", ur"[[#\1|\2]]", "enl"),
    ],
    'exceptions': exceptions
}

#ortobot.py -fix:manual -family:wikipedia_o -recursive -query:125 -sleep:1 -start:"Amilopectina"
fixes['manual']={
    'regex': True,
    'msg': {
        'ca':u'[[Usuari:TronaBot/Python/user-fixes.py|Bot]]: corregint',
    },
    'categories': categories,
    'replacements': [
        (ur"\b(A|a)[cq][uü][aà]ti" , ur"\1quàti", "acc"),
        (ur"([^[]\b[Aa])m\b", ur"\1mb", "dsc"),
        (ur"\b[AÁ]udio\b" , ur"Àudio", "acc"),
        (ur"\b[aá]udio\b" , ur"àudio", "acc"),
        (ur"\b[AÁ]rab(s?)\b" , ur"Àrab\1", "acc"),
        (ur"\b[aá]rab(s?)\b" , ur"àrab\1", "acc"),
        (ur"\b[AÁ]rea\b" , ur"Àrea", "acc"),
        (ur"\b[aá]rea\b" , ur"àrea", "acc"),
        #(del|pel|al) tamany → $1 mida (corrrecte article en variant en valencià)
        (ur"\bdel tamany", "de la mida", "brb"),
        (ur"\bdels tamanys", "de les mides", "brb"),
        (ur"\bal tamany", "a la mida", "brb"),
        (ur"\bals tamanys", "a les mides", "brb"),
        (ur"\bpel tamany", "per la mida", "brb"),
        (ur"\bpels tamanys", "per les mides", "brb"),
        (ur"\bel tamany", "la mida", "brb"),
        (ur"\bels tamanys", "les mides", "brb"),
    ],
    'exceptions': exceptions
}