我的脚本从FLAC文件中提取图像没有问题,但是当给出MP3文件时,它只会抓取第一张图像而不是其他图像。
我尝试的事情:
该脚本采用两个命令行参数。第一个是mount名称,它是图像将被写入的子目录。第二个是文件的路径。
示例:python extract_art.py" classic" " hello.mp3"
# -*- coding: UTF-8 -*-
# This script gets called from metadata.liq
# Run this script using Python 2
import sys
import random
import os
import codecs
from mutagenwrapper import read_tags
# Name of the stream (Exaples: anything-goes, anime)
mount_name = sys.argv[1]
# Name of the file to be opened
filename = sys.argv[2]
# Points to the path where images will be written to
full_path = "/mnt/album_art/" + mount_name + "/"
track = read_tags(filename)
try:
# Check if there is album art
album_art = track['pictures'][0]
except:
# If album art cannot be read, return a null string to flag deletion on album art that pervious song wrote.
album_art = ""
if album_art == "":
try:
# If no album art was found, attempt to delete album art that may have been previously written by another song
os.remove(full_path + 'albumart.jpg')
print("Deleted album art")
except:
# If there is no album art to delete
print("No album art to delete")
else:
#If album art was found in the current track, write the new album art and create the proper paths if necessary
if not os.path.exists(os.path.dirname(full_path)):
os.makedirs(os.path.dirname(full_path))
with open(full_path + 'albumart.jpg', 'wb') as f:
f.write(album_art)
print("Wrote new album art")
f.close()
# Same as writing album art, except with background image
background_image = ""
try:
background_image = track['pictures'][1]
except:
if background_image == "":
background_image = album_art
print("No background image found, using album art as background iamge.")
else:
background_image = ""
if background_image == "":
try:
os.remove(full_path + 'backgroundimage.jpg')
print("Deleted background image")
except:
print("No background image to delete")
else:
if not os.path.exists(os.path.dirname(full_path)):
os.makedirs(os.path.dirname(full_path))
with open(full_path + 'backgroundimage.jpg', 'wb') as f:
f.write(background_image)
print("Wrote new background image")
f.close()
答案 0 :(得分:1)
正如the documentation所说:
请注意,此模块仍处于早期开发阶段。许多功能都不受支持......
后来,它解释了(除其他事项)专辑封面和处理多值标签的局限性,因此在一种格式中出现多个专辑封面标签时出现问题并不令人惊讶。这只是版本0.0.5 ...
如果您想要更深入的解释,您可能需要深入研究the source或询问作者。 (可能是filing a bug。)但是我愿意打赌唯一的解决方案是“#34;自己解决问题"或者"等到其他人关心到足以实现它"。