快速与肮脏代码:板条箱清洁器

更新:我刚刚从我的朋友(又名“ Bash Master”)那里得知,所有这些都可以通过键入以下命令来完成:’ find。 类型f -exec mv {} ./ \; 在终端中。 用语言学习文件系统遍历是一个很好的练习!

从13-17岁开始,我是一个渴望面对粉刺的孩子,曾经参加DJ小型聚会,生日和城市活动,希望成为下一个Laidback Luke或Flipout。 从某种意义上说,我感到非常幸运,因为我通过一连串的好运,与一位经验丰富的DJ配对,他通过所有基础知识指导了我。 从节拍匹配,板条箱挖掘一直到设置功率放大器; 在一个名为Lady Eve的DJ的指导下,我学到了很多东西。 而且我很幸运地从黑胶唱片和转盘的基础知识开始( 这是 Serato 之前的 )。

我称自己为DJ TBLAZE( “哦,上帝,为什么吗?”) ,在为纽约市以及我和我最好的朋友开办的活动制作公司工作了几年之后我给自己起了名字。 我之所以决定退出,是因为“是时候认真对待学校了”。 我愚蠢到可以卖掉我花了很多时间练习的所有设备为止。

快进大约5年了,我在这里。 刚从“大男孩的工作”毕业,并花了很多时间来从事我热爱的兴趣爱好和活动。

这使我决定:

我要回DJ了。

因此,就像90年代的电影蒙太奇一样,我开始做自己需要做的事情,回到了这段旅程中。 带着一个胖孩子能够回到蛋糕俱乐部的兴奋-当他们开放租用Pioneer DDJ SX2时,我冲向Long-Mcquade。 我拿起所有必要的电缆,甚至在我的卧室里搭建了一个临时的“展位”。

单击电源按钮,并在启动时看到LED的所有颜色都洗完了,我很想打“播放”按钮,然后立即开始混音,直到我实际上忘了连接充满音乐的外部硬盘驱动器。 在真正记住这一点之后,我启动了Serato,并遇到了以下恐怖:

400 GB代表5年的音乐价值和可怕的板条箱维护。

为什么这是个问题?

因为对于DJ来说,知道他所有音乐的位置至关重要。 在“过去”中,这意味着将您的记录存储在“ Techno”或“ Hip-Hop”之类的特定板条箱中。 在数字时代,这意味着将其放在特定的数字板条箱中,例如“播放列表”。 我想这对我来说绝对不是问题,因为我将所有音乐数字化地存储在旧笔记本电脑上。但是后来有3台笔记本电脑和4个外部硬盘驱动器,我意识到:

问题:我所有的音乐都采用不同的格式,在多个级别的文件夹中,并且可能充满了重复的音乐。

我记得当我即将离开DJ’ing时,这是我遇到很多麻烦的问题。 我非常想组织所有事情,但这将是一项至少需要40个小时才能手动处理的任务。

但是后来我意识到,我现在是一名软件开发人员。 我可以利用计算能力来解决这个问题。 所以我做到了。

所需功能:从文件夹中获取所有音乐文件,并将它们放在一个主目录中。

我决定,作为对我自己的概念验证“测试”,我将构建一个简单的脚本,该脚本将遍历音乐库中的所有文件夹。 它将检查它是文件夹还是实际文件。 如果是文件,它将把它移回父目录。 如果是文件夹,它将以递归方式遍历该文件夹的文件,并将所有文件移至父目录。

由于这只是最低限度的可行产品(MVP),因此我可以将所有文件放在一个位置后手动将所有文件整理到板条箱中。

该脚本花费了约48行代码,并处理了文件夹中的约5600个文件,耗时约8秒钟。

结果:

在我的剧本之前

父目录中有98个文件夹+ 556个音乐文件。

在我的脚本之后:

将4315个音乐文件聚合到父目录中。

对未来的计划:

  1. 允许用户指定音乐目录:当前,该库的目录是硬编码的。 我可以在将来使它成为命令行参数或提示值。
  2. 删除不支持DVS的文件:我仍然必须手动删除所有不支持的.mp3和.wav文件。 将来,我将确保添加一项功能,该功能会自动删除所有不受se​​rato支持的文件类型。
  3. 重复检查:我知道当前存在重复的歌曲。 我的脚本实际上捕获了它们并记录了错误,但将来的一个简单解决方法是实际删除该文件(如果存在)。

您可以在github上签出(或添加)到我的代码中。