macOS 终端:重命名后如何编辑 MP3 文件的元数据?

macOS 终端:重命名后如何编辑 MP3 文件的元数据?

我有一个使用变量的脚本,已将文件重命名为以下格式:

(track#) - (title) - (artist) - (date).mp3
#! /bin/zsh -
set -o extendedglob
pattern='(#b)*_ \((<0-999>)\)(* )—( * )(<1-12>)_(<1-31>)_(<1900-2100>)(.mp3)'
ret=0
for file {
  if [[ $file = $~pattern ]] {
    argv=( "$match[@]" )
    mv -i -- $file "${(l[3][0])1} -$2-$3- $6-${(l[2][0])5}-${(l[2][0])4}-0900$7" || ret=$?
  }
}
exit $ret

使用此脚本,此文件:

Public Talks_ (9) Walking With God Brings Blessings Now and Forever — Chris Ruscher 10_28_2023.mp3

更名为:

009 - Walking With God Brings Blessings Now and Forever - Chris Ruscher - 2023-28-10-0900.mp3

格式为:曲目# - 标题 - 艺术家 - 日期.mp3,显示变量:$1 - $2 - $3 - $6-$5-$4-0900$7

以上所有操作都完美无缺。我现在想添加到该脚本中。

然后我想将这些值插入到下面显示的元数据中。

  1. 轨道,举行于$1>>kMDItemAudioTrackNumber
  2. 标题,保存在$2>>kMDItemTitle     
  3. 艺术家,举办于$3>>kMDItemAuthors
  4. 时间戳,它是这些的串联:$6${(l[2][0])5}${(l[2][0])4}0900>>kMDItemContentCreationDate

该脚本还将文件创建日期修改为kMDItemContentCreationDate。我尝试将touch -t命令添加到上面最后一步(4)的循环中,但它不起作用。

#! /bin/zsh -
set -o extendedglob
pattern='(#b)*_ \((<0-999>)\)(* )—( * )(<1-12>)_(<1-31>)_(<1900-2100>)(.mp3)'
ret=0
for file {
  if [[ $file = $~pattern ]] {
    argv=( "$match[@]" )
>   fecha=( "$6${(l[2][0])5}${(l[2][0])4}0900$7" )
>   touch -t $(date -j -f "%Y%m%d%H%M" $fecha +%Y%m%d%H%M) $file
    mv -i -- $file "${(l[3][0])1} -$2-$3- $6-${(l[2][0])5}-${(l[2][0])4}-0900$7" || ret=$?
  }
}
exit $ret

请注意,这是针对终端中使用 zsh 的 macOS。

对于这两个问题有什么想法:编辑元数据然后调整创建日期吗?我是脚本编写新手,所以我拼凑了我在论坛上找到的内容。非常感谢您的见解。

相关内容