Mutagen:如何提取专辑封面属性?

2023-12-06

我正在尝试使用 python 3.7.1 和 mutagen 1.42 从 mp3 文件中获取专辑封面图片的属性(到目前为止只是宽度和高度,但可能会更多),但到目前为止似乎没有任何效果。我还能够正确提取一些其他信息

医生正在讲述APIC,但尝试显示所有标签不会显示与任何图片相关的任何内容(以及我的 mp3 测试文件does有专辑图片):

import os,sys
from mutagen.mp3 import MP3
from mutagen.easyid3 import EasyID3

song_path = os.path.join(sys.argv[1]) # With sys.argv[1] the path to a mp3 file containing a picture
track = MP3(song_path, ID3=EasyID3)
pprint(track.get('title')[0] + ' ' + str(track.info.length) + 's, ' + str(int(track.info.bitrate / 1000)) + 'kbps')
print(track.keys())

结果,使用我的文件:

> Exponential Tears 208.0s, 205kbps
> ['album', 'copyright', 'encodedby', 'length', 'title', 'artist', 'albumartist', 'tracknumber', 'genre', 'date', 'originaldate']

(这个 mp3 文件确实有一个嵌入的图片,我可以用我使用的任何音乐软件看到它。)

我发现了很多不同的方法来用诱变剂处理这个问题,但有些似乎已经过时,有些则不起作用,我不明白我在这里缺少什么。

如有任何帮助,我们将不胜感激


好的,我最终弄清楚了:EasyID3 模块仅处理最常见的标签,并且不包含图片数据(APIC)。为此,您需要使用ID3模块,理解起来要复杂得多。然后,寻找APIC:key,它将图片存储为字节字符串。

下面是一个使用 PIL 处理图片的小例子:

import os,sys
from io import BytesIO
from mutagen.mp3 import MP3
from mutagen.id3 import ID3
from PIL import Image

song_path = os.path.join(sys.argv[1])
track = MP3(song_path)
tags = ID3(song_path)
print("ID3 tags included in this song ------------------")
print(tags.pprint())
print("-------------------------------------------------")
pict = tags.get("APIC:").data
im = Image.open(BytesIO(pict))
print('Picture size : ' + str(im.size))

希望它有帮助,祝你好运! ;)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mutagen:如何提取专辑封面属性? 的相关文章

  • Python3+Kivy+Plyer 推送通知图标问题

    我在使用 Android 的简单通知测试应用程序时遇到了一个奇怪的错误 错误 python AttributeError type object notification org notificator R drawable has no
  • OpenCV 错误:使用 COLOR_BGR2GRAY 函数时断言失败

    我在使用 opencv 时遇到了一个奇怪的问题 我在 jupyter 笔记本中工作时没有任何问题 但在尝试运行此 Sublime 时却出现问题 错误是 OpenCV错误 cvtColor中断言失败 深度 CV 8U 深度 CV 16U 深度
  • 如何在groupby之后将pandas数据框拆分为许多列

    我希望能够在 pandas 中使用 groupby 按列对数据进行分组 然后将其拆分 以便每个组都是数据框中自己的列 e g time data 0 1 2 0 1 2 3 0 2 3 4 0 3 1 2 1 4 2 3 1 5 3 4 1
  • DataFrame 中的字符串,但 dtype 是对象

    为什么 Pandas 告诉我我有对象 尽管所选列中的每个项目都是一个字符串 即使在显式转换之后也是如此 这是我的数据框
  • 为 PyCharm 中的所有配置设置相同的环境变量

    我有一个与 Celery 和很多不同的工作人员一起的项目 如何避免每次将 PyCharm 中的环境变量复制粘贴到每个运行 调试配置 有什么方法可以在项目设置中设置它们吗 找到解决方案here https stackoverflow com
  • multiprocessing.freeze_support()

    为什么多处理模块需要调用特定的function http docs python org dev library multiprocessing html multiprocessing freeze support在被 冻结 以生成 Wi
  • 基于 True/False 值的 Python 优雅赋值

    我想根据三个布尔值中的值设置一个变量 最直接的方法是 if 语句后跟一系列 elif if a and b and c name first elif a and b and not c name second elif a and not
  • 如何检查包含 NaN 的列表 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 在我的 for 循环中 我的代码生成一个如下所示的列表 list 0 0 0 0 sum 0 0 0 0 该循环生成所有其他数字向量 但它也
  • Pandas,按最大返回值进行分组 AssertionError:

    熊猫有问题 我想听听你的意见 我有这个数据框 我需要在其中获取最大值 代码就在下面 df stack pd DataFrame 1 0 2016 0 NonResidential Hotel 98101 0 DOWNTOWN 47 6122
  • 如何在python中递归复制目录并覆盖全部?

    我正在尝试复制 home myUser dir1 及其所有内容 及其内容等 home myuser dir2 在Python中 此外 我希望副本覆盖中的所有内容dir2 It looks like distutils dir util co
  • 如何获取 Matplotlib 生成的散点图的像素坐标?

    我使用 Matplotlib 生成散点图的 PNG 文件 现在 对于每个散点图 除了 PNG 文件之外 我还会also就像生成散点图中各个点的像素坐标列表一样 我用来生成散点图 PNG 文件的代码基本上是这样的 from matplotli
  • Docker 日志中的 Python 异常标记为流:stdout

    我想解析和处理来自 docker 容器的所有错误 但当我期望 stderr 时 Python 异常标记为 stdout 举个简单的例子app py raise Exception 然后我在 docker 容器中运行这个文件 但在 var l
  • python 中的基本矩阵转置

    我尝试了 python 中矩阵转置的最基本方法 但是 我没有得到所需的结果 接下来是代码 A 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 print A def TS A B A for i in range len A
  • 使用 pandas 绘制带有误差线的条形图

    我正在尝试从 DataFrame 生成条形图 如下所示 Pre Post Measure1 0 4 1 9 这些值是我从其他地方计算出来的中值 我还有它们的方差和标准差 以及标准误差 我想将结果绘制为具有适当误差线的条形图 但指定多个误差值
  • Scikit Learn - K-Means - 肘部 - 标准

    今天我想学习一些关于 K means 的知识 我已经了解该算法并且知道它是如何工作的 现在我正在寻找正确的 k 我发现肘部准则作为检测正确的 k 的方法 但我不明白如何将它与 scikit learn 一起使用 在 scikit learn
  • 字母尺度和随机文本上的马尔可夫链

    我想使用 txt 文件中的一本书中的字母频率生成随机文本 以便每个新字符 string lowercase 取决于前一个 如何使用马尔可夫链来做到这一点 或者使用每个字母都有条件频率的 27 个数组更简单 我想使用来自的字母频率生成随机文本
  • 使用Python重命名目录中的多个文件

    我正在尝试使用以下 Python 脚本重命名目录中的多个文件 import os path Users myName Desktop directory files os listdir path i 1 for file in files
  • 获取运行云功能的运行时服务帐户

    有没有办法以编程方式从云功能获取运行时服务帐户的电子邮件 我知道我可以 猜测 默认的 App Engine 帐户 因为它始终是 appspot gserviceaccount com 但这不是我想要的 我本来期待有一些环境变量 https
  • Django - 缺少 1 个必需的位置参数:'request'

    我收到错误 get indiceComercioVarejista 缺少 1 个必需的位置参数 要求 当尝试访问 get indiceComercioVarejista 方法时 我不知道这是怎么回事 views from django ht
  • 从 Flask 中的 S3 返回 PDF

    我正在尝试在 Flask 应用程序的浏览器中返回 PDF 我使用 AWS S3 来存储文件 并使用 boto3 作为与 S3 交互的 SDK 到目前为止我的代码是 s3 boto3 resource s3 aws access key id

随机推荐

  • 有没有办法通过node.js直接读取Google Cloud Datastore存储桶中的JSON文件内容,而无需事先下载?

    我是一名 Python 开发人员 但我现在正在从事的项目的情况迫使我在 Node js 中找到解决方案 我已经检查了文档在类File中 我有这个方法 createReadStream 但谁强迫我在读取之前先下载到本地 然而 我搜索的解决方案
  • 如何在不杀死父进程的情况下杀死所有子进程

    我有一个脚本 它在开始时运行后台进程 然后在最后需要停止该后台进程及其子进程 然后执行一些其他任务等 然后在必要时返回错误代码 我该怎么做呢 我看过几个如何杀死整个树 包括父进程 的示例 例如kill 0 但我希望主脚本继续运行并返回正确的
  • 无法从 Google Compute Engine 元数据服务检索令牌。状态:404

    我正在尝试设置 Cloud SQL 代理作为我的 GKE 集群中的 sidecar 运行 配置是通过 Terraform 完成的 我已经设置了工作负载身份 所需的服务帐户等 从 GKE 集群内启动 cloud sql proxy 时 kub
  • 调整公式数组中的公式

    我有以下公式 我想将其输入到 Formulaarray 中 但由于大小限制而无法这样做 VLOOKUP MIN IF ABS S AT Reports Abhor Ganganagar 1 1550 A B xls 1 1550 A B C
  • 在 Python 中一次选择多个元素迭代列表

    我有一个列表 我想从中迭代一定长度的切片 尽可能最大程度地相互重叠 例如 gt gt gt seq ABCDEF gt gt gt join x for x in zip seq seq 1 seq 2 ABC BCD CDE DEF 换句
  • AWS服务通过校验和验证S3中文件的数据完整性?

    确保 S3 中的文件如其所声称的那样的一种方法是下载该文件 获取其校验和 并将结果与 您期望的校验和进行匹配 AWS 是否提供任何允许这种情况发生的服务without用户需要先下载文件吗 即理想情况下 一个简单的请求 url 提供 S3 文
  • 在 Scrapy 中使用经过身份验证的会话进行爬网

    In my 上一个问题 我对我的问题不是很具体 使用 Scrapy 进行经过身份验证的会话进行抓取 希望能够从更一般的答案中推断出解决方案 我可能应该用这个词crawling 所以 到目前为止 这是我的代码 class MySpider C
  • Swagger 2.x 过滤器未执行

    我正在 Jersey 2 34 Web 服务中使用 Swagger 2 x OpenAPI 3 0 io swagger v3 oas 记录 API 我扩展了 io swagger v3 core filter SpecFilter 来实现
  • 匿名类型列表的声明[重复]

    这个问题在这里已经有答案了 有没有办法声明匿名类型的列表对象 我是说 List
  • VSCODE Python 编译器不打印整个列表

    我使用 Visual Studio Code 进行任何编码 最近我注意到一件奇怪的事情 每当我尝试打印一个很长的列表时 该列表不会完全打印 它会被切断 primes for i in range 1000000 primes append
  • PHP:从json数组获取数据而不循环

    我想从数组中获取没有循环的数据 例如 我想获取 link click 的 值 我怎样才能做到这一点 我尝试过 但这不起作用 stats json decode data false link click stats gt data gt a
  • MySql Doctrine:查找给定变量是否为 IN 数组属性

    我有课堂任务categories整数数组属性 class Task var array ORM Column name categories type array nullable true private categories 现在在控制
  • 如何在 Apache 2.2.9 中使用 mod_ssl 将 openssl 0.9.8 升级到 1.0.2

    我被要求重新编译mo sslSuseSE11SP3 中使用 openssl 1 0 2 不过 我是 Suse 的新手 但对 linux 有一点了解 操作系统 苏塞SE11SP3 Openssl 0 9 8j 网络服务器 Apache htt
  • 用很少的条件删除所有重复的主题

    我正在尝试创建 sql 它将删除所有重复的标题 但必须删除具有以下条件的重复项 必须仅删除具有相同的重复项对象 ID 必须只保留最新的记录 最大的topic id topic id是每个主题AI的唯一id 到目前为止我已经做到了 使用 se
  • 将列转换为 JSON/dict 并展平 pyspark 列中的 JSON 值

    我是 Pyspark 的新手 我正在研究如何将列类型转换为 dict 类型 然后使用该列将该列展平为多个列explode 我的数据框如下所示 col1 col2 test 1 test1 Id 17 cName c1 Id 01 cName
  • 了解 Keras LSTM

    我试图调和我对 LSTM 的理解 并在此处指出克里斯托弗 奥拉的这篇文章在 Keras 中实现 我正在关注杰森 布朗利撰写的博客获取 Keras 教程 我主要困惑的是 将数据系列重塑为 samples time steps features
  • gfortran 编译器标志严格遵守 Fortran 77

    有什么办法让 gfortran 拒绝 Fortran 95 对 Fortran 77 的添加吗 我尝试过使用 std legacy标志 但这似乎只是删除了 f77 程序中的弃用警告 f95 的增强功能仍然可以正常工作 我也会尝试使用几个 g
  • Matlab中通过数据点拟合指数曲线

    有了可用的指数衰减数据 我想拟合一条穿过它的曲线 我怎样才能在Matlab中做到这一点 尝试这个 ft fittype exp1 cf fit time data ft 这是当time and data是你的数据向量 时间是自变量 数据是因
  • 如何获取 Azure Cosmos DB 上的批量 INSERT 的延续令牌?

    我想上传一个 CSV 文件 该文件表示要以快速且原子的方式添加到我的 Cosmos DB 集合中的 10k 文档 我有一个类似于以下伪代码的存储过程 function createDocsFromCSV csv text function
  • Mutagen:如何提取专辑封面属性?

    我正在尝试使用 python 3 7 1 和 mutagen 1 42 从 mp3 文件中获取专辑封面图片的属性 到目前为止只是宽度和高度 但可能会更多 但到目前为止似乎没有任何效果 我还能够正确提取一些其他信息 医生正在讲述APIC 但尝