我正在开始翻录我收藏的 CD 的漫长过程。我已经安装了 abcde,配置来自安德鲁角。它似乎工作正常,但当元数据获取失败时,MP3 会被写入未知艺术家和未知专辑。在第二次元数据获取失败之前,这不是问题。然后曲目被覆盖。理想的是第二张专辑的名称上有一个数字,例如“Unknown Album 2”。关于如何实现这一目标有什么建议吗?或者如何防止目录被覆盖?
答案1
abcde
您可以通过使用一个脚本来自动化该过程,该脚本在完成abcde
后调用并检查“未知艺术家/未知专辑”目录是否存在abcde
。
如果测试表明该目录存在,则将其重命名为包含磁盘 CDDB ID 的名称,您可以使用以下方式获取CD光盘工具。此脚本会提前获取 ID,否则自动弹出会阻止在 abcde 完成后获取 ID。
#!/bin/bash
id=$(cd-discid /dev/cdrom)
abcde $@ || exit 1
if [ -d "Unknown Artist/Unknown Album" ]; then
mv "Unknown Artist/Unknown Album" \
"Unknown Artist/Unknown Album $id"
fi
答案2
使用Serge上面的想法,我编辑了.abcde.conf配置文件中的mungefilename函数。
我从此处提供的配置文件开始: Andew's Corner 有一个非常有用的教程
我编辑了该函数以附加从 cd-discid 返回的字符串的第一位。
mungefilename ()
{
CDDISKIDENT=$(cd-discid "$CDROM")
FIRSTPARTID=$(echo $CDDISKIDENT | cut -d' ' -f1)
echo "$@" | sed "s/Unknown\ Album/Unknown\ Album$FIRSTPARTID/" | sed -e 's/^\.*//' | tr -d ":><|*/\"'?[:cntrl:]"
}
答案3
这会在翻录光盘时附加父进程的 PID。这是因为 mungefilename 是在 rip 结束时的最终复制过程中按文件运行的,如果您设置了自动弹出,则光盘将无法从中获取 Discid。父 PID 是每个光盘的唯一常量。
mungefilename ()
{
echo "$@" | sed "s/Unknown\ Album/Unknown\ Album$PPID/" | sed -e 's/^\.*//' | tr -d ":><|*/\"'?[:cntrl:]"
}