Перекодирование одиночного lossless аудиофайла во FLAC по CUE-таблице: различия между версиями

Материал из Linux Wiki
Перейти к навигацииПерейти к поиску
(Теперь оно умеет работать с разными файлами... Наверное :))
Строка 7: Строка 7:
<source lang="bash">
<source lang="bash">
#!/bin/bash
#!/bin/bash
# last change: 2008-04-17
# 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"
[ -e "${1%.ape}.wav" ] && error "Error: "${1%.ape}.wav" already exist, aborting" 1
test $(which mac) || error "Error: Monkey Audio convertor not found" 1
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%.ape}.wav" -d
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|Прикрутить поддержку разных типов файлов (чтобы оно умело конвертировать не только с APE, а и с WAV и FLAC в несколько файлов) и сделать заполнение тегов по варианту скрипта drujebober'a}}
{{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