Python eyed3检查嵌入的图像

时间:2014-03-12 09:38:56

标签: python eyed3

我需要一个脚本来检查整个目录中没有嵌入图像的mp3文件。 这个函数应该返回这样一个列表。

def checkAlbumCover( file_list ):
    ret = list() #list with mp3 files without album cover
    for f in file_list:
        mp3 = eyed3.load( f )
        if len( mp3.tag.images ) == 0:
            ret.append( f )
    return ret

使用另一个函数,我遍历每个目录和子目录并获取所有文件路径。然后我检查它们是否是mp3文件,如果不是,我删除它们。所以最后我有一个包含173个mp3文件的列表(在我的例子中)。文件路径是正确的,但是,上面的函数给我错误。

输出

173 mp3 files found.
Traceback (most recent call last):
  File "get_album.py", line 32, in <module>
    main()
  File "get_album.py", line 18, in main
    list_without_image = checkAlbumCover( all_files )
  File "get_album.py", line 10, in checkAlbumArt
    if len( mp3.tag.images ) == 0: # 0 images embedded
AttributeError: 'NoneType' object has no attribute 'images'

我做错了什么?

修改 我在检查图像之前打印出f,似乎我的功能在崩溃之前已经检查了20个文件。

我'修复'它:

if mp3.tag is None: # 0 images embedded
    ret.append( f )

但是,我真的不明白为什么tagNone ...

1 个答案:

答案 0 :(得分:0)

我相信你遇到的是你正在使用的一些mp3没有ID3标签。在这种情况下,eyeD3会返回None作为其标记值,这会导致程序崩溃。