some functional changes
This commit is contained in:
@ -1,7 +1,7 @@
|
|||||||
FROM alpine:latest
|
FROM alpine:latest
|
||||||
LABEL org.opencontainers.image.authors="victor@brutalix.org"
|
LABEL org.opencontainers.image.authors="victor@brutalix.org"
|
||||||
COPY --chmod=777 depFiles/ripCD.sh /usr/local/bin/ripCD.sh
|
COPY --chmod=777 depFiles/ripCD.sh /usr/local/bin/ripCD.sh
|
||||||
RUN apk add --no-cache libcddb cd-discid cdrkit curl py3-pip cdparanoia gnu-libiconv jpegoptim optipng cdrdao ffmpeg coreutils grep bash
|
RUN apk add --no-cache libcddb cd-discid cdrkit curl py3-pip cdparanoia gnu-libiconv jpegoptim optipng cdrdao ffmpeg coreutils grep bash cdrdao libcdio-tools
|
||||||
ENV VIRT_ENV=/opt/venv
|
ENV VIRT_ENV=/opt/venv
|
||||||
RUN python -m venv $VIRT_ENV
|
RUN python -m venv $VIRT_ENV
|
||||||
ENV PATH="$VIRT_ENV/bin:$PATH"
|
ENV PATH="$VIRT_ENV/bin:$PATH"
|
||||||
|
|||||||
@ -4,9 +4,12 @@ VOLUME=/tmp
|
|||||||
RIP_DIR=audio/RIP
|
RIP_DIR=audio/RIP
|
||||||
ALAC_DIR=ALAC
|
ALAC_DIR=ALAC
|
||||||
FLAC_DIR=data/media/music
|
FLAC_DIR=data/media/music
|
||||||
|
DISCIMAGE_DIR=audio/DISCIMAGE
|
||||||
DEV=/dev/cdrom
|
DEV=/dev/cdrom
|
||||||
CDDB_URL="freedb.freac.org:/~cddb/cddb.cgi"
|
CDDB_URL="freedb.freac.org:/~cddb/cddb.cgi"
|
||||||
|
#CDDB_URL="gnudb.gnudb.org/~cddb/cddb.cgi"
|
||||||
COMPILATION=""
|
COMPILATION=""
|
||||||
|
ISMIXEDCD=''
|
||||||
declare -a TITLES
|
declare -a TITLES
|
||||||
#FUNCTIONS
|
#FUNCTIONS
|
||||||
checkRipDir(){
|
checkRipDir(){
|
||||||
@ -120,7 +123,7 @@ writeTOC(){
|
|||||||
|
|
||||||
|
|
||||||
isCompilation(){
|
isCompilation(){
|
||||||
read -r -p "Is a compilation?(default: n): " COMPILATION
|
read -r -p "Is a multi CD album?(default: n): " COMPILATION
|
||||||
if [[ -z "${COMPILATION}" ]]; then
|
if [[ -z "${COMPILATION}" ]]; then
|
||||||
COMPILATION='n'
|
COMPILATION='n'
|
||||||
fi
|
fi
|
||||||
@ -149,7 +152,6 @@ isCompilation(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
setInitialData(){
|
setInitialData(){
|
||||||
echo "COMPILATION: $COMPILATION"
|
|
||||||
if [ "$CDDA" -eq 1 ]; then
|
if [ "$CDDA" -eq 1 ]; then
|
||||||
DISCID=$(cd-discid "${DEV}" | sed 's/ /+/g')
|
DISCID=$(cd-discid "${DEV}" | sed 's/ /+/g')
|
||||||
ALBUMNAME="$(curl -s "http://$CDDB_URL?cmd=cddb+query+$(cd-discid "${DEV}" | sed 's/ /+/g')&hello=user+hostname+cdparanoia+3&proto=3" |
|
ALBUMNAME="$(curl -s "http://$CDDB_URL?cmd=cddb+query+$(cd-discid "${DEV}" | sed 's/ /+/g')&hello=user+hostname+cdparanoia+3&proto=3" |
|
||||||
@ -162,10 +164,6 @@ setInitialData(){
|
|||||||
PERFORMER=$(echo "$ALBUMNAME" | awk -F' - ' '{print $1}')
|
PERFORMER=$(echo "$ALBUMNAME" | awk -F' - ' '{print $1}')
|
||||||
ALBUM_TITLE=$(echo "$ALBUMNAME" | awk -F' - ' '{print $2}')
|
ALBUM_TITLE=$(echo "$ALBUMNAME" | awk -F' - ' '{print $2}')
|
||||||
ALBUMNAME="${ALBUMNAME%$'\n'}"
|
ALBUMNAME="${ALBUMNAME%$'\n'}"
|
||||||
# Imprimir los resultados
|
|
||||||
echo "ALBUMNAME: $ALBUMNAME"
|
|
||||||
echo "Performer: $PERFORMER"
|
|
||||||
echo "Album Name: $ALBUM_TITLE"
|
|
||||||
SPEED=$(more /proc/sys/dev/cdrom/info | grep -E 'drive speed:' | awk '{print $3}')
|
SPEED=$(more /proc/sys/dev/cdrom/info | grep -E 'drive speed:' | awk '{print $3}')
|
||||||
echo "Artist detected as: "${PERFORMER}""
|
echo "Artist detected as: "${PERFORMER}""
|
||||||
read -r -p "Is correct: ? [Y/n] (default: Y) " input
|
read -r -p "Is correct: ? [Y/n] (default: Y) " input
|
||||||
@ -174,10 +172,10 @@ setInitialData(){
|
|||||||
fi
|
fi
|
||||||
case $input in
|
case $input in
|
||||||
[yY][eE][sS]|[yY])
|
[yY][eE][sS]|[yY])
|
||||||
echo "Yes"
|
#echo "Yes"
|
||||||
;;
|
;;
|
||||||
[nN][oO]|[nN])
|
[nN][oO]|[nN])
|
||||||
echo -e "No"
|
#echo -e "No"
|
||||||
read -r -p "Enter a new name: " PERFORMER
|
read -r -p "Enter a new name: " PERFORMER
|
||||||
if [[ -z "${PERFORMER}" ]]; then
|
if [[ -z "${PERFORMER}" ]]; then
|
||||||
echo "Invalid input..."
|
echo "Invalid input..."
|
||||||
@ -199,10 +197,10 @@ setInitialData(){
|
|||||||
fi
|
fi
|
||||||
case $input in
|
case $input in
|
||||||
[yY][eE][sS]|[yY])
|
[yY][eE][sS]|[yY])
|
||||||
echo "Yes"
|
#echo "Yes"
|
||||||
;;
|
;;
|
||||||
[nN][oO]|[nN])
|
[nN][oO]|[nN])
|
||||||
echo -e "No"
|
#echo -e "No"
|
||||||
read -r -p "Enter a new name: " ALBUM_TITLE
|
read -r -p "Enter a new name: " ALBUM_TITLE
|
||||||
if [[ -z "${ALBUM_TITLE}" ]]; then
|
if [[ -z "${ALBUM_TITLE}" ]]; then
|
||||||
echo "Invalid input..."
|
echo "Invalid input..."
|
||||||
@ -238,10 +236,10 @@ setFinalData(){
|
|||||||
fi
|
fi
|
||||||
case $input in
|
case $input in
|
||||||
[yY][eE][sS]|[yY])
|
[yY][eE][sS]|[yY])
|
||||||
echo "Yes"
|
#echo "Yes"
|
||||||
;;
|
;;
|
||||||
[nN][oO]|[nN])
|
[nN][oO]|[nN])
|
||||||
echo -e "No"
|
#echo -e "No"
|
||||||
read -r -p "Enter a new name: " GENRE
|
read -r -p "Enter a new name: " GENRE
|
||||||
if [[ -z "${GENRE}" ]]; then
|
if [[ -z "${GENRE}" ]]; then
|
||||||
echo "Invalid input..."
|
echo "Invalid input..."
|
||||||
@ -263,10 +261,10 @@ setFinalData(){
|
|||||||
fi
|
fi
|
||||||
case $input in
|
case $input in
|
||||||
[yY][eE][sS]|[yY])
|
[yY][eE][sS]|[yY])
|
||||||
echo "Yes"
|
#echo "Yes"
|
||||||
;;
|
;;
|
||||||
[nN][oO]|[nN])
|
[nN][oO]|[nN])
|
||||||
echo -e "No"
|
#echo -e "No"
|
||||||
read -r -p "Enter a new name: " YEAR
|
read -r -p "Enter a new name: " YEAR
|
||||||
if [[ -z "${YEAR}" ]]; then
|
if [[ -z "${YEAR}" ]]; then
|
||||||
echo "Invalid input..."
|
echo "Invalid input..."
|
||||||
@ -286,7 +284,7 @@ setFinalData(){
|
|||||||
fi
|
fi
|
||||||
case $input in
|
case $input in
|
||||||
[yY][eE][sS]|[yY])
|
[yY][eE][sS]|[yY])
|
||||||
PERFORMER_ALBUM="Various Artist"
|
PERFORMER_ALBUM="Various Artists"
|
||||||
;;
|
;;
|
||||||
[nN][oO]|[nN])
|
[nN][oO]|[nN])
|
||||||
PERFORMER_ALBUM=$PERFORMER
|
PERFORMER_ALBUM=$PERFORMER
|
||||||
@ -297,67 +295,66 @@ setFinalData(){
|
|||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
#Set track names
|
||||||
|
declare -a TEMP_TITLES
|
||||||
|
|
||||||
# Verificar si el archivo existe
|
|
||||||
if [[ ! -f "${CDDBDATA}" ]]; then
|
if [[ ! -f "${CDDBDATA}" ]]; then
|
||||||
echo "El archivo no existe: ${CDDBDATA}"
|
echo "File does not existe: ${CDDBDATA}"
|
||||||
exit 1
|
touch ${CDDBDATA}
|
||||||
|
#exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Leer títulos del archivo
|
|
||||||
declare -a TEMP_TITLES
|
count=0
|
||||||
contador=0
|
|
||||||
|
|
||||||
while IFS= read -r linea; do
|
while IFS= read -r linea; do
|
||||||
if [[ "$linea" =~ ^TTITLE([0-9]+)=(.*)$ ]]; then
|
if [[ "$linea" =~ ^TTITLE([0-9]+)=(.*)$ ]]; then
|
||||||
numero="${BASH_REMATCH[1]}"
|
number="${BASH_REMATCH[1]}"
|
||||||
titulo="${BASH_REMATCH[2]}"
|
title="${BASH_REMATCH[2]}"
|
||||||
TEMP_TITLES[$contador]="$titulo"
|
TEMP_TITLES[$count]="$title"
|
||||||
contador=$((contador + 1))
|
count=$((count + 1))
|
||||||
fi
|
fi
|
||||||
done < "${CDDBDATA}"
|
done < "${CDDBDATA}"
|
||||||
|
TOTALTRACKS=$(ls -l *.wav|wc -l)
|
||||||
if [[ ${#TEMP_TITLES[@]} -eq 0 ]]; then
|
if [[ ${#TEMP_TITLES[@]} -eq 0 ]]; then
|
||||||
echo "No se encontraron títulos en el archivo."
|
echo "${CDDBDATA} is empty"
|
||||||
WAVFILES=(*.wav)
|
WAVFILES=(*.wav)
|
||||||
# Verificar si hay archivos .wav
|
if [[ -z ${TOTALTRACKS} ]]; then
|
||||||
if [[ ${#WAVFILES[@]} -eq 0 ]]; then
|
echo "There are no.wav files in folder ${VOLUME}/${RIP_DIR}/${PERFORMER}/${ALBUM_DIR}"
|
||||||
echo "No se encontraron archivos .wav en el directorio actual."
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
for WAVFILE in "${WAVFILES[@]}"; do
|
for ((i = 0; i < ${#WAVFILES[@]}; i++)); do
|
||||||
read -p "Asigna un título para el archivo '$WAVFILE': " titulo
|
WAVFILE="${WAVFILES[i]}"
|
||||||
TITLES+=("$titulo")
|
read -p "Set a tittle for '$WAVFILE': " title
|
||||||
|
TEMP_TITLES[i]="$title"
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
TITLES=("${TEMP_TITLES[@]}")
|
TITLES=("${TEMP_TITLES[@]}")
|
||||||
fi
|
fi
|
||||||
|
echo "Following titles found:"
|
||||||
# Mostrar títulos y preguntar si son correctos
|
|
||||||
echo "Se encontraron los siguientes títulos:"
|
|
||||||
for ((i = 0; i < ${#TEMP_TITLES[@]}; i++)); do
|
for ((i = 0; i < ${#TEMP_TITLES[@]}; i++)); do
|
||||||
echo "$((i + 1)): ${TEMP_TITLES[$i]}"
|
echo "$((i + 1)): ${TEMP_TITLES[$i]}"
|
||||||
done
|
done
|
||||||
|
|
||||||
read -p "¿Es correcta la información mostrada? (s/N) (Default n): " respuesta
|
read -p "¿Is this correct? (y/N) (Default n): " answer
|
||||||
|
|
||||||
if [[ "$respuesta" == "s" ]]; then
|
if [[ "$answer" == "y" ]]; then
|
||||||
TITLES=("${TEMP_TITLES[@]}")
|
TITLES=("${TEMP_TITLES[@]}")
|
||||||
else
|
else
|
||||||
for ((i = 0; i < ${#TEMP_TITLES[@]}; i++)); do
|
for ((i = 0; i < ${#TEMP_TITLES[@]}; i++)); do
|
||||||
read -p "¿Es correcto el título '${TEMP_TITLES[$i]}'? (s/n) (Default y): " subrespuesta
|
read -p "¿"${TEMP_TITLES[$i]}" is a valid track name? (y/n) (Default y): " subanswer
|
||||||
if [[ "$subrespuesta" == "n" ]]; then
|
if [[ "$subanswer" == "n" ]]; then
|
||||||
read -p "Introduce un nuevo valor para el título $((i + 1)): " nuevo_valor
|
read -p "Set a new title name $((i + 1)): " new_title
|
||||||
TITLES[$i]="$nuevo_valor"
|
TITLES[$i]="$new_title"
|
||||||
else
|
else
|
||||||
TITLES[$i]="${TEMP_TITLES[$i]}"
|
TITLES[$i]="${TEMP_TITLES[$i]}"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Lista final de títulos:"
|
echo "Final title's list:"
|
||||||
for titulo in "${TITLES[@]}"; do
|
for title in "${TITLES[@]}"; do
|
||||||
echo "$titulo"
|
echo "$title"
|
||||||
done
|
done
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -385,20 +382,50 @@ tagRipFiles(){
|
|||||||
count=$((count + 1))
|
count=$((count + 1))
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
downloadArt(){
|
downloadArt(){
|
||||||
SACAD_PERFORMER=\"${PERFORMER}\"
|
SACAD_PERFORMER=\"${PERFORMER}\"
|
||||||
SACAD_ALBUM_TITLE=\"${ALBUM_TITLE}\"
|
SACAD_ALBUM_TITLE=\"${ALBUM_TITLE}\"
|
||||||
sacad "${SACAD_PERFORMER}" "${SACAD_ALBUM_TITLE}" 500 "${VOLUME}/${RIP_DIR}/${PERFORMER}/${ALBUM_DIR}/AlbumArt.jpg"
|
sacad "${SACAD_PERFORMER}" "${SACAD_ALBUM_TITLE}" 500 "${VOLUME}/${RIP_DIR}/${PERFORMER}/${ALBUM_DIR}/AlbumArt.jpg"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
backup (){
|
||||||
|
DISCIMAGE_PATH="${VOLUME}/${DISCIMAGE_DIR}/${PERFORMER}/${ALBUM_DIR}"
|
||||||
|
mkdir -p "${DISCIMAGE_PATH}"
|
||||||
|
ISMIXEDCD=$(cd-info --no-device-info --no-cddb --no-header --no-joliet --no-rock-ridge --no-xa --no-analyze --no-disc-mode|grep data)
|
||||||
|
if [[ ! -z ${ISMIXEDCD} ]]; then
|
||||||
|
for session in 1 2 ; do
|
||||||
|
#--read-raw \
|
||||||
|
cdrdao read-cd \
|
||||||
|
--driver generic-mmc:0x20000 \
|
||||||
|
--paranoia-mode 0 \
|
||||||
|
--device /dev/cdrom \
|
||||||
|
--session $session \
|
||||||
|
--datafile "${DISCIMAGE_PATH}/data-$session.bin" "${DISCIMAGE_PATH}/data-$session.toc"
|
||||||
|
toc2cue "${DISCIMAGE_PATH}/data-$session.toc" "${DISCIMAGE_PATH}/data-$session.cue"
|
||||||
|
done
|
||||||
|
#
|
||||||
|
else
|
||||||
|
session=1
|
||||||
|
cdrdao read-cd \
|
||||||
|
--driver generic-mmc:0x20000 \
|
||||||
|
--paranoia-mode 0 \
|
||||||
|
--device /dev/cdrom \
|
||||||
|
--session $session \
|
||||||
|
--datafile "${DISCIMAGE_PATH}/data-$session.bin" "${DISCIMAGE_PATH}/data-$session.toc"
|
||||||
|
toc2cue "${DISCIMAGE_PATH}/data-$session.toc" "${DISCIMAGE_PATH}/data-$session.cue"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
ripDisc(){
|
ripDisc(){
|
||||||
if [ ! -d "${VOLUME}/${RIP_DIR}/${PERFORMER}/${ALBUM_DIR}" ] && [ ${RIP} = 's' ]; then
|
if [ ! -d "${VOLUME}/${RIP_DIR}/${PERFORMER}/${ALBUM_DIR}" ] && [ ${RIP} = 's' ]; then
|
||||||
mkdir -p "${VOLUME}/${RIP_DIR}/${PERFORMER}/${ALBUM_DIR}"
|
mkdir -p "${VOLUME}/${RIP_DIR}/${PERFORMER}/${ALBUM_DIR}"
|
||||||
fi
|
fi
|
||||||
cd "${VOLUME}/${RIP_DIR}/${PERFORMER}/${ALBUM_DIR}"
|
cd "${VOLUME}/${RIP_DIR}/${PERFORMER}/${ALBUM_DIR}"
|
||||||
#cdda2wav -vall cddb=0 -cddbp-server=gnudb.gnudb.org speed="$SPEED" -paranoia -B -D ${DEV}
|
#cdda2wav -vall cddb=0 -cddbp-server=gnudb.gnudb.org speed="$SPEED" -paranoia -B -D ${DEV}
|
||||||
cdda2wav -vall cddb=0 -cddbp-server=gnudb.gnudb.org speed="$SPEED" -B -D ${DEV}
|
icedax -max -vall cddb=0 -cddbp-server=gnudb.gnudb.org speed="$SPEED" -B -D ${DEV}
|
||||||
}
|
}
|
||||||
|
|
||||||
encode() {
|
encode() {
|
||||||
RIPDIR="${VOLUME}/${RIP_DIR}/${PERFORMER}/${ALBUM_DIR}"
|
RIPDIR="${VOLUME}/${RIP_DIR}/${PERFORMER}/${ALBUM_DIR}"
|
||||||
ENCDIR="${VOLUME}/${FLAC_DIR}/${PERFORMER}/${ALBUM_DIR}"
|
ENCDIR="${VOLUME}/${FLAC_DIR}/${PERFORMER}/${ALBUM_DIR}"
|
||||||
@ -432,8 +459,6 @@ encode() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#MAIN PROGRAM
|
#MAIN PROGRAM
|
||||||
if [ $# -lt 1 ]
|
if [ $# -lt 1 ]
|
||||||
then
|
then
|
||||||
@ -450,4 +475,7 @@ if [ ${ACTION} = 'r' ] || [ ${ACTION} = 'e' ]; then
|
|||||||
if [ ${ACTION} = 'e' ];then
|
if [ ${ACTION} = 'e' ];then
|
||||||
checkEncDir
|
checkEncDir
|
||||||
fi
|
fi
|
||||||
|
elif [ ${ACTION} = 'b' ];then
|
||||||
|
setInitialData
|
||||||
|
backup
|
||||||
fi
|
fi
|
||||||
Reference in New Issue
Block a user