.cue,.ape

kolebas
Друзья, а помогите сделать скрипт - надо рекурсивно обойти все каталоги в коллекции и с помощью cuetag проставить теги в файлах , конвертированных во flac из ape. Одиночно теги проставляются командой cuetag.sh *.cue *.flac . Я понимаю, что надо использовать find и exec, но что то никак не выходит каменный цветок.

как я понял, флак и куе лежат рядом и отличаются только расширением?

#!/bin/bash
“THE BEER-WARE LICENSE” (Revision 42):
<[email protected]>; wrote this file. As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a beer in return. Alexander 'hatred' Drozdoff
find /dir/with/music -name "*.cue" -print | while read fn;
do
  nm=$(basename $fn .cue)
  dir=$(dirname $fn)
  /bla-bla/cuetag.sh $fn $dir/$nm.flac
done
systemd должен умереть.
h4tr3d, спасибо большое !работает. вот бы еще добавить что-нибудь, что б он на пробелы в названиях не ругался - был бы высший пилотаж ))))
kolebas
вот бы еще добавить что-нибудь, что б он на пробелы в названиях не ругался

dir=$(dirname "$fn")
#или
dir=$(dirname "${fn}")
можно пробелы экранировать двойными ковычками.
вообще во многих скриптах спасает
Dr.Drey
dir=$(dirname "$fn")
#или
dir=$(dirname "${fn}")
можно пробелы экранировать двойными ковычками.
вообще во многих скриптах спасает
в этом почему то не спасает, или я не то что то делаю,
покажи ругать то наконец, думал сам догадаешься ;-)
systemd должен умереть.
h4tr3d
покажи ругать то наконец, думал сам догадаешься ;-)
если в файлах заменить пробелы на _ то скрипт работает , иначе такое выдает:
[[email protected] MP]$ cueflac
basename: лишний операнд `-'
Попробуйте `basename --help' для получения более подробного описания.
./Ellery: unknown format
./Ellery: input file error
/usr/bin/cuetag.sh: line 147: [: 14: ожидается использование унарного оператора
Eskelin: uknown file type
-: uknown file type
Ten: uknown file type
-: uknown file type
2004_/Ellery: uknown file type
Eskelin: uknown file type
-: uknown file type
Ten.cue: uknown file type
./Ellery: uknown file type
Eskelin: uknown file type
-: uknown file type
Ten: uknown file type
-: uknown file type
./Ellery: unknown format
./Ellery: input file error
./Ellery: unknown format
./Ellery: input file error
./Ellery: unknown format
./Ellery: input file error
./Ellery: unknown format
./Ellery: input file error
./Ellery: unknown format
./Ellery: input file error
./Ellery: unknown format
./Ellery: input file error
./Ellery: unknown format
./Ellery: input file error
./Ellery: unknown format
./Ellery: input file error
./Ellery: unknown format
./Ellery: input file error
./Ellery: unknown format
./Ellery: input file error
./Ellery: unknown format
./Ellery: input file error
2004_/.flac: ERROR: reading metadata, status = "FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE"
The FLAC file could not be opened.  Most likely the file does not exist
or is not readable.
warning: number of files does not match number of tracks
warning: number of files does not match number of tracks
warning: number of files does not match number of tracks
basename: лишний операнд `of'
Попробуйте `basename --help' для получения более подробного описания.
./Art: unknown format
./Art: input file error
/usr/bin/cuetag.sh: line 147: [: 21: ожидается использование унарного оператора
Ensemble: uknown file type
of: uknown file type
Chicago: uknown file type
-: uknown file type
Urban: uknown file type
Magic: uknown file type
(2003)/Art: uknown file type
Ensemble: uknown file type
of: uknown file type
Chicago: uknown file type
-: uknown file type
Urban: uknown file type
Magic.cue: uknown file type
./Art: uknown file type
Ensemble: uknown file type
of: uknown file type
Chicago: uknown file type
-: uknown file type
Urban: uknown file type
Magic: uknown file type
./Art: unknown format
./Art: input file error
(2003)/.flac: ERROR: reading metadata, status = "FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE"
The FLAC file could not be opened.  Most likely the file does not exist
or is not readable.
./Art: unknown format
./Art: input file error
./Art: unknown format
./Art: input file error
./Art: unknown format
./Art: input file error
./Art: unknown format
./Art: input file error
./Art: unknown format
./Art: input file error
./Art: unknown format
./Art: input file error
./Art: unknown format
./Art: input file error
./Art: unknown format
./Art: input file error
./Art: unknown format
./Art: input file error
./Art: unknown format
./Art: input file error
warning: number of files does not match number of tracks
warning: number of files does not match number of tracks
“'$fn'” попробуй
systemd должен умереть.
Там баг с пробелами в самом cuetag.sh был. Уже пофиксили в AUR.
Ну что, кто ставит пиво? :)
systemd должен умереть.
Юзаю скрипт, найденный на просторах ЛинуксФорума:
#!/bin/bash
#By DsTr wink.gif
#`kdialog --passivepopup "Добавление в коллекцию..." 1`
if [ "$1" == '' ]; then
shellDir="$PWD"
else
shellDir="$1"
fi
cd "$shellDir"
find |while read dir; do
if [ -f "$dir" ]; then
dirName="`dirname "$dir"`"
cd "`dirname "$dir"`"
tsFile=`echo "$dir" | sed -ne 's!^.*\/!!p'`
ext=`echo "$dir" | sed -ne 's!^.*\.!!p' | tr '[:upper:]' '[:lower:]'` &> /dev/null
base=`echo "$tsFile" | sed -e 's!\.[^.]*$!!'` &> /dev/null
if [ "$ext" = "ape" ]; then
#`kdialog --passivepopup "$dir converting to $base.flac..." 2`
mac "$tsFile" "$base.wav" -d
flac "$base.wav"
rm -f "$tsFile" "$base.wav"
fi
if [ "$ext" = "wv" ]; then
#`kdialog --passivepopup "$dir converting to $base.flac..." 2`
wvunpack "$tsFile"
flac "$base.wav"
rm -f "$tsFile" "$base.wav"
fi
if [ "$ext" = "bin" ]; then
#`kdialog --passivepopup "Converting $dir to $base.flac... " 2`
`flac --force-raw-format --channels=2 --sample-rate=44100 --bps=16 --sign=signed --endian=little "$tsFile"`
fi
if [ "$ext" = "wav" ]; then
#`kdialog --passivepopup "Converting $dir to $base.flac... " 2`
`flac --force-raw-format --channels=2 --sample-rate=44100 --bps=16 --sign=signed --endian=little "$tsFile"`
fi
cd "$shellDir"
fi
done
find |while read dir; do
if [ -f "$dir" ]; then
cd "`dirname "$dir"`"
tsFile=`echo "$dir" | sed -ne 's!^.*\/!!p'`
ext=`echo "$dir" | sed -ne 's!^.*\.!!p' | tr '[:upper:]' '[:lower:]'` &> /dev/null
base=`echo "$dir" | sed -e 's!\.[^.]*$!!'` &> /dev/null
if [ "$ext" = "cue" ]; then
#`kdialog --passivepopup "Recoding $dir tags to unicode... " 2`
pathtoflac=`ls | grep .flac`
mv "$pathtoflac" "tmp.flac"
mv "$tsFile" "tmp.cue"
shnsplit -o wav "tmp.flac" -f "tmp.cue" -t '%n-%t'
numTracks=`cueprint "tmp.cue" --disc-template %N`
while (( numTracks > 0 ))
do
perfomer=`cueprint "tmp.cue" -n "$numTracks" --track-template %p`
title=`cueprint "tmp.cue" -n "$numTracks" --track-template %t`
album=`cueprint "tmp.cue" --disc-template %T`
if (( ${#numTracks} == 2 )); then
flac --replay-gain --force-raw-format --channels=2 --sample-rate=44100 --bps=16 --sign=signed --endian=little --best "$numTracks-$title.wav"
splitname="$numTracks-$title.flac"
rm -f "$numTracks-$title.wav"
else
flac --replay-gain --force-raw-format --channels=2 --sample-rate=44100 --bps=16 --sign=signed --endian=little --best "0$numTracks-$title.wav"
splitname="0$numTracks-$title.flac"
rm -f "0$numTracks-$title.wav"
fi
cueprint -n $numTracks -t 'ARRANGER=%A\nCOMPOSER=%C\nGENRE=%G\nMESSAGE=%M\nTRACKNUMBER=%n\nARTIST=%p\nTITLE=%t\nALBUM=%T\n' "tmp.cue" | egrep -v '=$' | metaflac "$splitname" --import-tags-from=-
let "numTracks-=1"
done
rm -f "tmp.cue" "tmp.flac"
fi
cd "$shellDir"
fi
done
#`kdialog --passivepopup "Завершено..." 1`
 
Зарегистрироваться или войдите чтобы оставить сообщение.