some functional changes

This commit is contained in:
2024-12-09 22:17:07 +01:00
parent 80d08fbd5e
commit d6e9f7c156
2 changed files with 79 additions and 51 deletions

View File

@ -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"

View File

@ -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