Saltar para o conteúdo

Usuário:Rei-artur/python/importar.py

Origem: Wikipédia, a enciclopédia livre.
#!/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 :)