Extrayendo metadatos: libextractor
Para que Vazaar sea realmente útil debe extraer un alto porcentaje de metadatos que casi haga innecesaria la interacción del usuario. Hay una entrada en el wiki dedicada al análisis de utilidades y/o bibliotecas útiles para el proyecto. Ahora estoy probando con libextractor.
Lo interesante de esta herramienta es la cantidad de metadatos que es capaz de extraer. Este es un listado de los tags soportados por libextractor en mi sistema:
extractor = Extractor()
extractor.keywordTypes()
(‘unknown’, ‘filename’, ‘mimetype’, ‘title’, ‘author’, ‘artist’, ‘description’, ‘comment’, ‘date’, ‘publisher’,‘language’,
‘album’, ‘genre’, ‘location’, ‘version’, ‘organization’, ‘copyright’, ‘subject’, ‘keywords’, ‘contributor’,
‘resource-type’, ‘format’, ‘resource-identifier’, ‘source’, ‘relation’, ‘coverage’, ‘software’, ‘disclaimer’, ‘warning’,
‘translated’, ‘creation date’, ‘modification date’, ‘creator’, ‘producer’, ‘page count’, ‘page orientation’,
‘paper size’, ‘used fonts’, ‘page order’, ‘created for’, ‘magnification’, ‘release’, ‘group’, ‘size’, ‘summary’,
‘packager’, ‘vendor’, ‘license’, ‘distribution’, ‘build-host’, ‘os’, ‘dependency’, ‘MD4′, ‘MD5′, ‘SHA-0′, ‘SHA-1′,
‘RipeMD160′, ‘resolution’, ‘category’, ‘book title’, ‘priority’, ‘conflicts’, ‘replaces’, ‘provides’, ‘conductor’, ‘interpreter’,
‘owner’, ‘lyrics’, ‘media type’, ‘contact’, ‘binary thumbnail data’, ‘publication date’, ‘camera make’, ‘camera model’,
‘exposure’, ‘aperture’, ‘exposure bias’, ‘flash’, ‘flash bias’, ‘focal length’, ‘focal length (35mm equivalent)’, ‘iso speed’,
‘exposure mode’, ‘metering mode’, ‘macro mode’, ‘image quality’, ‘white balance’, ‘orientation’)
A pesar de la gran cantidad de metadatos que puede extraer no facilita manera alguna de saber con que tipo de metadato estás jugando. Según los creadores de esta librería, la mayor parte de los metadatos extraídos están basados en el vocabulario de Dublin Core. Sin embargo, otros metadatos han sido añadidos ante la necesidad de ciertos tipos de formato. Es decir, extrae un conjunto de parejas tipo clave/valor sin orden ni concierto dejando a la imaginación de los programadores la interpretación de los mismos.
En vazaar, MDX es el módulo encargado de la extracción de metadatos. Dado que libextractor está en la mayor parte de los sistemas y existen bindings para python me ha parecido razonable incluirlo. El mayor problema que estoy encontrando para implementarlo es la cantidad de tiempo que gasto buscando que significa cada cosa. Para ello estoy mapeando cada keyword de libextractor con su correspondiente elemento en Dublin Core. También tengo en cuenta los elementos cualificados:
keyword[‘album’] = (‘type’, ‘collection’)
keyword[‘aperture’] = (”, ”)
keyword[‘artist’] = (‘creator’, ”)
keyword[‘author’] = (‘creator’, ”)
keyword[‘binary thumbnail data’] = (”, ”)
keyword[‘book title’] = (‘title’, ”)
keyword[‘build-host’] = (”, ”)
…
Ejemplo del uso de MDX:
kaskaras@laptop:~/share/wc/vazaar/trunk/devel/swx$ python mdx.py screenshot.png Adding item: screenshot.png http://purl.org/dc/elements/1.1/description -> Created with GIMP http://purl.org/dc/terms/modified -> 2007-11-01 22:04:54 http://purl.org/dc/elements/1.1/format -> image/png
Updated 19/XII/2009:
extract-metadata blueprint @ launchpad.net

