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

Arm*_*ués 5 python django metadata stream hachoir-parser

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

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

如何使用Hachoir文件像对象?它们提供的示例代码有效,但仅适用于"真实"文件.

Arm*_*ués 8

使用 Hachoir v3.2.1:

import hachoir.metadata
import hachoir.parser
import hachoir.stream

parser = hachoir.parser.guessParser(hachoir.stream.InputIOStream(file_handle, None, tags=[]))
if parser:
    hachoir_metadata = hachoir.metadata.extractMetadata(parser)
    if hachoir_metadata:
        metadata: Dict[str, str] = hachoir_metadata.exportDictionary()['Metadata']
        print(metadata)
Run Code Online (Sandbox Code Playgroud)