果粉有福了!5分钟学会用Python统计自己最爱听的音乐(2)

2023-04-29 来源:飞速影视
属性列表(P-list)文件将对象表示为字典,<dict> 和 <key> 标签与这种方式有关。字典是把键和值关联起来的数据结构,让查找值变得容易。属性列表文件使用字典的字典,其中和键关联的值往往自身又是另一个词典(甚至一个字典列表)。
<xml>标签确定文件为XML文件。在这个开始标签之后,文档类型定义(DTD)定义了XML文档的结构①。如你所见,苹果在该标签中的统一资源定位符(URL)中定义了这种结构。
在②行,文件声明了顶层<plist>标签,其唯一子元素是字典<dict> ③。该字典包含了各种键,在④行,包括Major Version、Minor Version,等等,但我们的兴趣在⑤行的Tracks键。注意,该键对应的值也是一个字典,它将整数的音轨ID映射到另一个字典,其中包含Name、Artist等元素。音乐收藏中的每个音轨都有唯一的音轨ID键。
播放列表顺序在⑥行由Playlists定义,它是顶层字典的一个子节点。
1.2 所需模块
在这个项目中,我们用内置模块plistlib来读取播放列表文件。我们还用matplotlib库来绘图,用numpy的数组来存储数据。
代码
该项目的目标是找到你的音乐收藏中的重复乐曲,确定播放列表之间共同的音轨,绘制音轨时长的分布图,以及歌曲评分和时长之间的关系图。
随着音乐收藏不断增加,你总会遇到重复的乐曲。为了确定重复的乐曲,查找与Tracks键关联的字典中的名称(前面讨论过),找到重复的乐曲,并用音轨长度作为附加准则来检测重复的乐曲,因为名称相同、但长度不同的音轨,可能是不一样的。
要找到两个或多个播放列表之间共同的音轨,你需要将音乐收藏导出为播放列表文件,收集每个播放列表的音轨名称,作为集合进行比较,通过发现集合的交集来找到共同的音轨。
在收集音乐收藏数据的同时,我们将使用强大的matplotlib绘图软件包来创建一些图,该软件包由已故的John Hunter开发。我们可以绘制直方图来显示音轨时长的分布,绘制散点图来比较乐曲评分与长度。
要查看完整的项目代码,请直接跳到1.4节。
查找重复
首先可以用findDuplicates()方法来查找重复的曲目,如下所示:
相关影视
合作伙伴
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)

www.fs94.org-飞速影视 粤ICP备74369512号