Initial commit
This commit is contained in:
commit
cefaa6525c
115
LossifyMusicArchive.sh
Executable file
115
LossifyMusicArchive.sh
Executable file
@ -0,0 +1,115 @@
|
||||
#!/bin/bash
|
||||
|
||||
# --- Configuration --- #
|
||||
MAXTHREADS=8
|
||||
|
||||
|
||||
|
||||
# --- Functions --- #
|
||||
function isMusic() {
|
||||
if [ "` file \"$1\"| sed \"s/.*: //g\" | tr '[:upper:]' '[:lower:]' | grep \"audio\"`" != "" ]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
function isFlac() {
|
||||
if [ "`echo \"$1\" | sed \"s/.*\.//g\" | tr '[:upper:]' '[:lower:]'`" == "flac" ]; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
function waitForFreeCore() {
|
||||
sleep 0.1
|
||||
cur=`pidof ffmpeg`
|
||||
IFS=$(echo -en " ")
|
||||
cnt=0
|
||||
for proc in $cur; do
|
||||
cnt=$(( $cnt + 1 ))
|
||||
done;
|
||||
|
||||
if [ "$cnt" -lt "$1" ]; then
|
||||
return
|
||||
else
|
||||
sleep 1
|
||||
waitForFreeCore "$1";
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# --- APPLICATION ENTRY POINT --- #
|
||||
|
||||
# Init working environment
|
||||
indir="/media/media/Music"
|
||||
outdir="/home/markus/Music/lossy"
|
||||
|
||||
if [ "$3" != "" ]; then
|
||||
cdir="$3"
|
||||
else
|
||||
cdir="."
|
||||
fi
|
||||
|
||||
me=$(cd `dirname "${BASH_SOURCE[0]}"` && pwd)/`basename "${BASH_SOURCE[0]}"`
|
||||
|
||||
echo ""
|
||||
cd "$indir"
|
||||
mkdir -p "$outdir/$cdir" # ACTION: MKDIR
|
||||
|
||||
IFS=$(echo -en "\n\b")
|
||||
firstFile=1
|
||||
|
||||
list=`ls "$cdir"`;
|
||||
|
||||
for fileX in $list; do
|
||||
file="$cdir/$fileX"
|
||||
#echo "TEST====$file"
|
||||
if [ "$file" == "" ]; then
|
||||
continue
|
||||
fi
|
||||
if [ -f "$file" ]; then
|
||||
rawCopy=1 # Let's assume it's anything but flac
|
||||
if isMusic "$file"; then
|
||||
if [ $firstFile -eq 1 ]; then # Extract album art
|
||||
firstFile=0
|
||||
if [ ! -f "$outdir/cover.jpg" ]; then
|
||||
ffmpeg -n -i "$indir/$file" "$outdir/$cdir/cover.jpg" # ACTION: EXTRACT COVER
|
||||
fi
|
||||
fi
|
||||
if isFlac "$file"; then
|
||||
echo "FLAC: $file"
|
||||
rawCopy=0 # No copy!
|
||||
newName="${file%.*}.ogg"
|
||||
if [ -f "$outdir/$newName" ]; then
|
||||
echo "SKIP: $file"
|
||||
else
|
||||
ffmpeg -n -threads auto -i "$indir/$file" -codec:a libvorbis -q:a 8 "$outdir/$newName" & # ACTION: CONVERT
|
||||
waitForFreeCore $MAXTHREADS
|
||||
fi
|
||||
else
|
||||
echo "COPY: $file"
|
||||
fi
|
||||
else
|
||||
echo "OTHR: $file"
|
||||
fi
|
||||
|
||||
if [ $rawCopy -eq 1 ] ; then
|
||||
if [ -f "$outdir/$file" ]; then
|
||||
echo "SKIP: $file"
|
||||
else
|
||||
cp $indir/$file $outdir/$file # ACTION: COPY
|
||||
fi
|
||||
fi
|
||||
|
||||
elif [ -d "$file" ]; then
|
||||
echo -e "\e[1m---> CALL:" $me "$indir" "$outdir" "$file" "\e[21m"
|
||||
# read foooooo # for debugging
|
||||
$me "$indir" "$outdir" "$file"
|
||||
echo -e "\e[1m<--- RETURN: $file" "\e[21m"
|
||||
else
|
||||
echo -e "\e[1m!!!! IGNORE: $file" "\e[21m"
|
||||
fi
|
||||
done;
|
||||
|
Loading…
Reference in New Issue
Block a user