strip.py

# -*- coding: latin-1 -*-

arquivo_entrada = "_entrada.txt"

entrada = open(arquivo_entrada, 'r')
texto = entrada.read()
entrada.close()
texto = texto.replace("\n-", "\n— ")

while texto.find("  ")+1:
    print "Removendo espaços em branco."
    texto = texto.replace("  ", " ")

while texto.find("    ")+1:
    print "Removendo tabs."
    texto = texto.replace("    ", "")

while texto.find("\n\n \n")+1:
    print "Removendo linhas em branco."
    texto = texto.replace("\n\n \n", "\n\n")

while texto.find("\n\n\n")+1:
    print "Removendo linhas vazias"
    texto = texto.replace("\n\n\n", "\n\n")

while texto.find("\n ")+1:
    print "Removendo espaços em branco."
    texto = texto.replace("\n ", "\n")

entrada = open(arquivo_entrada, 'w')
entrada.write(texto)
entrada.close()

strip_lei.py

# -*- coding: latin-1 -*-

import re

arquivo_entrada = "_entrada.txt"

entrada = open(arquivo_entrada, 'r')
texto = entrada.read()
entrada.close()

texto = texto.replace(" – ", " — ").replace("\n-", "\n—").replace("°", "º")
texto = texto.replace(" º", "º").replace(" )", ")")
texto = texto.replace(".º", "º").replace("º.", "º")

while texto.find("\n\n\n")+1:
    print "Removendo linhas vazias"
    texto = texto.replace("\n\n\n", "\n\n")

texto = re.sub("\nT(ÍTULO|ítulo) (.*)\n\n", "\n*Título \\2: ", texto)
texto = re.sub("\nT(ÍTULO|ítulo) (.*)\n", "\n*Título \\2: ", texto)
texto = re.sub("\nC(APÍTULO|apítulo) (.*)\n", "\n\n=Capítulo \\2=\n;", texto)
texto = re.sub("\nS(EÇÃO|eção) (.*)\n", "\n\n==Seção \\2==\n;", texto)
texto = re.sub("\nS(ECÇÃO|ecção) (.*)\n", "\n\n==Secção \\2==\n;", texto)
texto = re.sub("\nS(UBSEÇÃO|ubseção) (.*)\n", "\n\n===Subseção \\2===\n;", texto)
texto = re.sub("\nS(UBSECÇÃO|ubsecção) (.*)\n", "\n\n===Subsecção \\2===\n;", texto)
texto = re.sub("\nArtigo ([0-9]*)(º|)", "\n\n====Art. \\1\\2====\n", texto)
texto = re.sub("\nArt. ([0-9]*)(º|)", "\n\n====Art. \\1\\2====\n", texto)
texto = re.sub("\n§( |)([0-9]*)(º|)", "\n\n'''§ \\2\\3'''", texto)
texto = re.sub("\nParágrafo (Ú|ú)nico( |)(-|.)", "\n\n'''Parágrafo único'''. ", texto)
texto = re.sub("\n([IVXL]*)( |)(-|—)", "\n:'''\\1''' -", texto)
texto = re.sub("\n([a-z])\)", "\n::\\1) ", texto)

texto = texto.replace(":'''''' -", "")

while texto.find("	")+1:
    print "Removendo tabs."
    texto = texto.replace("	", "")

while texto.find("  ")+1:
    print "Removendo espaços em branco."
    texto = texto.replace("  ", " ")

while texto.find("\n\n \n")+1:
    print "Removendo linhas em branco."
    texto = texto.replace("\n\n \n", "\n\n")

while texto.find("\n\n\n")+1:
    print "Removendo linhas vazias"
    texto = texto.replace("\n\n\n", "\n\n")

while texto.find("\n ")+1:
    print "Removendo espaços em branco."
    texto = texto.replace("\n ", "\n")

while texto.find(" \n")+1:
    print "Removendo espaços em branco."
    texto = texto.replace(" \n", "\n")

texto = re.sub("\n;\n", "\n;", texto)
texto = re.sub("\n:(.*)\n\n:", "\n:\\1\n:", texto)

entrada = open(arquivo_entrada, 'w')
entrada.write(texto)
entrada.close()

num_romano.py

# -*- coding: utf-8 -*-
"""
num_romano(int), retorna int convertido em numerais romanos
Limitado até 999.
"""
def num_romano(num_inteiro):
    centena = ((num_inteiro/100)%10)*100
    dezena = ((num_inteiro/10)%10)*10
    unidade = ((num_inteiro/1)%10)
    cap_romano=""
    if centena == 100:
        cap_romano+='C'
    elif centena == 200:
        cap_romano+='CC'
    elif centena == 300:
        cap_romano+='CCC'
    elif centena == 400:
        cap_romano+='CD'
    elif centena == 500:
        cap_romano+='D'
    elif centena == 600:
        cap_romano+='DC'
    elif centena == 700:
        cap_romano+='DCC'
    elif centena == 800:
        cap_romano+='DCCC'
    elif centena == 900:
        cap_romano+='CM'

    if dezena == 10:
        cap_romano+='X'
    elif dezena == 20:
        cap_romano+='XX'
    elif dezena == 30:
        cap_romano+='XXX'
    elif dezena == 40:
        cap_romano+='XL'
    elif dezena == 50:
        cap_romano+='L'
    elif dezena == 60:
        cap_romano+='LX'
    elif dezena == 70:
        cap_romano+='LXX'
    elif dezena == 80:
        cap_romano+='LXXX'
    elif dezena == 90:
        cap_romano+='XC'
        
    if unidade == 1:
        cap_romano+='I'
    elif unidade == 2:
        cap_romano+='II'
    elif unidade == 3:
        cap_romano+='III'
    elif unidade == 4:
        cap_romano+='IV'
    elif unidade == 5:
        cap_romano+='V'
    elif unidade == 6:
        cap_romano+='VI'
    elif unidade == 7:
        cap_romano+='VII'
    elif unidade == 8:
        cap_romano+='VIII'
    elif unidade == 9:
        cap_romano+='IX'

    return cap_romano

poem_finder.py

# -*- coding: latin-1 -*-

arquivo_entrada = "_entrada.txt"

entrada = open(arquivo_entrada, 'r')
texto = entrada.readlines()
entrada.close()
entrada = open(arquivo_entrada, 'w')

control = 0

for i in range(len(texto)):
    if i > 0 and i < len(texto) - 1 :
        if texto[i-1].strip() == "" and texto[i].strip() != "" and texto[i+1].strip() != "" and not control:
            entrada.write("<poem>\n")
            entrada.write(texto[i])
            control = 1
        elif control and texto[i].strip() == "":
            entrada.write("</poem>\n")
            entrada.write("\n")
            control = 0
        else:
            entrada.write(texto[i])
    else:
        entrada.write(texto[i])
if control:
    entrada.write("</poem>\n")

entrada.close()

entrada = open(arquivo_entrada, 'r')
texto = entrada.read()
entrada.close()
texto = texto.replace("</poem>\n\n<poem>", "")

entrada = open(arquivo_entrada, 'w')
entrada.write(texto)
entrada.close()

capitalizador_simples.py

"""Procura por linhas que marcam incício do capitulo, para ser utilizado com o source_prosa.py.
Ex:
1
->Fica:
*I
"""
# -*- coding: latin-1 -*-

from num_romano import num_romano

arquivo_entrada = '_entrada.txt'

entrada = open(arquivo_entrada, 'r')
texto = entrada.readlines()
entrada.close()
entrada = open(arquivo_entrada, 'w')

cap = 1
i = 0

while i < len(texto):
    frase = texto[i]
    if frase[0] == "@":
        cap = 1
        entrada.write(frase)
        i += 1
    elif frase.strip() == num_romano(cap) or frase.strip() == str(cap):
        entrada.write("*"+num_romano(cap)+"\n")
        cap += 1
        i += 1
    else:
        entrada.write(frase)
        i += 1

entrada.close()

source_prosa.py

# -*- coding: utf-8 -*-
"""
Programa gera cabeçalhos para os textos em um arquivo em codificação utf-8, para ser exportado
com auxilio do pagefromfile.py; cria ainda uma lista de índice correspondente ao artigo principal
da obra que deve ser exportada manualmente.
 
Arquivo de entrada: '_entrada.txt'
Arquivos de saída: 'lista.txt', 'dic.txt'
 
Marcação de início de capítulo: '*'
Marcação de início de divisão: '@'
Ex:
Autor
Obra
 
@Primeira Parte
*I: A noite
 
texto...
"""
 
from num_romano import num_romano
 
def gera_cabecalho(inicio, fim, div):
    cap = 0
    for j in range(inicio, fim):
        frase = unicode(texto[j], 'utf-8').encode('utf-8')
 
        if frase[0] == '@':
            titulo_div_utf = frase[1:len(frase)-1]
            titulo_div = unicode(titulo_div_utf, 'utf-8').encode('utf-8')
            titulo_div_secao_utf = titulo_div_utf + ":"
            div += 1
            lista.write("==%s==\n" % titulo_div )
            cap = 0
            continue
        elif frase[0] == '*':
            cap += 1
            capitulo_utf = frase[1:len(frase)-1]
            capitulo = unicode(capitulo_utf, 'utf-8').encode('utf-8')
            if div:
                lista.write("* [[%s/%s/%s|Capítulo %s]]\n" % (obra, num_romano(div), num_romano(cap), capitulo ) )
                if cap == 1 and div > 1:
                    saida.write("{{-start-}}\n{{subst:void|'''%s/%s/%s'''}}"
                                "{{navegar\n"
                                "|obra=[[%s]]\n"
                                "|autor=%s\n"
                                "|seção=%s Capítulo %s\n"
                                "|anterior=[[%s/%s/%s|%s Capítulo %s]]\n"
                                "|posterior=[[%s/%s/%s|%s Capítulo %s]]\n"
                                "|notas=%s\n}}\n" % (
                                obra_utf, num_romano(div), num_romano(cap),
                                obra_utf, autor_utf,
                                titulo_div_utf + ",", capitulo_utf,
                                obra_utf, num_romano(div-1), num_romano(cap_anterior), div_lista[div-1]+":", num_romano(cap_anterior),
                                obra_utf, num_romano(div), num_romano(cap+1), titulo_div_secao_utf, num_romano(cap+1),
                                notas_utf) )
                elif cap == 1:
                    saida.write("{{-start-}}\n{{subst:void|'''%s/%s/%s'''}}"
                                "{{navegar\n"
                                "|obra=[[%s]]\n"
                                "|autor=%s\n"
                                "|seção=%s Capítulo %s\n"
                                "|anterior=\n"
                                "|posterior=[[%s/%s/%s|%s Capítulo %s]]\n"
                                "|notas=%s\n}}\n" % (
                                obra_utf, num_romano(div), num_romano(cap),
                                obra_utf, autor_utf,
                                titulo_div_utf + ",", capitulo_utf,
                                obra_utf, num_romano(div), num_romano(cap+1), titulo_div_secao_utf, num_romano(cap+1),
                                notas_utf) )
                else:
                    saida.write("[[Categoria:%s|%s, Capítulo %02d]]\n{{-stop-}}\n\n" % (obra_utf, titulo_div_utf, cap-1) )
                    if cap == cap_atual and div != div_lista[0]:
                        saida.write("{{-start-}}\n{{subst:void|'''%s/%s/%s'''}}"
                                    "{{navegar\n"
                                    "|obra=[[%s]]\n"
                                    "|autor=%s\n"
                                    "|seção=%s Capítulo %s\n"
                                    "|anterior=[[%s/%s/%s|%s Capítulo %s]]\n"
                                    "|posterior=[[%s/%s/%s|%s Capítulo %s]]\n"
                                    "|notas=%s\n}}\n" % (
                                    obra_utf, num_romano(div), num_romano(cap),
                                    obra_utf, autor_utf,
                                    titulo_div_utf + ",", capitulo_utf,
                                    obra_utf, num_romano(div), num_romano(cap-1), titulo_div_secao_utf, num_romano(cap-1),
                                    obra_utf, num_romano(div+1), num_romano(1), div_lista[div+1]+":", num_romano(1),
                                    notas_utf) )
                    elif cap == cap_atual:
                        saida.write("{{-start-}}\n{{subst:void|'''%s/%s/%s'''}}"
                                    "{{navegar\n"
                                    "|obra=[[%s]]\n"
                                    "|autor=%s\n"
                                    "|seção=%s Capítulo %s\n"
                                    "|anterior=[[%s/%s/%s|%s Capítulo %s]]\n"
                                    "|posterior=\n"
                                    "|notas=%s\n}}\n" % (
                                    obra_utf, num_romano(div), num_romano(cap),
                                    obra_utf, autor_utf,
                                    titulo_div_utf + ",", capitulo_utf,
                                    obra_utf, num_romano(div), num_romano(cap-1), titulo_div_secao_utf, num_romano(cap-1),
                                    notas_utf) )                      
                    else:
                        saida.write("{{-start-}}\n{{subst:void|'''%s/%s/%s'''}}"
                                    "{{navegar\n"
                                    "|obra=[[%s]]\n"
                                    "|autor=%s\n"
                                    "|seção=%s Capítulo %s\n"
                                    "|anterior=[[%s/%s/%s|%s Capítulo %s]]\n"
                                    "|posterior=[[%s/%s/%s|%s Capítulo %s]]\n"
                                    "|notas=%s\n}}\n" % (
                                    obra_utf, num_romano(div), num_romano(cap),
                                    obra_utf, autor_utf,
                                    titulo_div_utf + ",", capitulo_utf,
                                    obra_utf, num_romano(div), num_romano(cap-1), titulo_div_secao_utf, num_romano(cap-1), 
                                    obra_utf, num_romano(div), num_romano(cap+1), titulo_div_secao_utf, num_romano(cap+1),
                                    notas_utf) )
            else:
                lista.write("* [[%s/%s|Capítulo %s]]\n" % (obra, num_romano(cap), capitulo) )
                if cap == 1:
                    saida.write("{{-start-}}\n{{subst:void|'''%s/%s'''}}"
                                "{{navegar\n"
                                "|obra=[[%s]]\n"
                                "|autor=%s\n"
                                "|seção=Capítulo %s\n"
                                "|anterior=\n"
                                "|posterior=[[%s/%s|Capítulo %s]]\n"
                                "|notas=%s\n}}\n" % (
                                obra_utf, num_romano(cap),
                                obra_utf, autor_utf,
                                capitulo_utf,
                                obra_utf, num_romano(cap+1), num_romano(cap+1),
                                notas_utf) )
                else:
                    saida.write("[[Categoria:%s|Capítulo %02d]]\n{{-stop-}}\n\n" % (obra_utf, cap-1) )
                    if cap == cap_atual:
                        saida.write("{{-start-}}\n{{subst:void|'''%s/%s'''}}"
                                    "{{navegar\n"
                                    "|obra=[[%s]]\n"
                                    "|autor=%s\n"
                                    "|seção=Capítulo %s\n"
                                    "|anterior=[[%s/%s|Capítulo %s]]\n"
                                    "|posterior=\n"
                                    "|notas=%s\n}}\n" % (
                                    obra_utf, num_romano(cap),
                                    obra_utf, autor_utf,
                                    capitulo_utf,
                                    obra_utf, num_romano(cap-1), num_romano(cap-1),
                                    notas_utf) )
                    else:
                        saida.write("{{-start-}}\n{{subst:void|'''%s/%s'''}}"
                                    "{{navegar\n"
                                    "|obra=[[%s]]\n"
                                    "|autor=%s\n"
                                    "|seção=Capítulo %s\n"
                                    "|anterior=[[%s/%s|Capítulo %s]]\n"
                                    "|posterior=[[%s/%s|Capítulo %s]]\n"
                                    "|notas=%s\n}}\n" % (
                                    obra_utf, num_romano(cap),
                                    obra_utf, autor_utf,
                                    capitulo_utf,
                                    obra_utf, num_romano(cap-1), num_romano(cap-1),
                                    obra_utf, num_romano(cap+1), num_romano(cap+1),
                                    notas_utf) )
        else:
            saida.write(frase)
    if div:
        saida.write("[[Categoria:%s|%s Capítulo %02d]]\n{{-stop-}}\n\n" % (obra_utf, titulo_div_secao_utf, cap))
    elif cap:
        saida.write("[[Categoria:%s|Capítulo %02d]]\n{{-stop-}}\n\n" % (obra_utf, cap))
 
entrada = open('_entrada.txt', 'r')
lista = open('lista.txt', 'w')
saida = open('dict.txt', 'w')
 
texto = entrada.readlines()
 
autor = texto[0].strip()
obra = texto[1].strip()
notas = texto[2].strip()
 
autor_utf = unicode(autor, 'utf-8').encode('utf-8')
obra_utf = unicode(obra, 'utf-8').encode('utf-8')
notas_utf = unicode(notas, 'utf-8').encode('utf-8')
titulo_div_secao_utf = ""
 
lista.write("{{navegar\n"
            "|obra=%s\n"
            "|autor=%s\n"
            "|notas=%s\n}}\n"
            "{{wikipédia|%s}}\n"
            "{{versão para impressão disponível}}\n" % (obra, autor, notas, obra) )
 
#Gera arquivo com cabeçalho
 
div_lista = [0]
cap_anterior = 0 # Número do último capítulo do tomo anterior
cap_atual = 0    # Número do último capítulo do tomo atual
 
inicio = 3
for i in range(3, len(texto)):
    frase = unicode(texto[i], 'utf-8').encode('utf-8')
    if frase[0] == '@':
        div_lista[0] += 1
        div_lista += [frase[1:len(frase)].strip()]
        if div_lista[0] > 1:
            fim = i
            gera_cabecalho(inicio, fim, div_lista[0]-2)
            inicio = fim
            cap_anterior = cap_atual
            cap_atual = 0
    elif frase[0] == '*':
        cap_atual += 1
if div_lista[0]:
    gera_cabecalho(inicio, len(texto), div_lista[0]-1)
else:
    gera_cabecalho(inicio, len(texto), div_lista[0])
 
lista.write("\n[[Categoria: ]]\n"
            "[[Categoria:%s]]\n"
            "[[Categoria:%s| ]]\n"
            "[[Categoria:Romances brasileiros]]\n"
            "[[Categoria: ]]\n" % (
            autor, obra) )
 
entrada.close()
lista.close()
 
lista = open('lista.txt', 'r')
texto=lista.readlines()
 
# Gera arquivo para impressão
 
saida.write("{{-start-}}\n{{subst:void|'''Anexo:Imprimir/%s'''}}{{Versão para impressão|%s}}\n"
            "{{navegar\n"
            "|obra=[[%s]]\n"
            "|autor=%s\n"
            "|notas=%s\n}}\n"
            "==͍ndice==\n" % (
            obra_utf,
            obra_utf, obra_utf, autor_utf, notas_utf) )
 
for i in range(7, len(texto)):
    frase = texto[i]
    if frase[0] == '*' or frase[0] == '=':
        saida.write("%s" % unicode(frase, 'utf-8').encode('utf-8') )
 
for i in range(7, len(texto)):
    frase = texto[i]
    if frase[0] == '*':
        saida.write("{{quebra de página}}\n"
                    "{{:%s}}\n" % unicode(frase[4:len(frase)-3], 'utf-8').encode('utf-8') )
 
saida.write("{{-stop-}}" )
lista.close()
saida.close()

source_poem.py

# -*- coding: utf-8 -*-
"""
Arquivo de entrada: '_entrada.txt'
Arquivos de saída: 'lista.txt', 'dic.txt'
Marcação do título da poesia: '*'
Arquivo dict.txt precisará de inserção manual (find-replace externo) de categorias complementares (data, autor etc)
"""

entrada = open('_entrada.txt', 'r')
lista = open('lista.txt', 'w')
saida = open('dict.txt', 'w')

texto = entrada.readlines()

autor = texto[0].strip()
obra = texto[1].strip()
notas = texto[2].strip()

autor_utf = unicode(autor, 'utf-8').encode('utf-8')
obra_utf = unicode(obra, 'utf-8').encode('utf-8')
notas_utf = unicode(notas, 'utf-8').encode('utf-8')
titulo_div_secao_utf = ""

lista.write("{{navegar\n"
            "|obra=%s\n"
            "|autor=%s\n"
            "|notas=%s\n}}\n"
            "{{wikipédia|%s}}\n"
            "{{versão para impressão disponível}}\n" % (obra, autor, notas, obra) )

#Gera arquivo com cabeçalho

poem_control = 0

for i in range(3, len(texto)):   
    frase = unicode(texto[i], 'utf-8').encode('utf-8')
    if frase[0] == '*':
        if poem_control:
            saida.write("[[Categoria:%s]]\n{{-stop-}}\n\n" % obra_utf)
        poem_control = 1
        poema_utf = frase[1:].strip()
        poema = unicode(poema_utf, 'utf-8').encode('utf-8')
        saida.write("{{-start-}}\n{{subst:void|'''%s'''}}"
                    "{{navegar\n"
                    "|obra=%s\n"
                    "|autor=%s\n"
                    "|notas={{integra|poema=[[%s]].}}\n}}\n" % (
                    poema_utf, poema_utf, autor_utf, obra_utf) )
        lista.write("* [[%s]]\n" % poema )
    else:
        saida.write(frase)

saida.write("[[Categoria:%s]]\n{{-stop-}}\n\n" % poema_utf )
lista.write("\n[[Categoria:%s| ]]\n"
            "[[Categoria:Poesia brasileira]]" % obra )

entrada.close()
lista.close()

lista = open('lista.txt', 'r')
texto=lista.readlines()

# Gera arquivo para impressão

saida.write("{{-start-}}\n{{subst:void|'''Anexo:Imprimir/%s'''}}{{Versão para impressão|%s}}\n"
            "{{navegar\n"
            "|obra=[[%s]]\n"
            "|autor=%s\n"
            "|notas=%s\n}}\n"
            "==͍ndice==\n" % (
            obra_utf,
            obra_utf, obra_utf, autor_utf, notas_utf) )

for i in range(7, len(texto)):
    frase = texto[i]
    if frase[0] == '*' or frase[0] == '=':
        saida.write("%s" % unicode(frase, 'utf-8').encode('utf-8') )

for i in range(7, len(texto)):
    frase = texto[i]
    if frase[0] == '*':
        saida.write("{{quebra de página}}\n"
                    "{{:%s}}\n" % unicode(frase[4:len(frase)-3], 'utf-8').encode('utf-8') )
lista.close()
saida.close()

source_lei.py

# -*- coding: latin-1 -*-

import urllib
from num_romano import num_romano

def gera_cabecalho(inicio, fim, div):
    cap = 0
    for j in range(inicio, fim):
        frase = unicode(texto[j], 'latin-1').encode('utf-8')
        if j+1 in range(inicio, fim):
            frase_proxima = texto[j+1].strip()
        if frase[0] == '@':
            titulo_div_utf = frase[1:len(frase)-1]
            titulo_div = unicode(titulo_div_utf, 'utf-8').encode('latin-1')
            titulo_div_secao_utf = titulo_div_utf + ":"
            div += 1
            lista.write("==%s==\n" % titulo_div )
            cap = 0
            continue
        elif frase[0:2] == '*T':
            cap += 1
            capitulo_utf = frase[1:len(frase)-1]
            capitulo = unicode(capitulo_utf, 'utf-8').encode('latin-1')
            lista.write("* [[%s/%s|%s]]\n" % (obra, num_romano(cap), capitulo) )
            if div:
                lista.write("* [[%s/%s/%s|Capítulo %s]]\n" % (obra, num_romano(div), num_romano(cap), capitulo ) )
                if cap == 1 and div > 1:
                    saida.write("{{-start-}}\n{{subst:void|'''%s/%s/%s'''}}"
                                "{{navegar\n"
                                "|obra=[[%s]]\n"
                                "|autor=%s\n"
                                "|seção=%s Título %s\n"
                                "|anterior=[[%s/%s/%s|%s Título %s]]\n"
                                "|posterior=[[%s/%s/%s|%s Título %s]]\n"
                                "|notas=%s\n}}\n" % (
                                obra_utf, num_romano(div), num_romano(cap),
                                obra_utf, autor_utf,
                                titulo_div_utf + ",", capitulo_utf,
                                obra_utf, num_romano(div-1), num_romano(cap_anterior), div_lista[div-1]+":", num_romano(cap_anterior),
                                obra_utf, num_romano(div), num_romano(cap+1), titulo_div_secao_utf, num_romano(cap+1),
                                notas_utf) )
                elif cap == 1:
                    saida.write("{{-start-}}\n{{subst:void|'''%s/%s/%s'''}}"
                                "{{navegar\n"
                                "|obra=[[%s]]\n"
                                "|autor=%s\n"
                                "|seção=%s Título %s\n"
                                "|anterior=\n"
                                "|posterior=[[%s/%s/%s|%s Título %s]]\n"
                                "|notas=%s\n}}\n" % (
                                obra_utf, num_romano(div), num_romano(cap),
                                obra_utf, autor_utf,
                                titulo_div_utf + ",", capitulo_utf,
                                obra_utf, num_romano(div), num_romano(cap+1), titulo_div_secao_utf, num_romano(cap+1),
                                notas_utf) )
                else:
                    saida.write("[[Categoria:%s|%s, Título %02d]]\n{{-stop-}}\n\n" % (obra_utf, titulo_div_utf, cap-1) )
                    if cap == cap_atual and div != div_lista[0]:
                        saida.write("{{-start-}}\n{{subst:void|'''%s/%s/%s'''}}"
                                    "{{navegar\n"
                                    "|obra=[[%s]]\n"
                                    "|autor=%s\n"
                                    "|seção=%s Título %s\n"
                                    "|anterior=[[%s/%s/%s|%s Título %s]]\n"
                                    "|posterior=[[%s/%s/%s|%s Título %s]]\n"
                                    "|notas=%s\n}}\n" % (
                                    obra_utf, num_romano(div), num_romano(cap),
                                    obra_utf, autor_utf,
                                    titulo_div_utf + ",", capitulo_utf,
                                    obra_utf, num_romano(div), num_romano(cap-1), titulo_div_secao_utf, num_romano(cap-1),
                                    obra_utf, num_romano(div+1), num_romano(1), div_lista[div+1]+":", num_romano(1),
                                    notas_utf) )
                    elif cap == cap_atual:
                        saida.write("{{-start-}}\n{{subst:void|'''%s/%s/%s'''}}"
                                    "{{navegar\n"
                                    "|obra=[[%s]]\n"
                                    "|autor=%s\n"
                                    "|seção=%s Título %s\n"
                                    "|anterior=[[%s/%s/%s|%s Título %s]]\n"
                                    "|posterior=\n"
                                    "|notas=%s\n}}\n" % (
                                    obra_utf, num_romano(div), num_romano(cap),
                                    obra_utf, autor_utf,
                                    titulo_div_utf + ",", capitulo_utf,
                                    obra_utf, num_romano(div), num_romano(cap-1), titulo_div_secao_utf, num_romano(cap-1),
                                    notas_utf) )                      
                    else:
                        saida.write("{{-start-}}\n{{subst:void|'''%s/%s/%s'''}}"
                                    "{{navegar\n"
                                    "|obra=[[%s]]\n"
                                    "|autor=%s\n"
                                    "|seção=%s Título %s\n"
                                    "|anterior=[[%s/%s/%s|%s Título %s]]\n"
                                    "|posterior=[[%s/%s/%s|%s Título %s]]\n"
                                    "|notas=%s\n}}\n" % (
                                    obra_utf, num_romano(div), num_romano(cap),
                                    obra_utf, autor_utf,
                                    titulo_div_utf + ",", capitulo_utf,
                                    obra_utf, num_romano(div), num_romano(cap-1), titulo_div_secao_utf, num_romano(cap-1), 
                                    obra_utf, num_romano(div), num_romano(cap+1), titulo_div_secao_utf, num_romano(cap+1),
                                    notas_utf) )
            else:
                if cap == 1:
                    saida.write("{{-start-}}\n{{subst:void|'''%s/%s'''}}"
                                "{{navegar\n"
                                "|obra=[[%s]]\n"
                                "|autor=%s\n"
                                "|seção=%s\n"
                                "|anterior=\n"
                                "|posterior=[[%s/%s|Título %s]]\n"
                                "|notas=%s\n}}\n" % (
                                obra_utf, num_romano(cap),
                                obra_utf, autor_utf,
                                capitulo_utf,
                                obra_utf, num_romano(cap+1), num_romano(cap+1),
                                notas_utf) )
                else:
                    saida.write("[[Categoria:%s|Título %02d]]\n{{-stop-}}\n\n" % (obra_utf, cap-1) )
                    if cap == cap_atual:
                        saida.write("{{-start-}}\n{{subst:void|'''%s/%s'''}}"
                                    "{{navegar\n"
                                    "|obra=[[%s]]\n"
                                    "|autor=%s\n"
                                    "|seção=%s\n"
                                    "|anterior=[[%s/%s|Título %s]]\n"
                                    "|posterior=\n"
                                    "|notas=%s\n}}\n" % (
                                    obra_utf, num_romano(cap),
                                    obra_utf, autor_utf,
                                    capitulo_utf,
                                    obra_utf, num_romano(cap-1), num_romano(cap-1),
                                    notas_utf) )
                    else:
                        saida.write("{{-start-}}\n{{subst:void|'''%s/%s'''}}"
                                    "{{navegar\n"
                                    "|obra=[[%s]]\n"
                                    "|autor=%s\n"
                                    "|seção=%s\n"
                                    "|anterior=[[%s/%s|Título %s]]\n"
                                    "|posterior=[[%s/%s|Título %s]]\n"
                                    "|notas=%s\n}}\n" % (
                                    obra_utf, num_romano(cap),
                                    obra_utf, autor_utf,
                                    capitulo_utf,
                                    obra_utf, num_romano(cap-1), num_romano(cap-1),
                                    obra_utf, num_romano(cap+1), num_romano(cap+1),
                                    notas_utf) )
        else:
            saida.write(frase)
            if frase[0:4] != '====':
                if frase[0:3] == '===':
                    lista.write(":::[[%s/%s#%s|%s]]\n" % (obra, num_romano(cap), urllib.quote(frase[3:len(frase)-4].replace(" ", "_")).replace("%", "."), unicode(frase[3:len(frase)-4], 'utf-8').encode('latin-1')+": "+frase_proxima[1:]) )
                elif frase[0:2] == '==':
                    lista.write("::[[%s/%s#%s|%s]]\n" % (obra, num_romano(cap), urllib.quote(frase[2:len(frase)-3].replace(" ", "_")).replace("%", "."), unicode(frase[2:len(frase)-3], 'utf-8').encode('latin-1')+": "+frase_proxima[1:]) )
                elif frase[0:1] == '=':
                    lista.write(":[[%s/%s#%s|%s]]\n" % (obra, num_romano(cap), urllib.quote(frase[1:len(frase)-2].replace(" ", "_")).replace("%", "."), unicode(frase[1:len(frase)-2], 'utf-8').encode('latin-1')+": "+frase_proxima[1:]) )
    if cap:
        saida.write("[[Categoria:%s|Título %02d]]\n{{-stop-}}\n\n" % (obra_utf, cap))

entrada = open('_entrada.txt', 'r')
lista = open('lista.txt', 'w')
saida = open('dict.txt', 'w')

texto = entrada.readlines()

autor = texto[0].strip()
obra = texto[1].strip()
notas = texto[2].strip()

autor_utf = unicode(autor, 'latin-1').encode('utf-8')
obra_utf = unicode(obra, 'latin-1').encode('utf-8')
notas_utf = unicode(notas, 'latin-1').encode('utf-8')
titulo_div_secao_utf = ""

lista.write("{{navegar\n"
            "|obra=%s\n"
            "|autor=%s\n"
            "|notas=%s\n}}\n"
            "{{versão para impressão disponível}}\n" % (obra, autor, notas) )

#Gera arquivo com cabeçalho

div_lista = [0]
cap_anterior = 0 # Número do último Título do tomo anterior
cap_atual = 0    # Número do último Título do tomo atual

inicio = 3
for i in range(3, len(texto)):
    frase = unicode(texto[i], 'latin-1').encode('utf-8')
    if frase[0] == '@':
        div_lista[0] += 1
        div_lista += [frase[1:len(frase)].strip()]
        if div_lista[0] > 1:
            fim = i
            gera_cabecalho(inicio, fim, div_lista[0]-2)
            inicio = fim
            cap_anterior = cap_atual
            cap_atual = 0
    elif frase[0] == '*':
        cap_atual += 1
if div_lista[0]:
    gera_cabecalho(inicio, len(texto), div_lista[0]-1)
else:
    gera_cabecalho(inicio, len(texto), div_lista[0])

lista.write("\n[[Categoria:]]\n"
            "[[Categoria:Legislação de ]]\n"
            "[[Categoria:%s| ]]\n" % (obra) )

entrada.close()
lista.close()

# Gera arquivo para impressão
lista = open('lista.txt', 'r')
texto=lista.readlines()
lista.close()
lista = open('lista.txt', 'w')


saida.write("{{-start-}}\n{{subst:void|'''Anexo:Imprimir/%s'''}}{{Versão para impressão|%s}}\n"
            "{{navegar\n"
            "|obra=[[%s]]\n"
            "|autor=%s\n"
            "|notas=%s\n}}\n"
            "==Índice==\n" % (
            obra_utf,
            obra_utf, obra_utf, autor_utf, notas_utf) )

for i in range(7, len(texto)):
    frase = texto[i]
    if frase[0] == '*' or frase[0] == '=':
        saida.write("%s" % unicode(frase, 'latin-1').encode('utf-8') )

for i in range(0, len(texto)):
    frase = texto[i]
    if frase[0] == '*':
        saida.write("{{quebra de página}}\n"
                    "{{:%s}}\n" % unicode(frase[4:len(frase)-3], 'latin-1').encode('utf-8') )
        if texto[i-1][0] ==':':
            lista.write("}}\n")
        if i+1 in range(0, len(texto)):
            if texto[i+1][0] ==':':
                lista.write("{{oculto\n|"+frase+"|")
            else:
                lista.write(frase)
        else:
            lista.write(frase)
    else:
        lista.write(frase)

saida.write("{{quebra de página}}\n"
            "{{GFDL-print}}\n{{-stop-}}" )
lista.close()
lista = open('lista.txt', 'r')
texto = lista.read()
#texto = re.sub("\n (.*)\n:", "\n{{oculto|* \\1\n|: ", texto)
#texto = re.sub("\n\:(.*)\n*", "\n:(.*)\n}}\n*", texto)

lista.close()

image2djvu.py

# -*- coding: latin-1  -*-
'''
inicio: número da primeira imagem
fim: número da última imagem
nome_imagem: prefixo do nome da imagem
Os arquivos são importados sob o nome de 'livro.djvu'
'''
import os
inicio = 3
fim = 151

i=inicio
arquivos_djvu=""
os.popen( "djvm -c livro.djvu" )

while i <= fim:
    arquivos_djvu=arquivos_djvu+" %s.djvu" % (i)
    nome_imagem="%d.jpg" % (i)
    cmd = "c44.exe \"%s\" \"%s.djvu\"" % (nome_imagem, i)
    os.popen( cmd )
    print "Transformando %s em djvu." % nome_imagem
    os.popen( "djvm -i livro.djvu %d.djvu" %(i) )
    cmd = "del \"%s.djvu\"" % (i)
    os.popen( cmd )
    i=i+1

print "Pronto!"