Quick and dirty fragment:
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
Just need to improve error handling :)
source
share