【惠普|我如何使用 Groovy 分析我的音乐目录】
最近 , 我一直在研究 Groovy 是如何简化略微繁琐的 Java 的 。 在这篇文章中 , 我开始了一个简短的系列 , 通过创建一个分析我的音乐目录的工具来演示 Groovy 脚本 。
在本文中 , 我将演示 groovy.File 类如何扩展和精简 java.File 并简化其使用 。 这为查看音乐文件夹的内容提供了一个框架 , 以确保预期的内容(例如 , cover.jpg 文件)就位 。 我使用 JAudiotagger 库 来分析音乐文件的标签 。
安装 Java 和 GroovyGroovy 基于 Java , 需要安装 Java 。Java 和 Groovy 的最新和稳定的版本可能都在你的 Linux 发行版的仓库中 。Groovy 也可以直接从 Apache Foundation 网站 安装 。 对于 Linux 用户来说 , 一个不错的选择是 SDKMan , 它可用于获取 Java、Groovy 和许多其他相关工具的多个版本 。 对于本文 , 我使用以下 SDK 版本:
- Java:版本 11.0.12-open 的 OpenJDK 11
- Groovy:版本 3.0.8
我绝大部分的音乐文件都是 FLAC 格式的 , 有一些是 MP3 格式 , 可能还有一小部分是 OGG 格式 。 我选择 JAudiotagger 库的一个原因是它可以透明地处理不同的标签格式 。 当然 , JAudiotagger 是开源的!
那么查看音频标签有什么意义呢?以我的经验 , 音频标签的管理极差 。 (提到音频标签 , )我的脑海中浮现出“粗心”这个词 。 这是标签本身真正存在的问题 , 也可能是出于我自己的学究倾向 。 无论如何 , 这是一个可以通过使用 Groovy 和 JAudiotagger 解决的重要问题 。 不过 , 它不仅适用于音乐收藏 。 许多其他现实世界的问题也适用 , 如需要下沉到文件系统中的目录树来处理在那里找到的内容 。
使用 Groovy 脚本这是此任务所需的基本代码 。 我在脚本中加入了注释 , 这些注释反映了我通常留给自己的(相对简写的)“注释提醒”:
// 定义音乐库目录def musicLibraryDirName = '/var/lib/mpd/music'// 输出 CSV 文件标题行println \"artistDir|albumDir|contentFile\"// 迭代音乐库目录中的每个目录// 这一层应该是艺术家目录new File(musicLibraryDirName).eachDir { artistDir -> // 迭代艺术家目录中的每个目录
// 这一层应该是专辑目录
artistDir.eachDir { albumDir -> // 迭代专辑目录中的每个目录
// 这里应该是内容
// 或相关内容(如 `cover.jpg` , PDF 格式的内页说明)
albumDir.eachFile { contentFile -> println \"$artistDir.name|$albumDir.name|$contentFile.name\"
如上所述 , 我使用 groovy.File 在目录树中移动 。 具体来说:
第 7 行创建一个新的 groovy.File 对象并在其上调用 groovy.File.eachDir() , 第 7 行的 { 和第 18 行的结尾的 之间的代码是传给 eachDir() 的 groovy.Colsue 参数 。
这意味着 eachDir() 为目录中找到的每个子目录执行该代码 。 这类似于 Java lambda(也称为“匿名函数”) 。Groovy 闭包不会像 lambda 那样限制对调用环境的访问(在最新版本的 Groovy 中 , 如果你愿意 , 也可以使用 Java lambda) 。 如上所述 , 音乐库目录中的子目录应该是艺术家目录(例如 , “Iron Butterfly” 或 “Giacomo Puccini”) , 因此 artistDir 是 eachDir() 传递给闭包的参数 。
- 软件|好用的图片编辑工具,我只推荐这几个
- 本文转自:新华社(科技)我国成功发射遥感三十五号05组卫星9月6日12时19分|(科技)我国成功发射遥感三十五号05组卫星
- Windows|在广州如何搭建垂直电商平台
- 本文转自:大众日报“我们加班加点花了两个多月时间|远程视频委托代办、移动终端上门受理……新泰不动产登记实现“掌上办”
- |只需半数价格便能比肩旗舰!真我旗舰价格跌至新低,闭眼买都行
- 智能手机|从智能手机到智能手表,如何成就个性化医疗?
- 电子商务|在广州如何搭建垂直电商平台
- 亚马逊|亚马逊、Lazada、Shopee、速卖通、阿里国际、美客多、eBay、沃尔玛测评自养号,产品权重该如何提高?
- 本文转自:新华社新华社照片|(科技)(1)我国成功发射微厘空间一号S3/S4试验卫星
- 本文转自:中工网国家职业资格是怎么设置的呀?准入类职业资格和水平评价类职业资格有什么区别...|国家职业资格是如何设置的?一图看懂