Archivo por Autor

Descarga masiva de subtítulos con Periscope

17 may 2010

Voy a compartir con todos vosotros una excelente utilidad que encontré hace unas semanas.

Periscope es una herramienta para la descarga masiva de subtítulos escrita en Python. A partir del código hash del fichero, realiza búsquedas en los portales más importantes para la descarga de subtítulos (OpenSubtitles, SubtitleSource, Subscene, Subtitulos.es) y renombra correctamente los ficheros que se descarga a partir del nombre que tienen los vídeos en la carpeta local, dejándolo todo preparado para que el subtítulo se cargue automáticamente al comenzar el visionado del vídeo.

Soporta múltiples idiomas y dispone de integración con Nautilus, el gestor de archivos de GNOME. Además, se distribuye como librería, así que es posible su integración en otros proyectos. Una maravilla, vamos xD

Yo ya tengo configurado mi sistema para que automáticamente ejecute cada cierto tiempo el siguiente comando:

$ periscope -l es /home/antonio/Incoming/*.avi

MiniTip – Trabajar con archivos odt de OpenOffice en modo texto

05 nov 2009

Hace unos días se planteaba en uno de los equipos de trabajo una duda muy concreta: cómo buscar una cadena de texto en cientos de archivos de OpenOffice de manera eficiente.Un fichero odt no es más que un conjunto de ficheros xml comprimidos en formato zip por lo que, afortunadamente, se pueden utilizar herramientas diseñadas para trabajar con texto plano una vez que se descomprime el fichero binario. Sin embargo, los ficheros xml contenidos no están pensados para ser interpretados por personas, sino por ordenadores, por lo que es necesario un proceso previo del contenido. La utilidad odt2txt (disponible en los repositorios de las principales distribuciones) se encarga de ello y, a partir de un fichero que se pasa como parámetro, escribe por la salida estándar sus contenidos, dándoles un formato más amigable. En Ubuntu se puede instalar mediante un simple

sudo apt-get install odt2txt

Una vez que está instalada, ya se puede integrar en distintos scripts que hagan lo que necesitemos. Por ejemplo, para localizar los ficheros odt que contienen una cadena de texto dentro de una carpeta y sus subdirectorios podemos utilizar el siguiente:

#!/bin/sh
for i in `find . -name *.odt`; do
if [ `odt2txt "$i" | grep -iE "$@" | wc -l` -gt 0 ]; then
echo "Texto encontrado en $i"
fi
done

que se utilizaría de la siguiente manera:


$ ./find_in_odt.sh "cadena de texto a buscar"

El script anterior cuenta con la limitación de que no está preparado para funcionar con carpetas cuyo nombre contiene espacios. Otra opción podría ser la búsqueda de diferencias entre dos ficheros:

#!/bin/sh
odt2txt $1 > tempfile1
odt2txt $2 > tempfile2
diff -u tempfile1 tempfile2
rm tempfile1 tempfile2

ejecutable como (recomiendo instalar colordiff para ser usado en lugar del diff tradicional):

$ ./odtdiff.sh fichero1a.odt fichero1b.odt

Más aún: podemos integrar odt2txt con sistemas de control de versiones como Git (usado por el kernel de Linux, Gnome, Android o Ruby on Rails entre otros) para conseguir integración con ficheros de OpenOffice (útil para ver los cambios entre las diferentes versiones en el repositorio). Para ello, basta con añadir al archivo de configuración .gitconfig (presente en el directorio de usuario en Linux y OSX)


textconv=odt2txt
y luego, dentro del repositorio del proyecto, crear o modificar el archivo .git/info/attributes para que contenga


*.ods diff=odf
*.odt diff=odf
*.odp diff=odf

Espero que alguno de estos consejillos os sirva de utilidad, ¡un saludo!

Metadatos

17 abr 2009

Siguiendo con el tutorial que queremos realizar acerca de la web semántica, nos parece que uno de los puntos principales va a ser la definición de los conceptos alrededor de los cuales gira la Web Semántica, conceptos que si bien no son nuevos (los hay incluso heredados de la Filosofía), han visto su significado adaptado en esta nueva tecnología. A lo largo de estas entradas voy a intentar simplificar todo lo que pueda y a hacer la asunción de que el lector desconoce por completo el tema, así que disculpadme si pensáis que estoy tratando algo básico. Para eso están los comentarios, para que opinéis :)

El concepto más importante, y a la vez probablemente el más conocido, es el de metadato (metadata en inglés). Los metadatos se definen como “datos acerca de otros datos”, lo cual por sí mismo puede resultar una definición pobre. Sin embargo, un ejemplo lo dejará mucho más claro: imaginemos una canción en el ordenador (una canción en formato ogg vorbis y descargada desde Jamendo, por supuesto :D ). Esta canción es analizada por nuestro reproductor de música preferido que (normalmente) es capaz de mostrar diversa información acerca de ella. Como mínimo, los nombres de la canción, cantante y álbum. Estos tres campos son información (datos) acerca de la canción (otros datos) .

Si os dais cuenta, el mundo está plagado de metadatos: la mayoría de las cámaras digitales “firma” las fotografías con, entre otras cosas, la fecha de toma de la instantánea; los ficheros de un sistema operativo derivado de UNIX (como Linux y OS X) tienen metadatos que definen qué usuarios tienen (o no) acceso a ellos; y en aplicaciones web como Flickr las fotografías tienen etiquetas asociadas para facilitar su clasificación.

¿Y cuál es la relación de los metadatos con la web semántica? Son el elemento básico para formarla, pues recordemos que la web semántica pretende hacer posible que los ordenadores entiendan los contenidos de la web. El método exacto para lograrlo lo veremos en posteriores entregas, pero de momento creedme cuando escribo que los metadatos van a ser vitales en el proceso :)

La web semántica

02 abr 2009

Ayer comenzamos con lo que pretendemos sea una colección de artículos acerca de la web semántica, que iremos desarrollando a lo largo de las siguientes semanas. En la entrega de hoy, daremos una pequeña introducción acerca del tema. Ya que nosotros también estamos aprendiendo en este momento, espero que nos perdonéis y corrijáis posibles errores :)

En la actualidad, la web es una colección de datos inmensa, que permite a una persona acceder a una gran cantidad de información y operar sobre ella. Sin embargo, lo que es una virtud se puede entender también como uno de sus grandes defectos, debido a que existe tanta información que cada día resulta más complicado procesarla y hacer consultas sobre ella. Además, la heterogeneidad en las fuentes de información dificulta en gran medida la interoperabilidad entre sistemas.

La web semántica es una evolución de la actual tecnología, pensada para proveer de contenido semántico a la web actual. Gracias a este contenido semántico se posibilita que no sólo una persona pueda entender la información que presenta una página web, sino que se habilita a las máquinas a tal efecto. De esta manera, un buscador puede realizar una consulta de una forma más inteligente, procesando los resultados y descartando o seleccionando los que mejor se adaptan a los parámetros de la búsqueda.

En el fondo, la web semántica trata de proveer un cierto grado de inteligencia a la web actual. Tim Berners-Lee, el inventor del World Wide Web y uno de los principales valedores de la web semántica, se expresaba así en 1999:

I have a dream for the Web [in which computers] become capable of analyzing all the data on the Web – the content, links, and transactions between people and computers. A ‘Semantic Web’, which should make this possible, has yet to emerge, but when it does, the day-to-day mechanisms of trade, bureaucracy and our daily lives will be handled by machines talking to machines. The ‘intelligent agents’ people have touted for ages will finally materialize.

Una traducción un poco libre :)

He tenido una visión para la Web [en la cual los ordenadores] serán capaces de analizar todos los datos de la Web – los contenidos, enlaces y operaciones entre las personas y las máquinas. Una ‘Web Semántica’, que debería hacer esto posible, todavía tiene que aparecer, pero cuando lo haga, las operaciones diarias de comercio, burocracia, y nuestras vidas serán manejadas por máquinas hablando con otras máquinas. Los ‘agentes inteligentes’ que la gente ha esperado por años finalmente se harán realidad.