Linux en Espanol
 
Crear wiki a partir de un odt (tema #24361)
Publicar nuevo tema  Responder al tema    Foros de discusión -> Programación
Autor Mensaje
templix
Forista


Registrado: 2006-01-15
Mensajes: 20

Publicado: 2012-04-02 18:56:16    Asunto: Crear wiki a partir de un odt

Continuaci?n de la entrada [url]http://www.linuxespanol.com/viewtopic.php?t=24264&sid=e1cc597e8afad02b82dc78b75489bc46[/url]

Un poco de historia: Desde nuestros inicios en linux, a finales del 2005, nos dimos cuenta de la importancia de tomar apuntes. Por este motivo empezamos lo que, pomposamente aunque sin pretensiones, bautizamos como el Tractatus, un compendio de peque?as pinceladas, ejemplos de uso, notas y sucintos comentarios sobre comandos, aplicaciones, atajos y configuraciones que nos pemitian disponer de una r?pida chuleta para salir de alg?n apuro linuxero. Naturalmente el Tractatus fue creciendo y en la actualidad, en su primera parte (Aplicaciones y comandos), tiene m?s de 750 entradas ordenadas alfabeticamente que, si bien, no puede considerarse como una Gran Enciclopedia de GNU/Linux (no est?n todos los que son) ni sus terminos son tratados de forma profunda y exhaustiva, si que continua cumpliendo con la misma funci?n que viene cumpliendo desde sus or?genes: Ser un r?pido manual de consulta.

Tambi?n puntualizxar que fieles a la filosof?a GNU/Linux, siempre hemos compartido su contenido, ya sea, al principio, sacando periodicas versiones en pdf o en la actualidad con versiones online ([url]https://www.dropbox.com/s/cg99ucfx2smaokv/1-tractatus_on_line.odt[/url]). Pero quer?amos ir un poco m?s all? y alguien propuso en uno de los cl?sicos encuentros et?licos, convertirlo en "una casi wiki" permitiendo enriquecer su contenido con comentarios y aportaciones de los usuarios, pero, y aqu? es donde empezaba la parte divertidad, la historia deb?a de cumplir ciertas normas: Lograr que el programa cogiera el odt del dropbox, donde lo tenemos accesible para todos los miembros de lapipaplena, lo transformara en entradas individuales, las convirtiera en html, con su men? general y tal que se actualizara cada 10 o 15 minutos para reflejar las modificaciones del original (el del dropbox) en la web y con la ayuda como mucho de alg?n archivo header, css y poca cosa m?s y preferiblemente en bash, cosa que como ya he mencionado no hemos podido cumplir (de momento) y parece que terminar? siendo en python.

El estado del proyecto puede consultarse de forma provisional en [url]http://crontux.homelinux.com/wiki[/url] (cuando est? terminado se alojar? en la p?gina de la asociaci?n [url]http://www.lapipaplena.net[/url]) en cuyo directorio raiz estan los scripts usados. Obvia decir que cualquier sugerencia, aporte, comentario, contribuci?n, ayuda o caja de cervezas ser? muy bien recibido.
templix
Forista


Registrado: 2006-01-15
Mensajes: 20

Publicado: 2012-11-30 16:58:40    Asunto:

Finalmente el script de bash que mouestra las entradas del tractatus:

$ nano destrac.sh
#!/bin/bash
# Date: 23-11-2012
# Author: "templix" <templix@gmx.es>
# Version: 3.0
# Licence: GPL v3.0
# Description: Script de desarrollo del tractatus
# Require: unzip unoconv cowsay ccze pv wget
###
if [ "$(id -u)" = "0" ]
then
echo
echo "<< Ejecutar el script como usuario sin privilegios... abortando.... >>"
echo
exit 1
fi
DIR=destrac
function ech ()
{
echo $1 | ccze -A
}
function generaTractatus()
{
## Si dropbox es true, usar tractatus del dropbox, si no descargarlo de wget
dropbox=$1
if [ -d $DIR ]
then
echo
ech "Eliminando directorio obsoleto..."
rm -R destrac
fi
mkdir $DIR
cd $DIR
### Convertir de odt a txt, quitar lo innecesario y crear las entradas separadas.
if [ $dropbox -eq 1 ]
then
unoconv --format=txt --stdout $HOME/Dropbox/Dades/tractatus/1-tractatus_on_line.odt > 0-file1.txt
else
unoconv --format=txt --stdout /tmp/1-tractatus_on_line.odt > 0-file1.txt
fi
cat 0-file1.txt | sed -n '/4g8/,$p' > 0-file2.txt
rm 0-file1.txt
mkdir files
cd files
## bloque de miguelgf de linuxespanol.com
cat ../0-file2.txt | awk 'BEGIN {ESTADO=1} \
{ \
if (ESTADO == 1 && NF == 0) \
{ESTADO=1} \
else { if (ESTADO==1 && NF != 0) {NOMBRE=$1; ESTADO=2; print $0 >> NOMBRE} \
else { if (ESTADO==2 && NF == 0) {ESTADO=1} \
else { print $0 >> NOMBRE } \
} \
} \
}'
echo
ech "... proceso terminado...."
### Comprobar si "files" est? vacio:
cd ..
ls files > 0-lista.txt
if [ ! -s 0-lista.txt ]
then
ech "Se han detectado errores al procesar la descarga del Tractatus"
exit
else
echo
ech "Creado el directorio "files" correctamente ..."
echo
fi
rm 0-lista.txt
cd files
}
echo
ech "[1] Descargar ?ltima versi?n del Tractatus via wget"
ech "[2] Descargar ?ltima versi?n del Tractatus via Dropbox"
ech "[3] Trabajar con una copia existente"
echo
read -p "<< Ingresar una opci?n: >> " OPC
echo
case $OPC in
1)
wget http://crontux.homelinux.com/1-tractatus_on_line.odt -O /tmp/1-tractatus_on_line.odt
generaTractatus 0
echo;;
2)
generaTractatus 1
echo;;
3)
cd destrac/files;;
esac
NUM2=$(cat ../0-file2.txt | awk 'BEGIN { FS="\n"; RS="" } {print $1 }' | awk -F " " '{print$1 }' | wc -l)
#####
while [ "$OPC" != 3 ]
do
ech "[1] Entrar una busqueda"
ech "[2] Realizar busqueda avanzada"
ech "[3] Salir"
echo
read -p "<< Ingresar opci?n: >> " OPC
echo
case $OPC in
1)
# Buscar los comandos deseados.
echo
ech "<< Introducir dato a consultar: >>"
echo
read COMANDO
clear
if [ -e "$COMANDO" ]
then
pr -f -d -h $COMANDO $COMANDO | ccze -A
echo
else
cowsay -f tux "Concepto inexistente"
echo
fi
read
clear;;
2)
### Busqueda recursiva
clear
echo
ech "<< Introducir dato a consultar: >>"
echo
read COMANDO
clear
grep -l $COMANDO * | cut -d/ -f2 > ../0-file3.txt
if [ -s ../0-file3.txt ]
then
OP=s
while [ $OP = s ]
do
echo
ech "El dato entrado sale en los siguientes ficheros: "
echo
cat ../0-file3.txt | ccze -A
echo
ech "<< Comando a mostrar... >>"
read COM
cat ../0-file3.txt | grep $COM > /dev/null
if [ "$?" -eq "0" ]
then
echo
clear
pr -f -d -h $COM $COM | ccze -A
else
echo
clear
cowsay -f tux "No existe en el listado"
fi
read
echo
ech "<< Consultar otro comando del listado? [s/n] >>"
read OP
clear
done
else
cowsay -f tux "Concepto inexistente"
echo
fi
echo;;
3);;
esac
done
clear
echo
echo "<< La base de datos del tractatus cuenta con $NUM2 entradas >>" | pv -qL 10
cd $HOME
sleep 3s
exit


Es mejorable, pero como complemento del genwiki.py accesible via web ya es suficiente.
rafaxdrake
Forista


Registrado: 2004-02-21
Mensajes: 3928

Publicado: 2012-11-30 20:23:20    Asunto:

Hola, me parece excelente. Si me lo permites voy a enlazarla en mi servidor. Respecto al script no termino de comprender qu? hace. Para hacerlo funcionar tuve que instalar ccze y unoconv, el cual con sus dependencias lleg? a medir unos 325 megas, adem?s tambi?n instal? a pv. La ?nica funci?n que consigo que funcione del script es la n?mero 3, la de trabajar con copia local. La respuesta que me da es: << La base de datos del tractatus cuenta con 0 entradas >>

Claro, lo dice el script:
Require: unzip unoconv cowsay ccze pv wget

Gracias!!!
rafaxdrake
Forista


Registrado: 2004-02-21
Mensajes: 3928

Publicado: 2012-11-30 20:40:08    Asunto:

Ya lo veo, es un interfaz para consultar la base de datos. Pero me da problema con el fichero 1-tractatus_on_line.odt does not exist parece que el script falla en baj?rselo o algo.
templix
Forista


Registrado: 2006-01-15
Mensajes: 20

Publicado: 2012-12-01 02:36:46    Asunto:

Existe un error en la variable OPC del while de las lineas 93 a la 101 (perd?n... sub? una versi?n no corregida) pido al admin que modifique dicha variable por OPC1 quedando el bloque:

while [ "$OPC1" != 3 ]
do
ech "[1] Entrar una busqueda"
ech "[2] Realizar busqueda avanzada"
ech "[3] Salir"
echo
read -p "<< Ingresar opci?n: >> " OPC1
echo
case $OPC1 in

rasfaxdrake, hemos consultado el servidor y no parace ca?do:

[~]$ destrac.sh

[1] Descargar ?ltima versi?n del Tractatus via wget
[2] Descargar ?ltima versi?n del Tractatus via Dropbox
[3] Trabajar con una copia existente

<< Ingresar una opci?n: >> 1

--2012-12-01 03:32:55-- http://crontux.homelinux.com/1-tractatus_on_line.odt
S'est? resolent crontux.homelinux.com (crontux.homelinux.com)... 192.168.1.10
S'est? connectant a crontux.homelinux.com (crontux.homelinux.com)|192.168.1.10|:80...connectat.
HTTP: s'ha enviat la petici?, s'est? esperant una resposta...200 OK
Mida: 225683 (220K) [application/octet-stream]
S'est? desant a: ?/tmp/1-tractatus_on_line.odt?

100%[==================================================================================>] 225.683 --.-K/s en 0,02s

2012-12-01 03:32:55 (9,93 MB/s) - s'ha desat ?/tmp/1-tractatus_on_line.odt? [225683/225683]


Eliminando directorio obsoleto...
WARNING: gnome-keyring:: couldn't connect to: /home/templix/.cache/keyring-s1KHzb/pkcs11: El fitxer o directori no existeix

... proceso terminado....

Creado el directorio files correctamente ...


[1] Entrar una busqueda
[2] Realizar busqueda avanzada
[3] Salir

<< Ingresar opci?n: >>

Si no lo ejecutamos en una tty 1-6 nos sale en "WARNING" que no sabemos como quitar pero el resto funciona en todos los equipos. El scritp lo que hace es (salvando las distancias) lo mismo que entrando en www.crontux.homelinux.com/wiki via navegador.
templix
Forista


Registrado: 2006-01-15
Mensajes: 20

Publicado: 2012-12-01 02:39:44    Asunto:

perd?n, nuevamente, lo mismo que en crontux.homelinux.com/wiki sin las "www"
templix
Forista


Registrado: 2006-01-15
Mensajes: 20

Publicado: 2012-12-01 09:04:12    Asunto:

Al menos hemos resuelto el WARNING.... Ocurre porque no usamos gnome.

# nano /etc/xdg/autostart/gnome-keyring-pkcs11.desktop

Buscamos la linea que pone:

OnlyShowIn=GNOME;Unity;

Y a?adimos el escritorio que corresponda:

OnlyShowIn=GNOME;Unity;LXDE;xfce





La marca registrada Linux (R) se usa siguiendo la sublicensia obtenida del "Linux Mark Institute",
el LICENCIATARIO exclusivo de Linus Torvalds, propietario de la marca en EEUU y otros países
The registered trademark Linux (R) is used pursuant to a sublicense from the Linux Mark Institute,
the exclusive LICENSEE of Linus Torvalds, owner of the mark in the U.S. and other countries