From d6e9f7c1560282b5f652b0cc9385ccb95fa05709 Mon Sep 17 00:00:00 2001 From: victor Date: Mon, 9 Dec 2024 22:17:07 +0100 Subject: [PATCH] some functional changes --- Dockerfile | 2 +- depFiles/ripCD.sh | 128 ++++++++++++++++++++++++++++------------------ 2 files changed, 79 insertions(+), 51 deletions(-) diff --git a/Dockerfile b/Dockerfile index be85ce4..32b265e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ FROM alpine:latest LABEL org.opencontainers.image.authors="victor@brutalix.org" 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 RUN python -m venv $VIRT_ENV ENV PATH="$VIRT_ENV/bin:$PATH" diff --git a/depFiles/ripCD.sh b/depFiles/ripCD.sh index ac56b23..5510df6 100755 --- a/depFiles/ripCD.sh +++ b/depFiles/ripCD.sh @@ -4,9 +4,12 @@ VOLUME=/tmp RIP_DIR=audio/RIP ALAC_DIR=ALAC FLAC_DIR=data/media/music +DISCIMAGE_DIR=audio/DISCIMAGE DEV=/dev/cdrom CDDB_URL="freedb.freac.org:/~cddb/cddb.cgi" +#CDDB_URL="gnudb.gnudb.org/~cddb/cddb.cgi" COMPILATION="" +ISMIXEDCD='' declare -a TITLES #FUNCTIONS checkRipDir(){ @@ -120,7 +123,7 @@ writeTOC(){ 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 COMPILATION='n' fi @@ -149,7 +152,6 @@ isCompilation(){ } setInitialData(){ - echo "COMPILATION: $COMPILATION" if [ "$CDDA" -eq 1 ]; then 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" | @@ -162,10 +164,6 @@ setInitialData(){ PERFORMER=$(echo "$ALBUMNAME" | awk -F' - ' '{print $1}') ALBUM_TITLE=$(echo "$ALBUMNAME" | awk -F' - ' '{print $2}') 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}') echo "Artist detected as: "${PERFORMER}"" read -r -p "Is correct: ? [Y/n] (default: Y) " input @@ -174,10 +172,10 @@ setInitialData(){ fi case $input in [yY][eE][sS]|[yY]) - echo "Yes" + #echo "Yes" ;; [nN][oO]|[nN]) - echo -e "No" + #echo -e "No" read -r -p "Enter a new name: " PERFORMER if [[ -z "${PERFORMER}" ]]; then echo "Invalid input..." @@ -199,10 +197,10 @@ setInitialData(){ fi case $input in [yY][eE][sS]|[yY]) - echo "Yes" + #echo "Yes" ;; [nN][oO]|[nN]) - echo -e "No" + #echo -e "No" read -r -p "Enter a new name: " ALBUM_TITLE if [[ -z "${ALBUM_TITLE}" ]]; then echo "Invalid input..." @@ -238,10 +236,10 @@ setFinalData(){ fi case $input in [yY][eE][sS]|[yY]) - echo "Yes" + #echo "Yes" ;; [nN][oO]|[nN]) - echo -e "No" + #echo -e "No" read -r -p "Enter a new name: " GENRE if [[ -z "${GENRE}" ]]; then echo "Invalid input..." @@ -263,10 +261,10 @@ setFinalData(){ fi case $input in [yY][eE][sS]|[yY]) - echo "Yes" + #echo "Yes" ;; [nN][oO]|[nN]) - echo -e "No" + #echo -e "No" read -r -p "Enter a new name: " YEAR if [[ -z "${YEAR}" ]]; then echo "Invalid input..." @@ -286,7 +284,7 @@ setFinalData(){ fi case $input in [yY][eE][sS]|[yY]) - PERFORMER_ALBUM="Various Artist" + PERFORMER_ALBUM="Various Artists" ;; [nN][oO]|[nN]) PERFORMER_ALBUM=$PERFORMER @@ -297,67 +295,66 @@ setFinalData(){ exit 1 ;; esac + #Set track names + declare -a TEMP_TITLES - # Verificar si el archivo existe if [[ ! -f "${CDDBDATA}" ]]; then - echo "El archivo no existe: ${CDDBDATA}" - exit 1 + echo "File does not existe: ${CDDBDATA}" + touch ${CDDBDATA} + #exit 1 fi - # Leer títulos del archivo - declare -a TEMP_TITLES - contador=0 + + count=0 while IFS= read -r linea; do if [[ "$linea" =~ ^TTITLE([0-9]+)=(.*)$ ]]; then - numero="${BASH_REMATCH[1]}" - titulo="${BASH_REMATCH[2]}" - TEMP_TITLES[$contador]="$titulo" - contador=$((contador + 1)) + number="${BASH_REMATCH[1]}" + title="${BASH_REMATCH[2]}" + TEMP_TITLES[$count]="$title" + count=$((count + 1)) fi done < "${CDDBDATA}" - + TOTALTRACKS=$(ls -l *.wav|wc -l) if [[ ${#TEMP_TITLES[@]} -eq 0 ]]; then - echo "No se encontraron títulos en el archivo." + echo "${CDDBDATA} is empty" WAVFILES=(*.wav) - # Verificar si hay archivos .wav - if [[ ${#WAVFILES[@]} -eq 0 ]]; then - echo "No se encontraron archivos .wav en el directorio actual." + if [[ -z ${TOTALTRACKS} ]]; then + echo "There are no.wav files in folder ${VOLUME}/${RIP_DIR}/${PERFORMER}/${ALBUM_DIR}" exit 1 fi - for WAVFILE in "${WAVFILES[@]}"; do - read -p "Asigna un título para el archivo '$WAVFILE': " titulo - TITLES+=("$titulo") + for ((i = 0; i < ${#WAVFILES[@]}; i++)); do + WAVFILE="${WAVFILES[i]}" + read -p "Set a tittle for '$WAVFILE': " title + TEMP_TITLES[i]="$title" done else TITLES=("${TEMP_TITLES[@]}") fi - - # Mostrar títulos y preguntar si son correctos - echo "Se encontraron los siguientes títulos:" + echo "Following titles found:" for ((i = 0; i < ${#TEMP_TITLES[@]}; i++)); do echo "$((i + 1)): ${TEMP_TITLES[$i]}" 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[@]}") else for ((i = 0; i < ${#TEMP_TITLES[@]}; i++)); do - read -p "¿Es correcto el título '${TEMP_TITLES[$i]}'? (s/n) (Default y): " subrespuesta - if [[ "$subrespuesta" == "n" ]]; then - read -p "Introduce un nuevo valor para el título $((i + 1)): " nuevo_valor - TITLES[$i]="$nuevo_valor" + read -p "¿"${TEMP_TITLES[$i]}" is a valid track name? (y/n) (Default y): " subanswer + if [[ "$subanswer" == "n" ]]; then + read -p "Set a new title name $((i + 1)): " new_title + TITLES[$i]="$new_title" else - TITLES[$i]="${TEMP_TITLES[$i]}" + TITLES[$i]="${TEMP_TITLES[$i]}" fi done fi - echo "Lista final de títulos:" - for titulo in "${TITLES[@]}"; do - echo "$titulo" + echo "Final title's list:" + for title in "${TITLES[@]}"; do + echo "$title" done } @@ -385,20 +382,50 @@ tagRipFiles(){ count=$((count + 1)) done } + downloadArt(){ SACAD_PERFORMER=\"${PERFORMER}\" SACAD_ALBUM_TITLE=\"${ALBUM_TITLE}\" 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(){ if [ ! -d "${VOLUME}/${RIP_DIR}/${PERFORMER}/${ALBUM_DIR}" ] && [ ${RIP} = 's' ]; then mkdir -p "${VOLUME}/${RIP_DIR}/${PERFORMER}/${ALBUM_DIR}" fi 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" -B -D ${DEV} + icedax -max -vall cddb=0 -cddbp-server=gnudb.gnudb.org speed="$SPEED" -B -D ${DEV} } + encode() { RIPDIR="${VOLUME}/${RIP_DIR}/${PERFORMER}/${ALBUM_DIR}" ENCDIR="${VOLUME}/${FLAC_DIR}/${PERFORMER}/${ALBUM_DIR}" @@ -432,8 +459,6 @@ encode() { done } - - #MAIN PROGRAM if [ $# -lt 1 ] then @@ -450,4 +475,7 @@ if [ ${ACTION} = 'r' ] || [ ${ACTION} = 'e' ]; then if [ ${ACTION} = 'e' ];then checkEncDir fi -fi +elif [ ${ACTION} = 'b' ];then + setInitialData + backup +fi \ No newline at end of file