Usuário:Rei-artur/python/importar.py
Aspeto
código
[editar | editar código-fonte]#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# (C) Rei-artur, 2009,2010
#
# Distributed under the terms of the MIT license.
#
import sys,re,time,codecs
import wikipedia,config,pagegenerators
import webbrowser
def importar(importar_file,exportar_file,site_in,site_ex):
wikipedia.output('Reading %s ...' % importar_file )
try:
r = codecs.open(importar_file, 'r', 'utf-8')
except IOError, err:
wikipedia.output('falta %s' % importar_file )
return
text = r.read()
r.close()
gen = pagegenerators.TextfilePageGenerator(importar_file, site_ex)
preloadingGen = pagegenerators.PreloadingGenerator(gen, pageNumber = 50)
for page in preloadingGen:
try:
title = page.title()
text=page.get()
except wikipedia.IsRedirectPage:
wikipedia.output('\03{lightred}--> %s e um redirect\03{default}' % page)
continue
except wikipedia.NoPage:
wikipedia.output('\03{lightred}--> %s não existe\03{default}' % page)
continue
except wikipedia.BadTitle:
wikipedia.output('\03{lightred}--> %s titulo nao aceite\03{default}' % page)
continue
except wikipedia.PageNotFound:
wikipedia.output('\03{lightred}--> %s não existe\03{default}' % page)
continue
wikipedia.output('--> %s foi importado' % page)
f = codecs.open(exportar_file, 'w', 'utf-8')
f.write("""
<page>
<title>%s</title>
<import>%s</import>
</page>""" % (title,text) )
f.close()
def salvar(importar_file,exportar_file,site_in,site_ex):
wikipedia.output('Reading %s ...' % exportar_file )
try:
r = codecs.open(exportar_file, 'r', 'utf-8')
except IOError, err:
wikipedia.output('falta %s' % exportar_file )
return
text = r.read()
r.close()
save = "no"
R = re.compile(ur'<page>(.*?)</page>', re.DOTALL)
pageTitle = None
for pageTitle in R.findall(text):
#para evitar possiveis erros
if re.search("<page>", pageTitle ) is not None:
continue
contentMatch = re.search(ur'<title>(.*?)</title>', pageTitle)
if contentMatch != None:
title = contentMatch.group(1)
else:
continue
wikipedia.output( "\n\03{lightpurple}>>> %s <<<\03{default}" % title )
contentMatch = re.search(ur'<import>(.*?)</import>', pageTitle)
if contentMatch != None:
importar = contentMatch.group(1)
else:
continue
page = wikipedia.Page(site_in, title)
if page.exists():
wikipedia.output( "\03{lightred}ja existe, nao foi importado\03{default}" )
continue
contents = importar
comment = "novo artigo"
url = 'http://pt.wikipedia.org/w/index.php?title=%s' % (title)
try:
if save == "all":
page.put(contents, comment = comment)
wikipedia.output( "importacao concluida" )
webbrowser.open(url, 0, False)
else:
choice = wikipedia.inputChoice(
u'Salvar?',
['yes', 'No', 'All'],
['y', 'n', 'a'], 'N')
if choice == 'n':
continue
elif choice == 'y':
page.put(contents, comment = comment)
wikipedia.output( "importacao concluida" )
webbrowser.open(url, 0, False)
elif choice == 'a':
save = "all"
page.put(contents, comment = comment)
wikipedia.output( "importacao concluida" )
webbrowser.open(url, 0, False)
except wikipedia.LockedPage:
wikipedia.output(u"Page %s is locked; skipping." % title)
except wikipedia.EditConflict:
wikipedia.output(u'Skipping %s because of edit conflict' % title)
except wikipedia.SpamfilterError, error:
wikipedia.output(u'Cannot change %s because of spam blacklist entry %s' % (title, error.url))
def main(accao):
importar_file="importar_titulos.txt"
exportar_file="importar_paginas.txt"
site_ex=wikipedia.Site('en','wikipedia')
site_in=wikipedia.Site('pt','wikipedia')
if accao == "importar":
importar(importar_file,exportar_file,site_in,site_ex)
elif accao == "salvar":
salvar(importar_file,exportar_file,site_in,site_ex)
else:
wikipedia.output('insira a accao que deseja fazer? ex: importar.py [importar|salvar]' )
if __name__ == "__main__":
accao = sys.argv[1]
try:
main(accao)
finally:
wikipedia.stopme()
como utilizar
[editar | editar código-fonte]- 1. O código anterior ser salvo com o nome "importar.py" e colocar na pasta do bot
- 2. Na mesma pasta deve criar o ficheiro com o nome "importar_titulos.txt" , o seu conteúdo será a lista de artigos que deseja importar ( nota: deve salvar o ficheiro com coding utf-8 ) , ex:
- *[[artigo1]]
- *[[artigo2]]
- *[[artigo3]]
- 3. Basta digitar o linha de comandos "importar.py importar", o bot importará os artigos para o ficheiro "importar_paginas.txt"
- 4. Traduza o "importar_paginas.txt"
- <page>
- <title></title> #nome do artigos onde será salvo
- <import></import> #conteúdo do artigo
- </page>
- 5. Para salvar os artigos na wikipedia, Basta digitar o linha de comandos "importar.py salvar"
- nota: Evite usar o [a]ll, é importante acompanhar o salvamento de cada artigo e ver o resultado final para evitar possíveis erros
NOTA FINAL: Eu, Rei-artur, não me responsabilizo por qualquer mau uso desta ferramenta :)