【问题标题】:How to remove existing album art image from an Mp3 using eyed3 module如何使用 eyed3 模块从 Mp3 中删除现有的专辑封面图像
【发布时间】:2018-09-19 13:36:02
【问题描述】:

我一直在尝试使用 eyed3 模块来标记 mp3 文件,但不幸的是,我发现模块文档难以理解,想知道是否有人可以帮助我?.. 文档可以在 https://eyed3.readthedocs.io 找到

我试图用它来删除现有的专辑封面图片:

import eyed3
x = eyed3.load('file_path')
x.tag._images.remove()
x.tag.save()

但是当我运行这段代码时,它给了我以下错误:

TypeError: remove() missing 1 required positional argument: 'description'

我不确定在哪里可以找到上述description 作为参数传递。我还查看了用于 eyed3 标记的源 python 文件,但基于对代码的调查,我似乎无法找出该参数 description 的传递内容。

我试图传递一个空字符串作为参数,但尽管脚本运行良好且没有任何错误,但它并没有删除专辑封面图像。

请帮忙。

【问题讨论】:

    标签: python python-3.x eyed3


    【解决方案1】:

    经过一番挖掘,description 实际上只是图像的描述。当您调用x.tag.images 时,您会得到一个 ImageAccessor 对象,它基本上只是一个包含您的图像的可迭代对象。如果您将x.tag.images 转换为列表,您可以看到它包含 1 个 ImageFrame 对象(在我的测试用例中)。当您调用x.tag.images.remove() 时,eyed3 需要知道要删除哪个图像,并根据图像描述选择要删除的图像。您可以使用类似这样的方式获取每个图像的描述。

    [y.description for y in x.tag.images]
    

    一旦您知道要删除的图像的描述,您应该能够将其传递给删除函数,并且该特定图像将被删除。

    >>> x.tag.images
    <eyed3.id3.tag.ImagesAccessor object at 0x1053c8400>
    >>> list(x.tag.images)
    [<eyed3.id3.frames.ImageFrame object at 0x1050cc4a8>]
    >>> x.tag.images.remove()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/Users/jperoutek/test_env/lib/python3.6/site-packages/eyed3/utils/__init__.py", line 170, in wrapped_fn
        return fn(*args, **kwargs)
    TypeError: remove() missing 1 required positional argument: 'description'
    >>> x.tag.images.remove('')
    <eyed3.id3.frames.ImageFrame object at 0x1050cc4a8>
    >>> x.tag.images
    <eyed3.id3.tag.ImagesAccessor object at 0x1053c8400>
    >>> list(x.tag.images)
    []
    

    【讨论】:

    • 非常感谢,这真的很有帮助,哇,我不知道我可以遍历这样的对象并访问它们的属性,就像你在[y.description for y in x.tag.images] 中显示的那样。多亏了你,我今天学到了 2 个新东西,eyed3 删除并循环访问对象以访问它们的属性。
    • 我得到了和你一样的结果,但是我的文件在删除图像之前和之后仍然具有相同的文件大小。有什么想法吗?这可能是一个错误吗?我做错了吗?
    猜你喜欢
    • 2017-03-23
    • 2011-10-22
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多