plucker-convert – converte arquivos para o Plucker
Eu organizo toda a minha biblioteca virtual usando o seguinte formato de nomes de arquivo:
autor–idioma–titulo.formato
Daí criei esse script, que serve para passar os arquivos para o Plucker sem muito esforço. Para que ele funcione, seus arquivos devem seguir o mesmo formato que eu uso.
#!/usr/bin/python
# -*- encoding: latin-1 -*-
import sys
import os
import commands
convertidos = []
titulos_longos = []
autores={
“arthur-conan-doyle”: “doyle”,
“jonathan-edwards”:”edwards”,
“augustus-nicodemus-lopes”:”nicodemus”,
“charles-darwin”:”darwin”,
“lloyd-jones”:”jones”,
“charles-dickens”:”dickens”,
}
def Main():
global convertidos
if os.path.exists(“log.txt”):
log = open(“log.txt”, “r”)
for linha in log:
linha = linha.strip()
if len(linha) <= 0: continue
convertidos.append(linha)
log.close()
log = open(“log.txt”, “a”)
print str(convertidos)
if os.path.isdir(“/usr/lib/python”):
spider=”/usr/lib/python/site-packages/PyPlucker/Spider.py”
else:
spider=”/usr/lib/python2.4/site-packages/PyPlucker/Spider.py”
# Arquivo: autor–idioma–titulo.sufixo
target_dir = os.getcwd()
for filename in sys.argv[1:]:
filename = os.path.abspath(filename)
basename = os.path.basename(filename)
if os.path.isdir(filename): continue
if filename in convertidos:
print “Pulando”, filename
continue
autor, idioma, titulo_sufixo = basename.split(“–”)
titulo, sufixo = titulo_sufixo.split(“.”)
if autor in autores:
autor = autores[autor]
print “Autor: %s\nIdioma: %s\nTitulo: %s\nSufixo: %s” % (autor, idioma, titulo, sufixo)
titulo_bonito = “%s-%s” % (autor, titulo.replace(“-”, ” “).replace(“_”, “:”))
if len(titulo_bonito) > 31:
titulos_longos.append(filename)
print “Título muito longo. Ignorando.”
continue
print “len(titulo):”, len(titulo_bonito)
print “filename: file://%s” % filename
print “Título:”, titulo_bonito
#$spider -V 0 -f “NOME_DO_ARQUIVO” -N “TITULO BONITO” –bpp=0 –zlib-compression –no-urlinfo –stayonhost –author=desconhecido file://ARQUIVO
status, output = commands.getstatusoutput(“%s -V 2 -f \”%s\” -N \”%s\” -p \”%s\” –bpp=8 –zlib-compression –author=\”%s\” \”file://%s\”" % (spider, basename, titulo_bonito, target_dir, autor, filename))
if status != 0:
print output
print “=== Erro ===”
else:
log.write(“%s\n” % filename)
print “=== Ok ===”
for filename in titulos_longos:
filename = os.path.abspath(filename)
basename = os.path.basename(filename)
autor, idioma, titulo_sufixo = basename.split(“–”)
titulo, sufixo = titulo_sufixo.split(“.”)
if autor in autores:
autor = autores[autor]
print “Autor: %s\nIdioma: %s\nTitulo: %s\nSufixo: %s” % (autor, idioma, titulo, sufixo)
titulo_bonito = “%s-%s” % (autor, titulo.replace(“-”, ” “).replace(“_”, “:”))
if len(titulo_bonito) > 32:
while True:
msg = “Novo título: ”
print ” ” * len(msg) + “|” + “-” * 30 + “|”
novo_titulo = raw_input(msg)
if len(novo_titulo) > 32:
print “Novo título ainda é maior que 32 caracteres! (%d)” % len(novo_titulo)
continue
else:
titulo_bonito = novo_titulo
break
print “len(titulo):”, len(titulo_bonito)
print “filename: file://%s” % filename
print “Título:”, titulo_bonito
#$spider -V 0 -f “NOME_DO_ARQUIVO” -N “TITULO BONITO” –bpp=0 –zlib-compression –no-urlinfo –stayonhost –author=desconhecido file://ARQUIVO
status, output = commands.getstatusoutput(“%s -V 2 -f \”%s\” -N \”%s\” -p \”%s\” –bpp=0 –zlib-compression –no-urlinfo –stayonhost –author=\”%s\” \”file://%s\”" % (spider, basename, titulo_bonito, target_dir, autor, filename))
if status != 0:
print output
print “=== Erro ===”
else:
log.write(“%s\n” % filename)
print “=== Ok ===”
if __name__ == “__main__”:
if len(sys.argv) <= 1:
print “Uso: %s arquivo [arquivos...]” % os.path.basename(sys.argv[0])
sys.exit(1)
Main()

