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

2024-06-06 21:44:37 发布

您现在位置:Python中文网/ 问答频道 /正文

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

现在我正在使用Django进行web开发,我想继续使用filestorageapi,这样文件就可以很好地上传到CDN。在

如何使用Hachoir文件类对象?它们提供的sample code工作正常,但仅适用于“真实”文件。在


Tags: 文件数据对象django用户web解析器视频
1条回答
网友
1楼 · 发布于 2024-06-06 21:44:37

快速和肮脏的片段:

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

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

相关问题 更多 >