激光電視|我如何使用 Groovy 分析我的音樂目錄( 二 )


第 10 行對每個 artistDir 調用 eachDir() , 第 10 行的 { 和第 17 行的  之間的代碼形成另一個處理 albumDir 的閉包 。
第 14 行 , 在每個 albumDir 上調用 eachFile() , 第 14 行的 { 和第 16 行的  之間的代碼形成了處理專輯內容的第三級閉包 。
在本文的范圍內 , 我對每個文件唯一需要做的就是開始構建信息表 , 我將其創建為一個以豎線分隔的 CSV 文件 , 它可以導入 LibreOffice 或 OfficeOnly 或任何其他電子表格 。 現在 , 代碼輸出前三列:藝術家目錄名、專輯目錄名和內容文件名(同樣 , 第 2 行輸出 CSV 標題行) 。
在我的 Linux 筆記本電腦上運行它會產生以下輸出:
$ groovy TagAnalyzer.groovy | head
artistDir|albumDir|contentFile
Habib Koite & Bamada|Afriki|02 - Ntesse.flac
Habib Koite & Bamada|Afriki|08 - NTeri.flac
Habib Koite & Bamada|Afriki|01 - Namania.flac
Habib Koite & Bamada|Afriki|07 - Barra.flac
Habib Koite & Bamada|Afriki|playlist.m3u
Habib Koite & Bamada|Afriki|04 - Fimani.flac
Habib Koite & Bamada|Afriki|10 - Massake.flac
Habib Koite & Bamada|Afriki|11 - Titati.flac
Habib Koite & Bamada|Afriki|03 – Africa.flac
[...

Richard Crandell|Spring Steel|04-Japanese Lullaby [Richard Crandell
.flac
Richard Crandell|Spring Steel|Spring Steel.pdf
Richard Crandell|Spring Steel|03-Zen Dagger [Richard Crandell
.flac
Richard Crandell|Spring Steel|cover.jpg
$

在性能方面:
$ time groovy TagAnalyzer.groovy | wc -l9870real0m1.482suser0m4.392ssys0m0.230s$

又好又快 。 它在一秒半內處理近 10000 個文件!對我來說足夠快 。 可觀的性能、緊湊且可讀的代碼 , 還有什么不喜歡的?

相關經驗推薦