Python:使用Hachoir,如何提取文件类对象的元数据?

我正在使用用户上传视频和音频文件的网站,我上传时,必须从文件中填充一些常见的元数据字段.我找到了Hachoir并且它看起来不错,但是有问题的是,要创建用于元数据读取的解析器,需要的是文件名,而不是文件类或流对象.

现在我正在使用Django进行Web开发,我想继续使用FileStorage API,因此可以很好地将文件上传到CDN.

如何使用Hachoir文件像对象?他们提供的sample code作品,但仅适用于“真实”文件.

最佳答案
快速和脏的片段:

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

只需要更好的错误处理:)

相关文章

我最近重新拾起了计算机视觉,借助Python的opencv还有face_r...
说到Pooling,相信学习过CNN的朋友们都不会感到陌生。Poolin...
记得大一学Python的时候,有一个题目是判断一个数是否是复数...
文章目录 3 直方图Histogramplot1. 基本直方图的绘制 Basic ...
文章目录 5 小提琴图Violinplot1. 基础小提琴图绘制 Basic v...
文章目录 4 核密度图Densityplot1. 基础核密度图绘制 Basic ...