#!/bin/bash
-### Script convert flac files from music collection
-### to mp3 files. Optional make sha256sum, zip file, or
-### copy to other folder. It works on parallel, you can
-### use it in a cluster with Parameter -S.
Usage()
{
ConvertFlacToMp3()
{
- local readonly workdir="$1"
- local readonly paralleopts="$2"
+ local readonly WORKDIR="$1"
export -f FlacToMp3
export -f EncodingFlacToMp3
export -f ReadFlacToMp3Tags
- find $workdir -name '*.flac' \
+ find $WORKDIR -name '*.flac' \
| sort \
- | parallel --will-cite --ungroup --eta --progress \
- --sshlogin $parallelopts FlacToMp3 {}
+ | parallel --will-cite --ungroup --eta --progress FlacToMp3 {}
}
PictureToFlac()
{
- local readonly workdir="$1"
+ local readonly WORKDIR="$1"
- for i in $(find $workdir -name '*.flac' | sort); do
+ for i in $(find $WORKDIR -name '*.flac' | sort); do
metaflac \
--import-picture-from="3|image/jpeg|||${i%/*}/cover.jpg" $i
done
MakeSymlinksToWork()
{
- local readonly workdir="$1"
- local readonly musicdir="$2"
- local readonly albumlist="$3"
+ local readonly WORKDIR="$1"
+ local readonly MUSIKDIR="$2"
+ local readonly ALBUMLIST="$3"
- for i in $(cat "$albumlist"); do
- cp --recursive --symbolic-link $musicdir/$i $workdir/
+ for i in $(cat "$ALBUMLIST"); do
+ cp --recursive --symbolic-link $MUSIKDIR/$i $WORKDIR/
rsync --recursive --perms --times --group --owner \
--exclude="*.flac" --exclude="*.mp3" --exclude="*.ogg" \
- --include="cover.jpg" $musicdir/$i $workdir/
+ --include="cover.jpg" $MUSIKDIR/$i $WORKDIR/
done
}
ConvertFlacToOgg()
{
- local readonly workdir="$1"
- local readonly paralleopts="$2"
+ local readonly WORKDIR="$1"
export -f FlacToVorbis
export -f ReadFlacToOggTags
export -f EncodingFlacToOgg
- find $workdir -name '*.flac' \
+ find $WORKDIR -name '*.flac' \
| sort \
| parallel --will-cite --ungroup --eta --progress \
- --sshlogin $parallelopts FlacToVorbis {}
+ FlacToVorbis {}
}
ConvertCoverToMeta()
{
- local readonly workdir="$1"
- local readonly parallelopts="$2"
- local readonly scriptdir="$3"
+ local readonly WORKDIR="$1"
- for i in $(find $workdir -name '*.jpg' | sort); do
+ for i in $(find $WORKDIR -name '*.jpg' | sort); do
CoverToMeta $i
done
}
CleanupFlac()
{
- local readonly workdir="$1"
+ local readonly WORKDIR="$1"
- find $workdir -name '*.flac' -exec rm {} \;
+ find $WORKDIR -name '*.flac' -exec rm {} \;
}
CleanupCover()
{
- local readonly wordir="$1"
+ local readonly WORKDIR="$1"
- find $workdir -name 'cover.txt' -exec rm {} \;
+ find $WORKDIR -name 'cover.txt' -exec rm {} \;
if [ $cover == false ]; then
- find $workdir -name 'cover.jpg' -exec rm {} \;
+ find $WORKDIR -name 'cover.jpg' -exec rm {} \;
fi
}
CleanupWorkDir()
{
- local readonly workdir="$1"
+ local readonly WORKDIR="$1"
printf "cleanup working directory\n\n"
- rm --recursive $workdir
+ rm --recursive $WORKDIR
}
CopyWorkDirToDestDir()
{
- local readonly workdir="$1"
- local readonly destdir="$2"
+ local readonly WORKDIR="$1"
+ local readonly DESTDIR="$2"
- mkdir --parents $destdir
- cp --recursive $workdir/* $destdir
+ mkdir --parents $DESTDIR
+ cp --recursive $WORKDIR/* $DESTDIR
}
LoadConfig()
ExistsBasicProgramms()
{
local exists=true
- local programms=("vorbiscomment" "flac" "oggenc" "parallel" "lame" \
- "eyeD3" "metaflac")
+ local programm=""
+ local readonly PROGRAMMS=("vorbiscomment" "flac" "oggenc" "parallel" \
+ "lame" "eyeD3" "metaflac")
- for programm in $programms; do
+ for programm in $PROGRAMMS; do
if [ ! -f /usr/bin/$programm ]; then
printf "$programm not installed\n"
exists=false
SetDefaultVariables()
{
albumlist="albumlist"
- parallelopts=":"
curphase=1
phase=3
flac=false
CreateWorkDirectory()
{
- local WORK="$1"
+ local readonly WORK="$1"
if [ ! -d $WORK ]; then
mkdir $WORK
if [ $mp3 == true ]; then
printf "\nPhase %02d of %02d: flac -> mp3\n" \
$((curphase++)) $phase
- ConvertFlacToMp3 "$WORK" "$parallelopts"
+ ConvertFlacToMp3 "$WORK"
elif [ $flac == true ]; then
printf "\nPhase %02d of %02d: flac -> flac with cover\n" \
$((curphase++)) $phase
else
printf "\nPhase %02d of %02d: flac -> ogg\n" \
$((curphase++)) $phase
- ConvertCoverToMeta "$WORK" "$parallelopts"
- ConvertFlacToOgg "$WORK" "$parallelopts"
+ ConvertCoverToMeta "$WORK"
+ ConvertFlacToOgg "$WORK"
fi
printf "\nPhase %02d of %02d: cleanup\n\n" $((curphase++)) $phase