Wikipédia:Projetos/Check Wikipedia/Python
Para usar as correções abaixo copie e cole o código no arquivo user-fixes.py dentro da pasta do pywikipediabot (crie o arquivo se ele não existir). Essas correções poderão ser efetuadas através do comando "-fix:checkwiki" do replace.py.
Atenção: as regex abaixo precisam ser revisadas, edições com elas podem conter erros.
# -*- coding: utf-8 -*-
if 'fixes' not in globals(): fixes = {}
fixes['checkwiki'] = {
'regex': True,
'msg': {'_default': u'[[Wikipedia:Projetos/Check Wikipedia|Checkwiki]]: limpeza de sintaxe'},
'replacements': [
(r'< */? *i */? *>', r'\'\''),
(r'(?i)< */? *(b|strong) */? *>', r'\'\'\''),
(r'(?i)< */? *p */? *>', r'\n\n'),
(r'(?i)<sup>1</sup>', r'¹'),
(r'(?i)<sup>2</sup>|²', r'²'),
(r'([^\.])\.\.\.([^\.])', r'\1…\2'), # '...' –> '…'
(r'<\-+', r'←'),
(r'([^\-])\->', r'\1→'),
(r'<=+', r'⇐'),
(r'=+>', r'⇒'),
(r'–', r'–'),
(r'< *(\w*) *\w* *= *>', r'<\1>'), # '<tag param=>' –> '<tag>'
(r'< */? *br */? *>', r'<br />'), # '<br>' –> '<br />'
(r'(\{\{|\[\[) +', r'\1'), # '{{ abc' –> '{{abc', '[[ abc' –> '[[abc'
(r' *[ |] *(\}\}|\]\])', r'\1'), # 'abc }}' –> 'abc}}', 'abc ]]' –> 'abc]]', '|}}' –> '}}, '|]]' –> ']]'
(r'= *\{?\{?(artigos? relacionados?|links? internos?|Veja também)\}?\}? *=', r'= Ver também ='),
(r'= *\{?\{?((apontadore?s?|links?|ligaç[ãõ][oe]s?|páginas?|referências?|enlaces) extern[ao]s?|links)\}?\}? *=', r'= Ligações externas ='),
(r'^(=+) *([^=\n]*?\w[^=\n]*?) *(=+) *\n[\n ]*', r'\1 \2 \3\n'), # '==seção==' –> '== seção =='
(r'\[\[[Cc]ategory?i?a?: *([^\]]*?[^ \|]) *\]\]', r'[[Categoria:{{subst:ucfirst:\1}}]]'),
(r'\* *\[(http://[^] ]*) ([^]]*)\] *\{\{\(?\(?([a-z][a-z])\)?\)?\}\} *\n', r'*{{link|\3|2=\1|3=\2}}\n'),
(r'\* *\{\{\(?\(?([a-z][a-z])\)?\)?\}\}[ -]*\[(http://[^] ]*) ([^]]*)\]', r'*{{link|\1|2=\2|3=\3}}'),
(r'\{\{[Pp]redefinição:', r'{{'),
(r'\{\{commons1? *\| *:?category *\:', r'{{commonscat|'),
(r'\{\{termina correlatos\}\} *\n?', r'|}\n'), # Poucos afluentes; passar o robô neles e eliminar essa linha
(r'\{\{correlato *[|/]([^\|]*)\| *\:? *category?i?a?\:', r'{{correlato|\1cat|'),# <– Revisão parada aqui
(r'\{\{correlato *[|/]([^\|]*)\|([^\}]*)\}\} *\n?', r'|\1=\2\n'),
(r'\{\{começa correlatos *\}\} *\n?', r'{{correlatos\n'),
(r'\[\[([0-9][0-9]? de [^\]]*) *\]\], ?\[\[ *([0-9]+) *\]\]', r'[[\1]] de [[\2]]'),
(r'\b(d)écada de ([1-9]0[^0-9])', r'\1écada de 19\2'),
(r'\banos ([1-9]0[^0-9])', r'anos 19\1'),
(r'\[\[Imagem?\: *Flag of Germany.svg *\| *2[0-9] *px\]\]', r'{{DEUb}}'),
(r'\[\[Imagem?\: *Flag of Brazil.svg *\| *2[0-9] *px *\|?\]\]', r'{{BRAb}}'),
(r'\[\[Imagem?\: *Flag of Spain.svg *\| *2[0-9] *px\]\]', r'{{ESPb}}'),
(r'\[\[Imagem?\: *Flag of the United States.svg *\| *2[0-9] *px\]\]', r'{{USAb}}'),
(r'\[\[Imagem?\: *Flag of Ireland.svg *\| *2[0-9] *px\]\]', r'{{IRLb}}'),
(r'\[\[Imagem?\: *Flag of Italy.svg *\| *2[0-9] *px\]\]', r'{{ITAb}}'),
(r'\[\[Imagem?\: *Flag of Japan.svg *\| *2[0-9] *px\]\]', r'{{JPNb}}'),
(r'\[\[Imagem?\: *Flag of Portugal.svg *\| *2[0-9] *px\]\]', r'{{PRTb}}'),
(r'\[\[Imagem?\: *Flag of the United Kingdom.svg *\| *2[0-9] *px\]\]', r'{{GBRb}}'),
(r'^ *\'\'\'([^\']*)\'\'\' *$', r'; \1'),
(r'(\{\{DEFAULTSORT *\:[^\}]*) d[aeo] ([^\}]*\}\})', r'\1 \2'),
(r'(\{\{DEFAULTSORT *\:[^\}]*)[ãáâäàåä]([^\}]*\}\})', r'\1a\2'),
(r'(\{\{DEFAULTSORT *\:[^\}]*)[ÅÂÁ]([^\}]*\}\})', r'\1A\2'),
(r'(\{\{DEFAULTSORT *\:[^\}]*)[éèêëě]([^\}]*\}\})', r'\1e\2'),
(r'(\{\{DEFAULTSORT *\:[^\}]*)É([^\}]*\}\})', r'\1E\2'),
(r'(\{\{DEFAULTSORT *\:[^\}]*)[íï]([^\}]*\}\})', r'\1i\2'),
(r'(\{\{DEFAULTSORT *\:[^\}]*)[óöøõô]([^\}]*\}\})', r'\1o\2'),
(r'(\{\{DEFAULTSORT *\:[^\}]*)[ÓØ]([^\}]*\}\})', r'\1O\2'),
(r'(\{\{DEFAULTSORT *\:[^\}]*)[úüû]([^\}]*\}\})', r'\1u\2'),
(r'(\{\{DEFAULTSORT *\:[^\}]*)[ñń]([^\}]*\}\})', r'\1n\2'),
(r'(\{\{DEFAULTSORT *\:[^\}]*)Ñ([^\}]*\}\})', r'\1N\2'),
(r'(\{\{DEFAULTSORT *\:[^\}]*)ł([^\}]*\}\})', r'\1l\2'),
(r'(\{\{DEFAULTSORT *\:[^\}]*)[çćč]([^\}]*\}\})', r'\1c\2'),
(r'(\{\{DEFAULTSORT *\:[^\}]*)ř([^\}]*\}\})', r'\1r\2'),
(r'(\{\{DEFAULTSORT *\:[^\}]*)[šś]([^\}]*\}\})', r'\1s\2'),
(r'(\{\{DEFAULTSORT *\:[^\}]*)æ([^\}]*\}\})', r'\1ae\2'),
(r'(\{\{DEFAULTSORT *\:[^\}]*)[º"]([^\}]*\}\})', r'\1\2'),
(r'\{\{DEFAULTSORT *\: *([^\}]*?)\}\}', r'{{DEFAULTSORT:\1}}'),
(r'= *Referencias *=', r'= Referências ='),
(r'=* *Refer[eê]ncias *=* *\r?\n *< *references */?>', r'{{ref-section}}'),
(r'< *small *>< *references */ *>< */small *>', r'{{reflist}}'),
(r'== *Refer[eê]ncias *== *\r?\n *\{\{ *reflist *\}\}', r'{{ref-section}}'),
(r'=* *Notas *=* *\r?\n *< *references */?>', r'{{ref-section|Notas}}'),
(r' *(<ref[^>]*>[^<>]*</ref>) *([\.,;\:])', r'\2\1'),
(r' *(<ref[^>]*/ *>) *([\.,;\:])', r'\2\1'),
(r'=([^\n=]*)\: *=', r'= \1 ='),
(r'([0-9])[\.,]([0-9][0-9]) *m', r'\1,\2 m'),
(r'\bKgs?\b', r'kg'),
(r'\[\[\s*(?:Image|File|Arquivo|Ficheiro)\s*:\s*([^|\]]+\.(?:png|gif|jpg|jpeg|svg|tiff|tif))\s*(\||\]\])', r'[[Imagem:\1\2'),
(r'= *\{?\{? *Bibliografia *\}?\}? *=', r'= Bibliografia ='),
(r'^ *([\#\*\:\;]+) *', r'\1 '),
(r'(\r?\n) *([\#\*])([^\n\r\*]*)\r?\n *(\r?\n) *([\#\*])', r'\1\2\3\4\5'),
(r'= *\'\'\'([^\'=]*)\'\'\' *=', r'= \1 ='),
(r'= *Elenco Principal *=', r'= Elenco principal ='),
(r'\'\'\' é uma banda', r'\'\'\' é uma [[banda musical|banda]]'),
(r'\'\'\' é um filme', r'\'\'\' é um [[filme]]')
]
}
Inclusão em script editar
As correções acima podem ser incluídas num script através do comando
execfile('user-fixes.py')
checkwiki = fixes['checkwiki']['replacements']
Exemplo básico de utilização:
import wikipedia as pywikibot
import re
execfile('user-fixes.py')
checkwiki = fixes['checkwiki']['replacements']
texto = pywikibot.Page(None, u'Python').get() # texto do artigo 'Python'
novo = texto
for item in checkwiki:
novo = re.sub(item[0], item[1], novo)
pywikibot.showDiff(texto, novo) # mostra na tela o diff entre o texto antes e depois das correções (não salva a edição)