【问题标题】:Read iD3 bit rate tag of files and write it to folder name (folder containing the files)读取文件的 iD3 比特率标签并将其写入文件夹名称(包含文件的文件夹)
【发布时间】:2012-08-19 16:29:04
【问题描述】:

在我第一次认真尝试整合一个包含近 20.000 个文件夹(每张专辑都是一个文件夹)的庞大音乐库的过程中。文件夹命名如下:

艺术家 - 年份 - 专辑名称

但与任何大型图书馆一样,有很多专辑重复,而且我发现越来越多的重复,因为我将所有文件夹命名设置为上述命名标准。

为了解决专辑重复问题,我决定保留具有最高比特率的专辑,方法是这样命名文件夹:

艺术家 - 年份 - 专辑名称 [比特率 kbps]

这样我可以很容易地看到我将保留哪个文件夹并删除所有低质量的文件夹。但事实证明,这项任务太耗时了。

所以我想知道这是否可以通过 OSX 终端完成。解决方案如下所示:

  1. 查找文件夹内文件的 iD3“比特率”标签
  2. 在文件夹名称的末尾写上找到的比特率标签,比如

艺术家 - 年份 - 专辑名称 [320 kbps]

如果文件夹内文件的比特率不同,则设置名称为

艺术家 - 年份 - 专辑名称 [vrb kbps]

请注意,我想在我的机器上本地使用终端或任何其他可用工具进行操作。不涉及服务器或脚本语言....

任何方向的任何帮助都会很棒!请记住,我不是高级终端用户,所以我真的很感激一个简单的解释......;)

【问题讨论】:

  • 你试过什么?您的系统上有哪些可用的工具? (如何)我们应该处理诸如具有不同比特率文件的文件夹之类的极端情况?
  • 我没有通过终端尝试过任何东西,我太缺乏经验,甚至无法从那里开始。我的系统是 OSX Lion,我一直在使用 Better Rename 9 应用程序重命名文件夹。它让我可以处理一些 iD3 标签,但不能使用比特率标签。我只是假设该行上的某些内容应该可以通过终端实现......具有不同比特率的文件的文件夹可以被跳过或获得“vbr”(可变比特率)而不是大多数文件夹中的共享比特率。跨度>
  • @tripleee - 作为参考,this forum question 是最接近我打算做的事情。

标签: terminal osx-lion mp3 directory id3


【解决方案1】:

根据http://osxdaily.com/2010/10/04/check-bitrate-of-mp3-and-audio-files/ 尝试类似

find /path -type d |
while read folder; do
    prev=
    br=
    for file in "$folder"/*; do
        case $file in "$folder/*") break;; esac  # Skip empty directories
        br=$(afinfo "$file" | awk '/Bit rate:/{print $3/1000}')
        echo '##' "$br" "$file"
        case $prev in "" | $br) prev=$br; continue;; esac
        br="vbr"
        break
    done
    case $br in '') continue;; esac  # Don't rename if we don't have a bitrate
    echo moving "$folder" to "$folder [$br]"
    mv "$folder" "$folder [$br]"
done

未经测试;也许在没有重命名的情况下尝试这个。如果您喜欢静默操作,请去掉echo 行。

【讨论】:

  • 您的回答似乎有道理,但我应该更改哪一部分才能使其在我的机器上工作(路径等)?我很少使用终端来处理本地内容。
  • /path 是包含您要处理的所有目录的目录的占位符。
  • 我将第一行更改为find /Volumes/OWC\ Mercury\ Elite-AL\ Pro\ Qx2/__music__/test -type d |(通过将文件夹拖入终端获取路径)。我创建了一个文件get_bit_rate.sh,通过终端导航到该文件夹​​并运行它。我确实运行了,但所有文件夹都出现了相同的错误:fail: AudioFileOpenURL failed for 'folder/*'。
  • 抱歉错误,草率编辑。现在已修复 - 我有 for file in folder/* 显然我的意思是 for file in "$folder"/*
  • 这是我得到的输出,简化:1st line: fail: AudioFileOpenURL failed for '/path/album-name/*' 然后2nd line: ## /path/album-name/* 然后3rd line: moving /path/album-name to /path/album-name [] 然后mv: rename /path/album-name to /path/album-name []: No such file or directory。顺便说一句,为所有的帮助干杯!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-05
  • 2020-05-03
  • 1970-01-01
  • 1970-01-01
  • 2019-03-28
  • 2017-08-14
  • 2017-10-29
相关资源
最近更新 更多