加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-16 21:59:24 所属栏目:Python 来源:网络整理
导读:我正在使用用户上传视频和音频文件的网站,我上传时,必须从文件中填充一些常见的元数据字段.我找到了Hachoir并且它看起来不错,但是有问题的是,要创建用于元数据读取的解析器,需要的是文件名,而不是文件类或流对象. 现在我正在使用Django进行Web开发,我想继续

我正在使用用户上传视频和音频文件的网站,我上传时,必须从文件中填充一些常见的元数据字段.我找到了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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读