当找不到元数据时,如何防止我的 CD 抓取工具覆盖未知专辑

当找不到元数据时,如何防止我的 CD 抓取工具覆盖未知专辑

我正在开始翻录我收藏的 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:]"
}

相关内容