Перекодирование одиночного lossless аудиофайла во FLAC по CUE-таблице: различия между версиями
Материал из Linux Wiki
Перейти к навигацииПерейти к поиску
Rain (обсуждение | вклад) |
Rain (обсуждение | вклад) (Теперь оно умеет работать с разными файлами... Наверное :)) |
||
Строка 7: | Строка 7: | ||
<source lang="bash"> | <source lang="bash"> | ||
#!/bin/bash | #!/bin/bash | ||
# last change: | # Created: at the beginning of 2008 | ||
# last change: 2009-01-20 | |||
outdir="output" | outdir="output" | ||
error() { | error() { | ||
echo "$1" | echo "$1" | ||
exit $2 | exit $2 | ||
} | } | ||
[ -e $outdir ] && echo "Warning: $outdir already exist" | [ -e $outdir ] && echo "Warning: $outdir already exist" | ||
test $(which flac) || error "Error: FLAC convertor not found" 1 | test $(which flac) || error "Error: FLAC convertor not found" 1 | ||
test $(which shnsplit) || error "Please, install shntool first" 1 | test $(which shnsplit) || error "Please, install shntool first" 1 | ||
Строка 25: | Строка 24: | ||
mkdir -p "$outdir" | mkdir -p "$outdir" | ||
echo "Converting "$1" to WAV-format" | if [[ "$(file -b "${1}")" =~ "Monkey's Audio" ]]; then | ||
mac "$1" "${1%. | test $(which mac) || error "Error: Monkey Audio convertor not found" 1 | ||
[ -e "${1%.???}.wav" ] && error "Error: "${1%.???}.wav" already exist, aborting" 1 | |||
echo "Converting "$1" from APE to WAV-format" | |||
mac "$1" "${1%.???}.wav" -d | |||
elif [[ "$(file -b "${1}")" =~ "FLAC audio" ]]; then | |||
[ -e "${1%.????}.wav" ] && error "Error: "${1%.????}.wav" already exist, aborting" 1 | |||
echo "Converting "$1" from FLAC to WAV-format" | |||
flac -d "${1}" -o "${1%.????}" | |||
elif [[ "$(file -b "${1}")" =~ "WAVE audio" ]]; then | |||
echo "Ok, ${1} ready to splitting" | |||
else | |||
error "Can't recognize input file format" | |||
fi | |||
echo "Splitting "${1%.ape}.wav" to multiple files" | echo "Splitting "${1%.ape}.wav" to multiple files" | ||
cd $outdir ; cat ../"$2" | shnsplit -t %n_:_%p_:_%a_:_%t ../"${1%.ape}.wav" | cd $outdir ; cat ../"$2" | shnsplit -t %n_:_%p_:_%a_:_%t ../"${1%.ape}.wav" | ||
rm -f ../"${1%.ape}.wav" | rm -f ../"${1%.ape}.wav" | ||
ls -1 *.wav | | ls -1 *.wav | | ||
while read i; | while read i; | ||
Строка 49: | Строка 60: | ||
---- | ---- | ||
{{ToDo| | {{ToDo|Сделать заполнение тегов по варианту скрипта drujebober'a}} | ||
[[Category:FLAC]][[Category:APE]][[Category:CUE]][[Category:Bash-скрипт]][[Category:Конвертация]][[Category:Скрипт]] | [[Category:FLAC]][[Category:APE]][[Category:CUE]][[Category:Bash-скрипт]][[Category:Конвертация]][[Category:Скрипт]] |
Версия 16:13, 20 января 2009
Скрипт для преобразования одиночного ape-файла, представляющего собой копию диска в отдельные FLAC-файлы с заполнением тегов и именованием файлов в соответствии с CUE-таблицой
- Использование
- cueape2flac "AUDIO FILE.ape" "TEXT FILE.cue"
- Зависимости
- monkeys-audio, flac, shntool
#!/bin/bash
# Created: at the beginning of 2008
# last change: 2009-01-20
outdir="output"
error() {
echo "$1"
exit $2
}
[ -e $outdir ] && echo "Warning: $outdir already exist"
test $(which flac) || error "Error: FLAC convertor not found" 1
test $(which shnsplit) || error "Please, install shntool first" 1
echo "Creating output directory"
mkdir -p "$outdir"
if [[ "$(file -b "${1}")" =~ "Monkey's Audio" ]]; then
test $(which mac) || error "Error: Monkey Audio convertor not found" 1
[ -e "${1%.???}.wav" ] && error "Error: "${1%.???}.wav" already exist, aborting" 1
echo "Converting "$1" from APE to WAV-format"
mac "$1" "${1%.???}.wav" -d
elif [[ "$(file -b "${1}")" =~ "FLAC audio" ]]; then
[ -e "${1%.????}.wav" ] && error "Error: "${1%.????}.wav" already exist, aborting" 1
echo "Converting "$1" from FLAC to WAV-format"
flac -d "${1}" -o "${1%.????}"
elif [[ "$(file -b "${1}")" =~ "WAVE audio" ]]; then
echo "Ok, ${1} ready to splitting"
else
error "Can't recognize input file format"
fi
echo "Splitting "${1%.ape}.wav" to multiple files"
cd $outdir ; cat ../"$2" | shnsplit -t %n_:_%p_:_%a_:_%t ../"${1%.ape}.wav"
rm -f ../"${1%.ape}.wav"
ls -1 *.wav |
while read i;
do
tracknum=$(echo "${i%.wav}" | awk -F'_:_' '{print $1}')
artist=$(echo "${i%.wav}" | awk -F'_:_' '{print $2}')
album=$(echo "${i%.wav}" | awk -F'_:_' '{print $3}')
title=$(echo "${i%.wav}" | awk -F'_:_' '{print $4}')
$(flac --best "$i" --delete-input-file -V --replay-gain \
-T title="$title" \
-T album="$album" \
-T artist="$artist" \
-T tracknumber="$tracknum" \
-o "$tracknum-$artist-$album-$title.flac")&:
done
ToDo: Сделать заполнение тегов по варианту скрипта drujebober'a