如何使用 eyed3 模块从 Mp3 中删除现有的专辑封面图像
How to remove existing album art image from an Mp3 using eyed3 module
我一直在尝试使用 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
.
我试图传递一个 空字符串 作为参数,但是尽管脚本 运行 没有任何错误,但它没有删除专辑封面图像。
请帮忙。
经过一番挖掘,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)
[]
我一直在尝试使用 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
.
我试图传递一个 空字符串 作为参数,但是尽管脚本 运行 没有任何错误,但它没有删除专辑封面图像。
请帮忙。
经过一番挖掘,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)
[]