Конвертирование из APE+CUE в FLAC в Linux/FreeBSD

Автор FalseMan, 14 Вересень 2008, 22:01:29

Попередня тема - Наступна тема

FalseMan

Мож кому надо - вот скриптик :-[ . Все работает ЗАМЕЧАТЕЛЬНО. Только пакеты требуемые сначала установите.
mac  можно взять здесь

Upd: Вот скрипт:


vim /usr/bin/f2t

#!/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" = "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`

При желании добавляем в меню конкуерора:
nano ~/.kde/share/apps/konqueror/servicemenus/add2collection.desktop
[Desktop Entry]
Encoding=UTF-8
ServiceTypes=inode/directory
Actions=AddMusic2Collection

[Desktop Action AddMusic2Collection]
Name[ru]=Порезать на треки содержимое каталога
Exec=xterm -e /usr/bin/f2t %F
Icon=wizard

chmod 777 /usr/bin/f2t чтоб все могли выполнять


требуемые пакеты

mac;flac;shntools;cuetools

IK91

1. Каким образом это относиться к " Альтернативные ОС, программирование"  :(?

2. Уважаемый, а это ли не реклама  :%)?
Звонишь мэру в офис, и он высвечивает сигнал в небе, в виде <мораль не позволяет>.

FalseMan

Цитата: IGOR_KRUTOI_91 від 14 Вересень 2008, 22:04:42
2. Уважаемый, а это ли не реклама  :%)?
эмм... вам перезалить этот скрипт отдельно? ок

IK91

Цитата: FalseMan від 14 Вересень 2008, 22:07:42
эмм... вам перезалить этот скрипт отдельно? ок
Сорри друг, я недочитал в конце "Linux/FreeBSD", снимаю обвинения, и приношу извинения...
очень и очень плохое настроение, и очень паскудно на душе, вот и протупил, еще раз сорри
Звонишь мэру в офис, и он высвечивает сигнал в небе, в виде <мораль не позволяет>.

FalseMan

Цитата: IGOR_KRUTOI_91 від 14 Вересень 2008, 22:11:51
Сорри друг, я недочитал в конце "Linux/FreeBSD", снимаю обвинения, и приношу извинения...
очень и очень плохое настроение, и очень паскудно на душе, вот и протупил, еще раз сорри
эт я добавил после твоего поста так что спасибо за замечание :)

FalseMan

скрипт немного изменил, добавил поддержку wavpack, соответственно он появился в depends. Раскомментировал строки с "kdialog".

#!/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
#wavpack by falseman aka brainerazer
if [ "$ext" = "wv" ]; then
`kdialog --passivepopup "$dir converting to $base.flac..." 2`
wvunpack "$tsFile" "$base.wav"
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`