SCRIPT -- Rip CD to Flac in Linux automated
by Brendan Horan –March 2, 2009
The following script will rip a cd to FLAC.
Requires the following libraries and tools :
- flac
- cdparanoia
Requires command line parameters in the following format :-
# ./cd-rip.sh
No Album/Artist Name Given
Please specify in the following format
"ALBUM Name" "ARTIST"
The code is :
#!/bin/bash
#
# Desc :- Script to rip Audio CD to FLAC
# Will intert Artist and album tag
# You must manualy insert filename
# and all other tags
# Version :- 1.0.0
# Date :- 12-01-09
# Author :- undersys@undersys.net
# Dependencies :- flac-1.2.1-r3, cdparanoia-3.10.2-r2
#
# -------------------
# Set Global Config
# -------------------
# -- Only change the five entrys below --
# Device to read from
CDROM=/dev/hdc
# Base extraction directory, artist and ablum dirs will be placed under here
BASEDIR=/store/flac
# Set group to own files/folders
REALGRP=users
# cdparanoia binary location
CDPARANOIA=/usr/bin/cdparanoia
# flac binary location
FLAC=/usr/bin/flac
# -------------------
# End Global Config
# -------------------
# -------------------
# Set Global Vars
# -------------------
# -- Do not change any entrys below --
# Check for root user, must be root to run cdparanoia
ROOT=`whoami | awk -F" " '{print $1}' | awk '{sub(/[ \t]+$/, "");print}'`
# Find real user and not su root this is the user who owns the files at the end
#REALUSR=`who | awk -F: '{print $1}' | awk '{sub(/[ \t]+$/, "");print}' | awk 'NR>1{exit};1'`
REALUSER=samba
# Remove spaces from Album name
REPSPACE=`echo $1| tr ' ' '-'`
# Remove spaces from Artist name
REPSPACEB=`echo $2 | tr ' ' '-'`
# Set first user var to ALBUM
TALBUM=$1
# set second user var ARTIST
TARTIST=$2
# ------------------
# End Global Vars
# ------------------
# ---------------------
# Start Function blocks
# ---------------------
# Test for input args
function testargs {
if [[ -z $TALBUM ]]; then
echo No Album/Artist Name Given
echo Please specify in the following format
echo '"ALBUM Name"' '"ARTIST"'
exit
fi
if [[ -z $TARTIST ]]; then
echo No Album/Artist Name Given
echo Please specify in the following format
echo '"ALBUM Name"' '"ARTIST"'
exit
fi
if [[ $ROOT != "root" ]]; then
echo You must be root to run this script
echo cdparanoia requires root
exit
fi
}
# Create base directorys
function mdir {
if [[ -d $BASEDIR/$REPSPACEB/$REPSPACE ]]; then
echo You have ripped this CD
exit
fi
cd $BASEDIR
if [[ -d $REPSPACEB ]]; then
cd $BASEDIR/$REPSPACEB
mkdir $REPSPACE
else
mkdir $BASEDIR/$REPSPACEB
mkdir $BASEDIR/$REPSPACEB/$REPSPACE
fi
}
# rip cd
function rip {
cd $BASEDIR/$REPSPACEB/$REPSPACE
$CDPARANOIA -l -v -B -z -d $CDROM
}
# encode to flac
function encode {
cd $BASEDIR/$REPSPACEB/$REPSPACE
$FLAC -5 -V -T "ALBUM=$TALBUM" -T "ARTIST=$TARTIST" --sector-align --replay-gain --delete-input-file *.wav
}
# rename logs
function rename {
cd $BASEDIR/$REPSPACEB/$REPSPACE
mv cdparanoia.log $REPSPACE.log
}
# set ownership and permissions
function setperms {
chown -R "$REALUSR:$REALGRP" $BASEDIR/$REPSPACEB/$REPSPACE
chmod -R 774 $BASEDIR/$REPSPACEB/$REPSPACE
}
# --------------------
# End Function Block
# --------------------
# --------------------
# main section
# --------------------
testargs
mdir
rip
encode
rename
setperms
exit
# -------------------
# End main section
# -------------------
# -------------------
# End Script
# -------------------