splitape最早是用来分割APE文件的,现在稍微经过扩展,各种文件都能分割。

割完了能转成FLAC或其他格式,并且根据metadata进行命名,之后用easytag处理一下就能内嵌metadata了,例如id3v2或者flac的tag之类。

用到了shntool

关于TAK

TAK这个格式很少出现,但是碰见了还是麻烦。最简单的处理方法是下载TAK for windows,扔到某个目录,然后写个脚本,链接成takc:

wine /home/henryhu/soft/tak/Applications/Takc.exe $*

shntool会自己找takc,所以这样就行了。

关于编码

看来真该用个自动编码检测器……

code

#!/bin/sh

if [ $# -le 1 ]; then
	echo "This tool would split ape file to flac file(s) according to cue sheet."
	echo "You may also specify other formats."
	echo "usage: $0 <cue file name> <ape file name> [<output format>]"
	exit 1
fi

CUEFILE="$1"

FILETYPE=`file "$1"`
PA=`echo $FILETYPE | grep "ISO-8859"`
PB=`echo $FILETYPE | grep "extended-ASCII"`
PC=`echo $FILETYPE | grep "Non-ISO"`

if [ "$PA" != "" -o "$PB" != "" -o "$PC" != "" ]; then
    echo "Found non-UTF8 CUE file."
    echo "=== 1.GBK ==="
    cat "$1" | iconv -f gbk | head
    echo "=== 2.CP932 ==="
    cat "$1" | iconv -f cp932 | head
    echo "Which one? 1=gbk 2=cp932"
    read encoding_id
    if [ "$encoding_id" = "1" ]; then
        encoding=gbk
    else
        encoding=cp932
    fi
	echo "Found $encoding CUE file, converting..."
	cat "$1" | iconv -f $encoding > /tmp/splitape.cue.tmp
	CUEFILE=/tmp/splitape.cue.tmp
fi

if [ "$3" = "" ]; then
	OUTPUT_FORMAT="flac"
elif [ "$3" = "mp3" ]; then
    OUTPUT_FORMAT="cust ext=mp3 lame - %f"
else
	OUTPUT_FORMAT=$3
fi

echo "CUE File: $1"
echo "APE File: $2"

shntool split -f "$CUEFILE" -t %n_%p_%a_%t -o "$OUTPUT_FORMAT" "$2"