2012-07-03 7 views
5

Estoy trabajando en un sitio que los usuarios cargan videos y archivos de audio, cuando se cargan, algunos campos de metadatos comunes deben completarse desde el archivo. He encontrado Hachoir y me parece bien, pero con un problema, para crear un analizador para la lectura de metadatos, lo que se necesita es un nombre de archivo, en lugar de un objeto similar a un archivo o secuencia.Python: Usando Hachoir, ¿cómo se extraen metadatos para objetos similares a archivos?

En este momento estoy usando Django para el desarrollo web, y me gustaría seguir usando la API FileStorage, por lo que los archivos se pueden cargar muy bien a un CDN.

¿Cómo usar Hachoir con archivos como objetos? El sample code proporcionan trabajos, pero solo para archivos "reales".

Respuesta

4

rápida y sucia fragmento:

from hachoir_core.error import HachoirError 
from hachoir_core.stream import InputIOStream 
from hachoir_parser import guessParser 
from hachoir_metadata import extractMetadata 


def metadata_for_filelike(filelike): 
    try: 
     filelike.seek(0) 
    except (AttributeError, IOError): 
     return None 

    stream = InputIOStream(filelike, None, tags=[]) 
    parser = guessParser(stream) 

    if not parser: 
     return None 

    try: 
     metadata = extractMetadata(parser) 
    except HachoirError: 
     return None 

    return metadata 

Sólo necesitan un mejor manejo de errores :)

Cuestiones relacionadas