通过上一篇文章,我们已经可以从音频文件中获取艺人信息。本文我们来真正完成这个小工具。
基本逻辑
小工具的主程序代码如下:
代码第104首先获取当前目录,然后第106行获取当前目录下的所有文件并连接生成每个文件的全路径。
第108行使用filter函数去掉目录,只留下真正的文件。
第109行开始的循环用于逐个处理检索得到的文件。第112行用于从文件中获取艺人的姓名,如果成功则将这个文件移动到每个艺人单独的目录中。如果艺人对应的目录还不存在,就先建一个。
获取艺人姓名
函数很简单,首先尝试从音乐文件的标签信息中获取艺人信息,如果不行则尝试从文件名中获取艺人信息。如果艺人信息中包含“&”,“,”或者“、”,表明该曲目是由多人合作的,这时只截取第一个艺人信息。
从音乐文件中提取艺人信息
一般来讲,正规的音乐文件中还会包含专辑,标题,艺人等信息,本文使用mutagen库提取艺人信息。
mp3、flac、ape三种格式中有关艺人的标签使用相同的关键字,因此代码中使用一个共同函数获取艺人信息;wma的艺人信息使用另外的关键字,需要单独处理。
从mp、flac、ape文件中获取艺人信息
和wma的道路完全一样,只是关键字不同
从文件名提取艺人信息
文件名中包含艺人信息有两种情况:使用“-”区分艺人和乐曲名,这时艺人姓名在前;使用“_”区分艺人和乐曲名,这时艺人姓名在后。
参考代码
完整代码可以从以下链接下载:
https://github.com/xueweiguo/Python/tree/master/MusicOrganizer
作者著作介绍
《实战Python设计模式》是作者去年3月份出版的技术书籍,该书利用Python 的标准GUI 工具包tkinter,通过可执行的示例对23 个设计模式逐个进行说明。这样一方面可以使读者了解真实的软件开发工作中每个设计模式的运用场景和想要解决的问题;另一方面通过对这些问题的解决过程进行说明,让读者明白在编写代码时如何判断使用设计模式的利弊,并合理运用设计模式。
对设计模式感兴趣而且希望随学随用的读者通过本书可以快速跨越从理解到运用的门槛;希望学习Python GUI 编程的读者可以将本书中的示例作为设计和开发的参考;使用Python 语言进行图像分析、数据处理工作的读者可以直接以本书中的示例为基础,迅速构建自己的系统架构。