diff --git a/ReleaseNotes.txt b/ReleaseNotes.txt index c00d4c6..0723988 100644 --- a/ReleaseNotes.txt +++ b/ReleaseNotes.txt @@ -1,3 +1,12 @@ +------------------------------------------------------------------------------------------------------------------------------------ +Music Tools V 1.1.3 - A. GIBERT - 2026/09/13 +------------------------------------------------------------------------------------------------------------------------------------ + +- Add VSL support, +- Support now rx3-base 1.2.0. + + + ------------------------------------------------------------------------------------------------------------------------------------ Music Tools V 1.1.2 - A. GIBERT - 2026/09/02 ------------------------------------------------------------------------------------------------------------------------------------ diff --git a/SPECS/music_tools.spec b/SPECS/music_tools.spec index 259b3f1..6c3d4c7 100644 --- a/SPECS/music_tools.spec +++ b/SPECS/music_tools.spec @@ -25,7 +25,7 @@ %define name music_tools -%define version 1.1.2 +%define version 1.1.3 %define release %mkrel 1rx3 @@ -127,6 +127,9 @@ cp bin/* %{buildroot}%{_bindir} #----------------------------------------------------------------------------------------------------------------------------------- %changelog +* Sun Sep 13 2026 Arnaud G. GIBERT - 1.1.3-1rx3.mga9 +- Update to 1.1.3 release + * Wed Sep 2 2026 Arnaud G. GIBERT - 1.1.2-1rx3.mga9 - Update to 1.1.2 release diff --git a/bin/album_convert b/bin/album_convert index 6a48ef2..9698783 100755 --- a/bin/album_convert +++ b/bin/album_convert @@ -39,15 +39,16 @@ # Global Variables #----------------------------------------------------------------------------------------------------------------------------------- -declare -g VERSION="1.1.0" -declare -g NAME="album_convert" +declare -g VERSION="1.1.3" +declare -g NAME="Album_Convert" declare -g HELP="usage: [-h | --help] | [-V | --version] | [-T | --test] [-v | --verbose] [-r | --resample] [-d | --downsampled_tag] " declare -g RESAMPLE="FALSE" declare -g DSTAG="FLASE" declare -g SOURCE_DIR="" declare -g TARGET_DIR="" - + +declare -g EXIT_CODE=0 declare -g MODE="DEFAULT" declare -g VERBOSE="FALSE" declare -g DRY_RUN="FALSE" @@ -75,7 +76,6 @@ ac_version_print() ac_help_print() { - ac_version_print help_print } @@ -103,8 +103,8 @@ ac_args_parse() # Mode switches -T|--test) MODE="TEST"; shift;; - -h|--help) MODE="EXIT"; ac_help_print; shift;; - -V|--version) MODE="EXIT"; ac_version_print; shift;; + -h|--help) MODE="HELP"; shift;; + -V|--version) MODE="VERSION"; shift;; # Global options -v|--verbose) VERBOSE="TRUE"; shift;; @@ -117,7 +117,7 @@ ac_args_parse() esac done - if [[ "${MODE}" != "EXIT" ]] + if [[ "${MODE}" == "DEFAULT" ]] then if [[ "${#}" != "2" ]] then @@ -128,11 +128,11 @@ ac_args_parse() echo_error "Too many args!" fi - MODE="EXIT" - ac_help_print + MODE="HELP" + EXIT_CODE=1 else - SOURCE_DIR="$1" - TARGET_DIR="$2" + SOURCE_DIR="$1" + TARGET_DIR="$2" fi fi } @@ -145,19 +145,31 @@ ac_args_parse() # Main #----------------------------------------------------------------------------------------------------------------------------------- +vsl_add + ac_args_parse "$@" +case "${MODE}" in + "EXIT") + exit ${EXIT_CODE} + ;; + + "HELP") + ac_help_print + exit ${EXIT_CODE} + ;; -if [[ "${MODE}" == "EXIT" ]] -then - exit 0 -else - if [[ "${MODE}" == "TEST" ]] - then + "TEST") DRY_RUN="TRUE" - fi -fi + ;; + + "VERSION") + ac_version_print + exit ${EXIT_CODE} + ;; +esac + if [[ "${RESAMPLE}" == "TRUE" ]] then @@ -170,55 +182,59 @@ fi echo_error "${NAME}: Mode: [${MODE}] Verbose: [${VERBOSE}] Resample : [${RESAMPLE}] DownSampled_Tag : [${DSTAG}] Source_Dir: [${SOURCE_DIR}] Target_Dir: [${TARGET_DIR}]" + if [[ ! -d "${TARGET_DIR}" ]] then echo_error "Target directory doesn't exit !" - exit -1 -fi - -for file in "${SOURCE_DIR}"/*@(.flac|.ogg|.mp3|.m4a|.ape|.wav) -do - id="$(basename "${file}" | sed -e "s/-.*//")" - target_file="${TARGET_DIR}/$(basename "${file}" | sed -e 's/\.[^.]*$//').flac" - - cmd_exec ffmpeg -i "${file}" -compression_level 12 ${resample_flags} "${target_file}" -done -set -x -if [[ "${RESAMPLE}" == "TRUE" ]] -then - for file in "${TARGET_DIR}"/*.flac + EXIT_CODE=1 +else + for file in "${SOURCE_DIR}"/*@(.flac|.ogg|.mp3|.m4a|.ape|.wav) do - if [[ "${DSTAG}" == "TRUE" ]] - then - tag="DESCRIPTION" + id="$(basename "${file}" | sed -e "s/-.*//")" + target_file="${TARGET_DIR}/$(basename "${file}" | sed -e 's/\.[^.]*$//').flac" - value="$(mt_tag_read "${file}" "${tag}")" - - if [[ "$( echo "${value}" | grep "Downsampled")" == "" ]] - then - value="${value}\nDownsampled" - mt_tag_delete "${file}" "${tag}" - mt_tag_write "${file}" "${tag}" "${value}" - fi - fi - - for tag in "ALBUM" "TITLE" - do - value="$(mt_tag_read "${file}" "${tag}")" - new_value="$(echo ${value} | sed -e 's/ - HD$//')" - - if [[ "${value}" != "${new_value}" ]] - then - mt_tag_delete "${file}" "${tag}" - mt_tag_write "${file}" "${tag}" "${new_value}" - fi - done - - if [[ "${file}" != "${file/-hd.flac/.flac}" ]] - then - cmd_exec mv "${file}" "${file/-hd.flac/.flac}" - else - echo_error "No '-hd' renmaming needed..." - fi + cmd_exec ffmpeg -i "${file}" -compression_level 12 ${resample_flags} "${target_file}" done + + if [[ "${RESAMPLE}" == "TRUE" ]] + then + for file in "${TARGET_DIR}"/*.flac + do + if [[ "${DSTAG}" == "TRUE" ]] + then + tag="DESCRIPTION" + + value="$(mt_tag_read "${file}" "${tag}")" + + if [[ "$( echo "${value}" | grep "Downsampled")" == "" ]] + then + value="${value}\nDownsampled" + mt_tag_delete "${file}" "${tag}" + mt_tag_write "${file}" "${tag}" "${value}" + fi + fi + + for tag in "ALBUM" "TITLE" + do + value="$(mt_tag_read "${file}" "${tag}")" + new_value="$(echo ${value} | sed -e 's/ - HD$//')" + + if [[ "${value}" != "${new_value}" ]] + then + mt_tag_delete "${file}" "${tag}" + mt_tag_write "${file}" "${tag}" "${new_value}" + fi + done + + if [[ "${file}" != "${file/-hd.flac/.flac}" ]] + then + cmd_exec mv "${file}" "${file/-hd.flac/.flac}" + else + echo_error "No '-hd' renmaming needed..." + fi + done + fi fi + + +exit ${EXIT_CODE} diff --git a/bin/album_merge b/bin/album_merge index 7422a01..20d9401 100755 --- a/bin/album_merge +++ b/bin/album_merge @@ -39,18 +39,19 @@ # Global Variables #----------------------------------------------------------------------------------------------------------------------------------- -declare -g VERSION="1.1.0" -declare -g NAME="album_merge" -declare -g HELP="usage: [-h | --help] | [-V | --version] | [-T | --test] [-v | --verbose] " +declare -g VERSION="1.1.3" +declare -g NAME="Album_Merge" +declare -g HELP="usage: [-h | --help] | [-V | --version] | [-T | --test] [-v | --verbose] " declare -g SOURCE_DIR="" declare -g TARGET_DIR="" declare -g ALBUM_NAME="" -declare -g PREFIX="" +declare -g PREFIX="" -declare -g MODE="DEFAULT" -declare -g VERBOSE="FALSE" -declare -g DRY_RUN="FALSE" +declare -g EXIT_CODE=0 +declare -g MODE="DEFAULT" +declare -g VERBOSE="FALSE" +declare -g DRY_RUN="FALSE" @@ -75,7 +76,6 @@ am_version_print() am_help_print() { - am_version_print help_print } @@ -103,8 +103,8 @@ am_args_parse() # Mode switches -T|--test) MODE="TEST"; shift;; - -h|--help) MODE="EXIT"; am_help_print; shift;; - -V|--version) MODE="EXIT"; am_version_print; shift;; + -h|--help) MODE="HELP"; shift;; + -V|--version) MODE="VERSION"; shift;; # Global options -v|--verbose) VERBOSE="TRUE"; shift;; @@ -115,7 +115,7 @@ am_args_parse() esac done - if [[ "${MODE}" != "EXIT" ]] + if [[ "${MODE}" == "DEFAULT" ]] then if [[ "${#}" != "4" ]] then @@ -126,8 +126,8 @@ am_args_parse() echo_error "Too many args!" fi - MODE="EXIT" - am_help_print + MODE="HELP" + EXIT_CODE=1 else SOURCE_DIR="$1" TARGET_DIR="$2" @@ -145,24 +145,35 @@ am_args_parse() # Main #----------------------------------------------------------------------------------------------------------------------------------- +vsl_add + am_args_parse "$@" +case "${MODE}" in + "EXIT") + exit ${EXIT_CODE} + ;; + + "HELP") + am_help_print + exit ${EXIT_CODE} + ;; -if [[ ${MODE} == "EXIT" ]] -then - exit 0 -else - if [[ ${MODE} == "TEST" ]] - then + "TEST") DRY_RUN="TRUE" - fi -fi - + ;; + + "VERSION") + am_version_print + exit ${EXIT_CODE} + ;; +esac echo_error "${NAME}: Mode: [${MODE}] Verbose: [${VERBOSE}] Source_Dir: [${SOURCE_DIR}] Target_Dir: [${TARGET_DIR}] Album_Name: [${ALBUM_NAME}] Prefix: [${PREFIX}]" + for file in "${SOURCE_DIR}"/*@(.flac|.mp3) do id="$(basename $file | sed -e "s/-.*//")" @@ -175,3 +186,6 @@ do mt_tag_delete "${target_file}" "TRACKNUMBER" mt_tag_write "${target_file}" "TRACKNUMBER" "${PREFIX}${id}" done + + +exit ${EXIT_CODE} diff --git a/bin/album_metadata_load b/bin/album_metadata_load index 204103e..f7ffa5c 100755 --- a/bin/album_metadata_load +++ b/bin/album_metadata_load @@ -39,8 +39,8 @@ # Global Variables #----------------------------------------------------------------------------------------------------------------------------------- -declare -g VERSION="1.1.0" -declare -g NAME="album_metadata_load" +declare -g VERSION="1.1.3" +declare -g NAME="Album_MetaData_Load" declare -g HELP="usage: [-h | --help] | [-V | --version] | [-T | --test] [-v | --verbose] [-c | --clean] " declare -g CLEAN="FALSE" @@ -48,6 +48,7 @@ declare -g SOURCE_DIR="" declare -g TARGET_DIR="" declare -g METADATA_FILE="" +declare -g EXIT_CODE=0 declare -g MODE="DEFAULT" declare -g VERBOSE="FALSE" declare -g DRY_RUN="FALSE" @@ -75,7 +76,6 @@ aml_version_print() aml_help_print() { - aml_version_print help_print } @@ -103,8 +103,8 @@ aml_args_parse() # Mode switches -T|--test) MODE="TEST"; shift;; - -h|--help) MODE="EXIT"; aml_help_print; shift;; - -V|--version) MODE="EXIT"; aml_version_print; shift;; + -h|--help) MODE="HELP"; shift;; + -V|--version) MODE="VERSION"; shift;; # Global options -v|--verbose) VERBOSE="TRUE"; shift;; @@ -116,7 +116,7 @@ aml_args_parse() esac done - if [[ "${MODE}" != "EXIT" ]] + if [[ "${MODE}" == "DEFAULT" ]] then if [[ "${#}" != "3" ]] then @@ -127,8 +127,8 @@ aml_args_parse() echo_error "Too many args!" fi - MODE="EXIT" - aml_help_print + MODE="HELP" + EXIT_CODE=1 else SOURCE_DIR="$1" TARGET_DIR="$2" @@ -145,23 +145,35 @@ aml_args_parse() # Main #----------------------------------------------------------------------------------------------------------------------------------- +vsl_add + aml_args_parse "$@" +case "${MODE}" in + "EXIT") + exit ${EXIT_CODE} + ;; + + "HELP") + aml_help_print + exit ${EXIT_CODE} + ;; -if [[ "${MODE}" == "EXIT" ]] -then - exit 0 -else - if [[ "${MODE}" == "TEST" ]] - then + "TEST") DRY_RUN="TRUE" - fi -fi + ;; + + "VERSION") + aml_version_print + exit ${EXIT_CODE} + ;; +esac echo_error "${NAME}: Mode: [${MODE}] Verbose: [${VERBOSE}] Clean: [${CLEAN}] Source_Dir: [${SOURCE_DIR}] Target_Dir: [${TARGET_DIR}] MetaData_File: [${METADATA_FILE}]" + mt_tagtab_alloc echo_error "Reading MetaData..." @@ -197,3 +209,6 @@ find "${SOURCE_DIR}" -maxdepth 1 -name '*.flac' -o -name '*.mp3' | sort | track_id=$((${track_id} + 1)) done ) + + +exit ${EXIT_CODE} diff --git a/bin/album_metadata_save b/bin/album_metadata_save index 6c350db..ee29200 100755 --- a/bin/album_metadata_save +++ b/bin/album_metadata_save @@ -39,8 +39,8 @@ # Global Variables #----------------------------------------------------------------------------------------------------------------------------------- -declare -g VERSION="1.1.0" -declare -g NAME="album_metadata_save" +declare -g VERSION="1.1.3" +declare -g NAME="Album_MetaData_Save" declare -g HELP="usage: [-h | --help] | [-V | --version] | [-T | --test] [-v | --verbose] [-f | --factoring] [-s | --standardising] " declare -g FACTORING="FALSE" @@ -48,6 +48,7 @@ declare -g STANDARDISING="FALSE" declare -g SOURCE_DIR="" declare -g METADATA_FILE="" +declare -g EXIT_CODE=0 declare -g MODE="DEFAULT" declare -g VERBOSE="FALSE" declare -g DRY_RUN="FALSE" @@ -75,7 +76,6 @@ ams_version_print() ams_help_print() { - ams_version_print help_print } @@ -99,9 +99,9 @@ ams_args_parse() do case "$1" in # Mode switches - -T|--test) MODE="TEST"; shift;; - -h|--help) MODE="EXIT"; ams_help_print; shift;; - -V|--version) MODE="EXIT"; ams_version_print; shift;; + -T|--test) MODE="TEST"; shift;; + -h|--help) MODE="HELP"; shift;; + -V|--version) MODE="VERSION"; shift;; # Global options -v|--verbose) VERBOSE="TRUE"; shift;; @@ -114,7 +114,7 @@ ams_args_parse() esac done - if [[ "${MODE}" != "EXIT" ]] + if [[ "${MODE}" == "DEFAULT" ]] then if [[ "${#}" != "2" ]] then @@ -125,8 +125,8 @@ ams_args_parse() echo_error "Too many args!" fi - MODE="EXIT" - ams_help_print + MODE="HELP" + EXIT_CODE=1 else SOURCE_DIR="$1" METADATA_FILE="$2" @@ -142,23 +142,35 @@ ams_args_parse() # Main #----------------------------------------------------------------------------------------------------------------------------------- +vsl_add + ams_args_parse "$@" +case "${MODE}" in + "EXIT") + exit ${EXIT_CODE} + ;; + + "HELP") + ams_help_print + exit ${EXIT_CODE} + ;; -if [[ "${MODE}" == "EXIT" ]] -then - exit 0 -else - if [[ "${MODE}" == "TEST" ]] - then - DRY_RUN="TRUE" - fi -fi + "TEST") + DRY_RUN="TRUE" + ;; + + "VERSION") + ams_version_print + exit ${EXIT_CODE} + ;; +esac echo_error "${NAME}: Mode: [${MODE}] Verbose: [${VERBOSE}] Factoring: [${FACTORING}] Standardising: [${STANDARDISING}] Source_Dir: [${SOURCE_DIR}] MetaData_File: [${METADATA_FILE}]" + find "${SOURCE_DIR}" -maxdepth 1 -name '*.flac' -o -name '*.mp3' | sort | ( nb_track=0 @@ -221,3 +233,5 @@ find "${SOURCE_DIR}" -maxdepth 1 -name '*.flac' -o -name '*.mp3' | sort | fi ) + +exit ${EXIT_CODE} diff --git a/bin/album_name_fix b/bin/album_name_fix index 97015b6..65b7383 100755 --- a/bin/album_name_fix +++ b/bin/album_name_fix @@ -39,14 +39,15 @@ # Global Variables #----------------------------------------------------------------------------------------------------------------------------------- -declare -g VERSION="1.1.0" -declare -g NAME="album_name_fix " +declare -g VERSION="1.1.3" +declare -g NAME="Album_Name_Fix " declare -g HELP="usage: [-h | --help] | [-V | --version] | [-T | --test] [-v | --verbose] [-a ] [-p|--music_pattern ] [-s|--sed_substitute_pattern ]" declare -g ALBUM_DIR="." declare -g MUSIC_PATTERN="." declare -g SSP="" +declare -g EXIT_CODE=0 declare -g MODE="DEFAULT" declare -g VERBOSE="FALSE" declare -g DRY_RUN="FALSE" @@ -74,7 +75,6 @@ anf_version_print() anf_help_print() { - anf_version_print help_print } @@ -107,15 +107,15 @@ anf_args_parse() # Mode switches -T|--test) MODE="TEST"; shift;; - -h|--help) MODE="EXIT"; anf_help_print; shift;; - -V|--version) MODE="EXIT"; anf_version_print; shift;; + -h|--help) MODE="HELP"; shift;; + -V|--version) MODE="VERSION"; shift;; # Global options -v|--verbose) VERBOSE="TRUE"; shift;; # --) shift; break;; - *) echo "args_parse internal error [$1] !"; exit 1;; + *) echo "args_parse internal error [$1] !"; exit 1;; esac done } @@ -128,24 +128,35 @@ anf_args_parse() # Main #----------------------------------------------------------------------------------------------------------------------------------- +vsl_add + anf_args_parse "$@" +case "${MODE}" in + "EXIT") + exit ${EXIT_CODE} + ;; + + "HELP") + anf_help_print + exit ${EXIT_CODE} + ;; -if [[ ${MODE} == "EXIT" ]] -then - exit 0 -else - if [[ ${MODE} == "TEST" ]] - then + "TEST") DRY_RUN="TRUE" - fi -fi - + ;; + + "VERSION") + anf_version_print + exit ${EXIT_CODE} + ;; +esac echo_error "${NAME}: Mode: [${MODE}] Verbose: [${VERBOSE}] Album_Dir: [${ALBUM_DIR}] Music_Pattern: [${MUSIC_PATTERN}] Sed_Substitue_Pattern: [${SSP}]" + cd "${ALBUM_DIR}" IFS="\n" @@ -166,3 +177,6 @@ find . -maxdepth 1 -name '*.flac' -o -name '*.FLAC' -o -name '*.ogg' -o -name '* IFS="\n" done + + +exit ${EXIT_CODE} diff --git a/bin/album_rename b/bin/album_rename index bfc7ec4..b2979a8 100755 --- a/bin/album_rename +++ b/bin/album_rename @@ -39,14 +39,15 @@ # Global Variables #----------------------------------------------------------------------------------------------------------------------------------- -declare -g VERSION="1.1.0" -declare -g NAME="album_rename" +declare -g VERSION="1.1.3" +declare -g NAME="Album_Rename" declare -g HELP="usage: [-h | --help] | [-V | --version] | [-T | --test] [-v | --verbose] " declare -g SOURCE_DIR="" declare -g TARGET_DIR="" declare -g ALBUM_NAME="" +declare -g EXIT_CODE=0 declare -g MODE="DEFAULT" declare -g VERBOSE="FALSE" declare -g DRY_RUN="FALSE" @@ -74,7 +75,6 @@ ar_version_print() ar_help_print() { - ar_version_print help_print } @@ -102,8 +102,8 @@ ar_args_parse() # Mode switches -T|--test) MODE="TEST"; shift;; - -h|--help) MODE="EXIT"; ar_help_print; shift;; - -V|--version) MODE="EXIT"; ar_version_print; shift;; + -h|--help) MODE="HELP" ; shift;; + -V|--version) MODE="VERSION"; shift;; # Global options -v|--verbose) VERBOSE="TRUE"; shift;; @@ -114,7 +114,7 @@ ar_args_parse() esac done - if [[ "${MODE}" != "EXIT" ]] + if [[ "${MODE}" == "DEFAULT" ]] then if [[ "${#}" != "3" ]] then @@ -125,8 +125,8 @@ ar_args_parse() echo_error "Too many args!" fi - MODE="EXIT" - ar_help_print + MODE="HELP" + EXIT_CODE=1 else SOURCE_DIR="$1" TARGET_DIR="$2" @@ -143,35 +143,49 @@ ar_args_parse() # Main #----------------------------------------------------------------------------------------------------------------------------------- +vsl_add + ar_args_parse "$@" +case "${MODE}" in + "EXIT") + exit ${EXIT_CODE} + ;; + + "HELP") + ar_help_print + exit ${EXIT_CODE} + ;; -if [[ "${MODE}" == "EXIT" ]] -then - exit 0 -else - if [[ "${MODE}" == "TEST" ]] - then - DRY_RUN="TRUE" - fi -fi - + "TEST") + DRY_RUN="TRUE" + ;; + + "VERSION") + ar_version_print + exit ${EXIT_CODE} + ;; +esac echo_error "${NAME}: Mode: [${MODE}] Verbose: [${VERBOSE}] Source_Dir: [${SOURCE_DIR}] Target_Dir: [${TARGET_DIR}] Album_Name: [${ALBUM_NAME}]" + if [[ ! -d "${TARGET_DIR}" ]] then echo_error "Target directory doesn't exist!" - exit -1 + EXIT_CODE=1 +else + for file in "${SOURCE_DIR}"/*@(.flac|.mp3) + do + target_file="${TARGET_DIR}/$(basename "${file}")" + + cmd_exec cp "${file}" "${target_file}" + mt_tag_delete "${target_file}" "ALBUM" + mt_tag_write "${target_file}" "ALBUM" "${ALBUM_NAME}" + done fi -for file in "${SOURCE_DIR}"/*@(.flac|.mp3) -do - target_file="${TARGET_DIR}/$(basename "${file}")" - cmd_exec cp "${file}" "${target_file}" - mt_tag_delete "${target_file}" "ALBUM" - mt_tag_write "${target_file}" "ALBUM" "${ALBUM_NAME}" -done +exit ${EXIT_CODE} diff --git a/bin/album_renum b/bin/album_renum index eeefae7..3d93074 100755 --- a/bin/album_renum +++ b/bin/album_renum @@ -38,8 +38,8 @@ # Global Variables #----------------------------------------------------------------------------------------------------------------------------------- -declare -g VERSION="1.1.0" -declare -g NAME="album_renum" +declare -g VERSION="1.1.3" +declare -g NAME="Album_Renum" declare -g HELP="usage: [-h | --help] | [-V | --version] | [-T | --test] [-v | --verbose] [-f | --first_number ] [-d | --number_of_digit ] " declare -g SOURCE_DIR="" @@ -48,6 +48,7 @@ declare -g TARGET_DIR="" declare -g FIRST_NUMBER="1" declare -g NUMBER_OF_DIGIT="2" +declare -g EXIT_CODE=0 declare -g MODE="DEFAULT" declare -g VERBOSE="FALSE" declare -g DRY_RUN="FALSE" @@ -75,7 +76,6 @@ ar_version_print() ar_help_print() { - ar_version_print help_print } @@ -105,8 +105,8 @@ ar_args_parse() # Mode switches -T|--test) MODE="TEST"; shift;; - -h|--help) MODE="EXIT"; ar_help_print; shift;; - -V|--version) MODE="EXIT"; ar_version_print; shift;; + -h|--help) MODE="HELP"; shift;; + -V|--version) MODE="VERSION"; shift;; # Global options -v|--verbose) VERBOSE="TRUE"; shift;; @@ -117,7 +117,7 @@ ar_args_parse() esac done - if [[ "${MODE}" != "EXIT" ]] + if [[ "${MODE}" == "DEFAULT" ]] then if [[ "${#}" != "2" ]] then @@ -128,8 +128,8 @@ ar_args_parse() echo_error "Too many args!" fi - MODE="EXIT" - ar_help_print + MODE="HELP" + EXIT_CODE=1 else SOURCE_DIR="$1" TARGET_DIR="$2" @@ -145,43 +145,57 @@ ar_args_parse() # Main #----------------------------------------------------------------------------------------------------------------------------------- +vsl_add + ar_args_parse "$@" +case "${MODE}" in + "EXIT") + exit ${EXIT_CODE} + ;; + + "HELP") + ar_help_print + exit ${EXIT_CODE} + ;; -if [[ "${MODE}" == "EXIT" ]] -then - exit 0 -else - if [[ "${MODE}" == "TEST" ]] - then + "TEST") DRY_RUN="TRUE" - fi -fi - + ;; + + "VERSION") + ar_version_print + exit ${EXIT_CODE} + ;; +esac echo_error "${NAME}: Mode: [${MODE}] Verbose: [${VERBOSE}] Source_Dir: [${SOURCE_DIR}] Target_Dir: [${TARGET_DIR}] First_Number: [${FIRST_NUMBER}] Number_Of_Digit: [${NUMBER_OF_DIGIT}]" + if [[ ! -d "${TARGET_DIR}" ]] then echo_error "Target directory doesn't exist !" - exit -1 + EXIT_CODE=1 +else + i="${FIRST_NUMBER}" + + for file in "${SOURCE_DIR}"/*@(.flac|.mp3) + do + j=$(printf "%0${NUMBER_OF_DIGIT}d" "${i}") + target_file="${TARGET_DIR}/$(basename "${file}" | sed -e "s/^[0-9]*-/$j-/")" + + cmd_exec cp "${file}" "${target_file}" + + mt_tag_delete "${target_file}" "TRACKNUMBER" + mt_tag_delete "${target_file}" "DISCNUMBER" + mt_tag_delete "${target_file}" "DISCTOTAL" + mt_tag_write "${target_file}" "TRACKNUMBER" "${j}" + + i=$((i+1)) + done fi -i="${FIRST_NUMBER}" -for file in "${SOURCE_DIR}"/*@(.flac|.mp3) -do - j=$(printf "%0${NUMBER_OF_DIGIT}d" "${i}") - target_file="${TARGET_DIR}/$(basename "${file}" | sed -e "s/^[0-9]*-/$j-/")" - - cmd_exec cp "${file}" "${target_file}" - - mt_tag_delete "${target_file}" "TRACKNUMBER" - mt_tag_delete "${target_file}" "DISCNUMBER" - mt_tag_delete "${target_file}" "DISCTOTAL" - mt_tag_write "${target_file}" "TRACKNUMBER" "${j}" - - i=$((i+1)) -done +exit ${EXIT_CODE} diff --git a/bin/album_retitle b/bin/album_retitle index d13ffe7..c5e618b 100755 --- a/bin/album_retitle +++ b/bin/album_retitle @@ -39,14 +39,15 @@ # Global Variables #----------------------------------------------------------------------------------------------------------------------------------- -declare -g VERSION="1.1.0" -declare -g NAME="album_retitle" +declare -g VERSION="1.1.3" +declare -g NAME="Album_Retitle" declare -g HELP="usage: [-h | --help] | [-V | --version] | [-T | --test] [-v | --verbose] " declare -g SOURCE_DIR="" declare -g TARGET_DIR="" declare -g TITLE_FILE="" +declare -g EXIT_CODE=0 declare -g MODE="DEFAULT" declare -g VERBOSE="FALSE" declare -g DRY_RUN="FALSE" @@ -74,7 +75,6 @@ ar_version_print() ar_help_print() { - ar_version_print help_print } @@ -102,8 +102,8 @@ ar_args_parse() # Mode switches -T|--test) MODE="TEST"; shift;; - -h|--help) MODE="EXIT"; ar_help_print; shift;; - -V|--version) MODE="EXIT"; ar_version_print; shift;; + -h|--help) MODE="HELP"; shift;; + -V|--version) MODE="VERSION"; shift;; # Global options -v|--verbose) VERBOSE="TRUE"; shift;; @@ -114,7 +114,7 @@ ar_args_parse() esac done - if [[ "${MODE}" != "EXIT" ]] + if [[ "${MODE}" == "DEFAULT" ]] then if [[ "${#}" != "3" ]] then @@ -125,8 +125,8 @@ ar_args_parse() echo_error "Too many args!" fi - MODE="EXIT" - ar_help_print + MODE="HELP" + EXIT_CODE=1 else SOURCE_DIR="$1" TARGET_DIR="$2" @@ -142,53 +142,67 @@ ar_args_parse() # Main #----------------------------------------------------------------------------------------------------------------------------------- +vsl_add + ar_args_parse "$@" +case "${MODE}" in + "EXIT") + exit ${EXIT_CODE} + ;; + + "HELP") + ar_help_print + exit ${EXIT_CODE} + ;; -if [[ "${MODE}" == "EXIT" ]] -then - exit 0 -else - if [[ "${MODE}" == "TEST" ]] - then + "TEST") DRY_RUN="TRUE" - fi -fi - + ;; + + "VERSION") + ar_version_print + exit ${EXIT_CODE} + ;; +esac echo_error "${NAME}: Mode: [${MODE}] Verbose: [${VERBOSE}] Source_Dir: [${SOURCE_DIR}] Target_Dir: [${TARGET_DIR}] Title_File: [${TITLE_FILE}]" + if [[ ! -d "${TARGET_DIR}" ]] then echo_error "Target directory doesn't exist !" - exit -1 + EXIT_CODE=1 +else + if [[ ! -f "${TITLE_FILE}" ]] + then + echo_error "Title file doesn't exist !" + EXIT_CODE=1 + else + i=1 + + while read -r title + do + j=$(printf "%02d" "${i}") + file=("${SOURCE_DIR}"/${j}-*.@(.flac|.mp3)) + suffix="${file##*.}" + target_file="${TARGET_DIR}/$(mt_fix_file_name "${j}-${title}.${suffix}")" + + echo_error "${NAME}: [${file}] -> [${target_file}]" + + cmd_exec cp "${file}" "${target_file}" + + mt_tag_delete "${target_file}" "TRACKNUMBER" + mt_tag_delete "${target_file}" "TITLE" + mt_tag_write "${target_file}" "TRACKNUMBER" "${j}" + mt_tag_write "${target_file}" "TITLE" "${title}" + + i=$(( i + 1 )) + done < "${TITLE_FILE}" + fi fi -if [[ ! -f "${TITLE_FILE}" ]] -then - echo_error "Title file doesn't exist !" - exit -1 -fi -i=1 - -while read -r title -do - j=$(printf "%02d" "${i}") - file=("${SOURCE_DIR}"/${j}-*.@(.flac|.mp3)) - suffix="${file##*.}" - target_file="${TARGET_DIR}/$(mt_fix_file_name "${j}-${title}.${suffix}")" - - echo_error "${NAME}: [${file}] -> [${target_file}]" - - cmd_exec cp "${file}" "${target_file}" - - mt_tag_delete "${target_file}" "TRACKNUMBER" - mt_tag_delete "${target_file}" "TITLE" - mt_tag_write "${target_file}" "TRACKNUMBER" "${j}" - mt_tag_write "${target_file}" "TITLE" "${title}" - - i=$(( i + 1 )) -done < "${TITLE_FILE}" +exit ${EXIT_CODE} diff --git a/bin/album_seekpoint b/bin/album_seekpoint index b1ac2f4..dd5961b 100755 --- a/bin/album_seekpoint +++ b/bin/album_seekpoint @@ -37,14 +37,15 @@ # Global Variables #----------------------------------------------------------------------------------------------------------------------------------- -declare -g VERSION="1.1.0" -declare -g NAME="album_seekpoint" +declare -g VERSION="1.1.3" +declare -g NAME="Album_SeekPoint" declare -g HELP="usage: [-h | --help] | [-V | --version] | [-T | --test] [-v | --verbose] " declare -g SOURCE_DIR="" declare -g TARGET_DIR="" declare -g SEEK_POINT_DELAY="" +declare -g EXIT_CODE=0 declare -g MODE="DEFAULT" declare -g VERBOSE="FALSE" declare -g DRY_RUN="FALSE" @@ -72,7 +73,6 @@ as_version_print() as_help_print() { - as_version_print help_print } @@ -105,8 +105,8 @@ as_args_parse() # Mode switches -T|--test) MODE="TEST"; shift;; - -h|--help) MODE="EXIT"; as_help_print; shift;; - -V|--version) MODE="EXIT"; as_version_print; shift;; + -h|--help) MODE="HELP"; shift;; + -V|--version) MODE="VERSION"; shift;; # Global options -v|--verbose) VERBOSE="TRUE"; shift;; @@ -117,7 +117,7 @@ as_args_parse() esac done - if [[ "${MODE}" != "EXIT" ]] + if [[ "${MODE}" == "DEFAULT" ]] then if [[ "${#}" != "3" ]] then @@ -128,8 +128,8 @@ as_args_parse() echo_error "Too many args!" fi - MODE="EXIT" - as_help_print + MODE="HELP" + EXIT_CODE=1 else SOURCE_DIR="$1" TARGET_DIR="$2" @@ -146,39 +146,55 @@ as_args_parse() # Main #----------------------------------------------------------------------------------------------------------------------------------- +vsl_add + as_args_parse "$@" -if [[ "${MODE}" == "EXIT" ]] -then - exit 0 -else - if [[ "${MODE}" == "TEST" ]] - then +case "${MODE}" in + "EXIT") + exit ${EXIT_CODE} + ;; + + "HELP") + as_help_print + exit ${EXIT_CODE} + ;; + + "TEST") DRY_RUN="TRUE" - fi -fi + ;; + + "VERSION") + as_version_print + exit ${EXIT_CODE} + ;; +esac echo_error "${NAME}: Mode: [${MODE}] Verbose: [${VERBOSE}] Source_Dir: [${SOURCE_DIR}] Target_Dir: [${TARGET_DIR}] Seek_Point_Delay: [${SEEK_POINT_DELAY}]" + if [[ ! -d "${TARGET_DIR}" ]] then echo_error "Target directory doesn't exist!" - exit -1 + EXIT_CODE=1 +else + for file in "${SOURCE_DIR}"/*@(.flac) + do + id="$(basename "${file}" | sed -e "s/-.*//")" + target_file="${TARGET_DIR}/$(basename "${file}")" + + if [[ "${file}" != "${target_file}" ]] + then + cmd_exec cp "${file}" "${target_file}" + fi + + cmd_exec metaflac --remove --block-type=SEEKTABLE "${target_file}" + cmd_exec metaflac --add-seekpoint "${SEEK_POINT_DELAY}s" "${target_file}" + done fi -for file in "${SOURCE_DIR}"/*@(.flac) -do - id="$(basename "${file}" | sed -e "s/-.*//")" - target_file="${TARGET_DIR}/$(basename "${file}")" - if [[ "${file}" != "${target_file}" ]] - then - cmd_exec cp "${file}" "${target_file}" - fi - - cmd_exec metaflac --remove --block-type=SEEKTABLE "${target_file}" - cmd_exec metaflac --add-seekpoint "${SEEK_POINT_DELAY}s" "${target_file}" -done +exit ${EXIT_CODE} diff --git a/bin/music-info b/bin/music-info index 3d1f08b..e37f9ee 100755 --- a/bin/music-info +++ b/bin/music-info @@ -39,12 +39,14 @@ # Global Variables #----------------------------------------------------------------------------------------------------------------------------------- -declare -g VERSION="1.1.0" -declare -g NAME="music_info" +declare -g VERSION="1.1.3" +declare -g NAME="Music_Info" declare -g HELP="usage: [-h | --help] | [-V | --version] | [-l | --list] [-r | --root_dir ]" declare -g ROOT_DIR="/opt/music/src" + +declare -g EXIT_CODE=0 declare -g MODE="STATS" declare -g VERBOSE="FALSE" declare -g DRY_RUN="FALSE" @@ -72,7 +74,6 @@ mi_version_print() mi_help_print() { - mi_version_print help_print } @@ -101,8 +102,8 @@ mi_args_parse() # Mode switches -l|--list) MODE="LIST"; shift;; - -h|--help) MODE="EXIT"; mi_help_print; shift;; - -V|--version) MODE="EXIT"; mi_version_print; shift;; + -h|--help) MODE="HELP"; shift;; + -V|--version) MODE="VERSION"; shift;; # Global options -v|--verbose) VERBOSE="TRUE"; shift;; @@ -113,14 +114,14 @@ mi_args_parse() esac done - if [[ "${MODE}" != "EXIT" ]] + if [[ ( "${MODE}" == "STATS" ) || ( "${MODE}" == "LIST" ) ]] then if [[ "${#}" -gt "0" ]] then echo_error "Too many args!" - MODE="EXIT" - mi_help_print + MODE="HELP" + EXIT_CODE=1 fi fi } @@ -329,32 +330,47 @@ mi_list_print() # Main #----------------------------------------------------------------------------------------------------------------------------------- +vsl_add + mi_args_parse "$@" +case "${MODE}" in + "EXIT") + exit ${EXIT_CODE} + ;; + + "HELP") + mi_help_print + exit ${EXIT_CODE} + ;; -if [[ "${MODE}" == "EXIT" ]] -then - exit 0 -fi - + "VERSION") + mi_version_print + exit ${EXIT_CODE} + ;; +esac echo_error "${NAME}: Mode: [${MODE}] Verbose: [${VERBOSE}] Root_Dir: [${ROOT_DIR}]" + if [[ ! -d "${ROOT_DIR}" ]] then echo_error "Root directory doesn't exist !" - exit -1 + EXIT_CODE=1 +else + case "${MODE}" + in + STATS) + mi_stats_print + ;; + + LIST) + mi_list_print + ;; + esac fi -case "${MODE}" -in - STATS) - mi_stats_print - ;; - LIST) - mi_list_print - ;; -esac +exit ${EXIT_CODE} diff --git a/bin/music_check b/bin/music_check index ffd9597..d1e3237 100755 --- a/bin/music_check +++ b/bin/music_check @@ -39,12 +39,13 @@ # Global Variables #----------------------------------------------------------------------------------------------------------------------------------- -declare -g VERSION="1.1.0" -declare -g NAME="music_check" +declare -g VERSION="1.1.3" +declare -g NAME="Music_Check" declare -g HELP="usage: [-h | --help] | [-V | --version] | [-T | --test] [-v | --verbose] " declare -g SOURCE_DIR="" +declare -g EXIT_CODE=0 declare -g MODE="DEFAULT" declare -g VERBOSE="FALSE" declare -g DRY_RUN="FALSE" @@ -72,7 +73,6 @@ mc_version_print() mc_help_print() { - mc_version_print help_print } @@ -105,8 +105,8 @@ mc_args_parse() # Mode switches -T|--test) MODE="TEST"; shift;; - -h|--help) MODE="EXIT"; mc_help_print; shift;; - -V|--version) MODE="EXIT"; mc_version_print; shift;; + -h|--help) MODE="HELP"; shift;; + -V|--version) MODE="VERSION"; shift;; # Global options -v|--verbose) VERBOSE="TRUE"; shift;; @@ -117,7 +117,7 @@ mc_args_parse() esac done - if [[ "${MODE}" != "EXIT" ]] + if [[ "${MODE}" == "DEFAULT" ]] then if [[ "${#}" != "1" ]] then @@ -128,8 +128,8 @@ mc_args_parse() echo_error "Too many args!" fi - MODE="EXIT" - mc_help_print + MODE="HELP" + EXIT_CODE=1 else SOURCE_DIR="$1" fi @@ -144,40 +144,55 @@ mc_args_parse() # Main #----------------------------------------------------------------------------------------------------------------------------------- +vsl_add + mc_args_parse "$@" +case "${MODE}" in + "EXIT") + exit ${EXIT_CODE} + ;; + + "HELP") + mc_help_print + exit ${EXIT_CODE} + ;; -if [[ "${MODE}" == "EXIT" ]] -then - exit 0 -else - if [[ "${MODE}" == "TEST" ]] - then + "TEST") DRY_RUN="TRUE" - fi -fi + ;; + + "VERSION") + mc_version_print + exit ${EXIT_CODE} + ;; +esac echo_error "${NAME}: Mode: [${MODE}] Verbose: [${VERBOSE}] Source_Dir: [${SOURCE_DIR}]" + if [[ ! -d "${SOURCE_DIR}" ]] then echo_error "Source directory doesn't exist!" - exit -1 + EXIT_CODE=1 +else + i=1 + + find "${SOURCE_DIR}" -name '*.flac' -print0 | sort -z | while IFS= read -r -d '' file + do + echo_line "${file}: " "${i}" + cmd_exec flac --test "${file}" >/dev/null 2>&1 + if [[ $? -eq 0 ]] + then + echo "OK" + else + echo "KO" + fi + i=$((i+1)) + done fi -i=1 -find "${SOURCE_DIR}" -name '*.flac' -print0 | sort -z | while IFS= read -r -d '' file -do - echo_line "${file}: " "${i}" - cmd_exec flac --test "${file}" >/dev/null 2>&1 - if [[ $? -eq 0 ]] - then - echo "OK" - else - echo "KO" - fi - i=$((i+1)) -done +exit ${EXIT_CODE} diff --git a/bin/music_folder_make b/bin/music_folder_make index c1cb28b..4e6f905 100755 --- a/bin/music_folder_make +++ b/bin/music_folder_make @@ -39,13 +39,14 @@ # Global Variables #----------------------------------------------------------------------------------------------------------------------------------- -declare -g VERSION="1.1.0" -declare -g NAME="music_folder_make" +declare -g VERSION="1.1.3" +declare -g NAME="Music_Folder_Make" declare -g HELP="usage: [-h | --help] | [-V | --version] | [-T | --test] [-v | --verbose] [-p | --music_pattern ] [-r | --root_dir ]" declare -g ROOT_DIR="/opt/music/src" declare -g MUSIC_PATTERN="/" +declare -g EXIT_CODE=0 declare -g MODE="DEFAULT" declare -g VERBOSE="FALSE" declare -g DRY_RUN="FALSE" @@ -73,7 +74,6 @@ mfm_version_print() mfm_help_print() { - mfm_version_print help_print } @@ -103,8 +103,8 @@ mfm_args_parse() # Mode switches -T|--test) MODE="TEST"; shift;; - -h|--help) MODE="EXIT"; mfm_help_print; shift;; - -V|--version) MODE="EXIT"; mfm_version_print; shift;; + -h|--help) MODE="HELP"; shift;; + -V|--version) MODE="VERSION"; shift;; # Global options -v|--verbose) VERBOSE="TRUE"; shift;; @@ -124,71 +124,85 @@ mfm_args_parse() # Main #----------------------------------------------------------------------------------------------------------------------------------- +vsl_add + mfm_args_parse "$@" +case "${MODE}" in + "EXIT") + exit ${EXIT_CODE} + ;; + + "HELP") + mfm_help_print + exit ${EXIT_CODE} + ;; -if [[ "${MODE}" == "EXIT" ]] -then - exit 0 -else - if [[ "${MODE}" == "TEST" ]] - then + "TEST") DRY_RUN="TRUE" - fi -fi - + ;; + + "VERSION") + mfm_version_print + exit ${EXIT_CODE} + ;; +esac echo_error "${NAME}: Mode: [${MODE}] Verbose: [${VERBOSE}] Root_Dir: [${ROOT_DIR}] Music_Pattern: [${MUSIC_PATTERN}]" + if [[ ! -d "${ROOT_DIR}" ]] then echo_error "Root directory doesn't exist !" - exit -1 + EXIT_CODE=1 +else + i=1 + + while read -r dir + do + if [[ "$(basename "${dir}")" == "misc" ]] + then + echo_line "${dir}: Misc\r" "${i}" + else + src="" + dst="${dir}/folder.jpg" + + for file in "${dir}/cover-front" "${dir}/slipcase-front" "${dir}/box-front" + do + for suffix in png jpg + do + if [[ "${src}" == "" ]] + then + if [[ -f "${file}.${suffix}" ]] + then + src="${file}.${suffix}" + fi + fi + done + done + + if [[ "${src}" == "" ]] + then + echo_line "${dir}: BAD!\n" "${i}" + else + if [[ -f "${dst}" ]] && [[ -s "${dst}" ]] && [[ "${dst}" -nt "${src}" ]] + then + echo_line "${dir}: Skipping\r" "${i}" + else + echo_line "${dir}: Processing...\n" "${i}" + sh_exec "anytopnm \"${src}\" | pamscale -xyfit 1024 1024 | pnmtojpeg -quality=95 -optimize >\"${dst}\"" + fi + fi + fi + + i=$(( i + 1 )) + + done < <(find "${ROOT_DIR}" -type d -links 2 | grep -e "${MUSIC_PATTERN}" | grep -v -e "/video" -e "/photo" | sort) + + echo_line "" fi -i=1 -while read -r dir -do - if [[ "$(basename "${dir}")" == "misc" ]] - then - echo_line "${dir}: Misc\r" "${i}" - else - src="" - dst="${dir}/folder.jpg" - - for file in "${dir}/cover-front" "${dir}/slipcase-front" "${dir}/box-front" - do - for suffix in png jpg - do - if [[ "${src}" == "" ]] - then - if [[ -f "${file}.${suffix}" ]] - then - src="${file}.${suffix}" - fi - fi - done - done - - if [[ "${src}" == "" ]] - then - echo_line "${dir}: BAD!\n" "${i}" - else - if [[ -f "${dst}" ]] && [[ -s "${dst}" ]] && [[ "${dst}" -nt "${src}" ]] - then - echo_line "${dir}: Skipping\r" "${i}" - else - echo_line "${dir}: Processing...\n" "${i}" - sh_exec "anytopnm \"${src}\" | pamscale -xyfit 1024 1024 | pnmtojpeg -quality=95 -optimize >\"${dst}\"" - fi - fi - fi - - i=$(( i + 1 )) - -done < <(find "${ROOT_DIR}" -type d -links 2 | grep -e "${MUSIC_PATTERN}" | grep -v -e "/video" -e "/photo" | sort) - -echo_line "" +exit ${EXIT_CODE} diff --git a/bin/music_tag_cleanner b/bin/music_tag_cleanner index fa3a944..6a22819 100755 --- a/bin/music_tag_cleanner +++ b/bin/music_tag_cleanner @@ -39,8 +39,8 @@ # Global Variables #----------------------------------------------------------------------------------------------------------------------------------- -declare -g VERSION="1.1.0" -declare -g NAME="music_tag_cleaner" +declare -g VERSION="1.1.3" +declare -g NAME="Music_Tag_Cleaner" declare -g HELP="usage: [-h | --help] | [-V | --version] | [-T | --test] [-v | --verbose] [-f | --fix_missing_album_artist] [-a | --default_artist ] [-p | --music_pattern ] [-r | --root_dir ]" declare -g ROOT_DIR="/opt/music/src" @@ -48,6 +48,7 @@ declare -g MUSIC_PATTERN="/" declare -g DEFAULT_ARTIST="" declare -g FIX_MAA="FALSE" +declare -g EXIT_CODE=0 declare -g MODE="DEFAULT" declare -g VERBOSE="FALSE" declare -g DRY_RUN="FALSE" @@ -75,7 +76,6 @@ mtc_version_print() mtc_help_print() { - mtc_version_print help_print } @@ -106,8 +106,8 @@ mtc_args_parse() # Mode switches -T|--test) MODE="TEST"; shift;; - -h|--help) MODE="EXIT"; mtc_help_print; shift;; - -V|--version) MODE="EXIT"; mtc_version_print; shift;; + -h|--help) MODE="HELP"; shift;; + -V|--version) MODE="VERSION"; shift;; # Global options -f|--fix_missing_album_artist) FIX_MAA="TRUE"; shift;; @@ -128,108 +128,123 @@ mtc_args_parse() # Main #----------------------------------------------------------------------------------------------------------------------------------- +vsl_add + mtc_args_parse "$@" +case "${MODE}" in + "EXIT") + exit ${EXIT_CODE} + ;; + + "HELP") + mtc_help_print + exit ${EXIT_CODE} + ;; -if [[ "${MODE}" == "EXIT" ]] -then - exit 0 -else - if [[ "${MODE}" == "TEST" ]] - then + "TEST") DRY_RUN="TRUE" - fi -fi + ;; + + "VERSION") + mtc_version_print + exit ${EXIT_CODE} + ;; +esac echo_error "${NAME}: Mode: [${MODE}] Verbose: [${VERBOSE}] Root_Dir: [${ROOT_DIR}] Music_Pattern: [${MUSIC_PATTERN}] Fix_MAA: [${FIX_MAA}] Default_Artist: [${DEFAULT_ARTIST}]" + if [[ ! -d "${ROOT_DIR}" ]] then echo_error "Root directory doesn't exist !" - exit -1 + EXIT_CODE=1 +else + i=1 + + while read -r track_file + do + mt_tagtab_alloc + + mt_tagtab_read "0" "${track_file}" "DEFAULT" + + for tag in DISCTOTAL DISCNUMBER + do + if [[ "$(mt_tag_exist "${tag}")" != "" ]] + then + echo_line "${track_file}: Cleaning '${tag}' Tag...\n" "${i}" + mt_tag_delete "${track_file}" "${tag}" + fi + done + + if [[ "$(mt_tag_exist "ALBUM ARTIST")" != "" ]] + then + if [[ "$(mt_tag_exist "ALBUMARTIST")" == "" ]] + then + echo_line "${track_file}: Copying 'ALBUM ARTIST' into 'ALBUMARTIST' Tag...\n" "${i}" + + mt_tag_get album_artist 0 "ALBUM ARTIST" + mt_tag_write "${track_file}" "ALBUMARTIST" "${album_artist}" + fi + + echo_line "${track_file}: Cleaning 'ALBUM ARTIST' Tag...\n" "${i}" + mt_tag_delete "${track_file}" "ALBUM ARTIST" + else + if [[ "$(mt_tag_exist "ALBUMARTIST")" == "" ]] + then + echo_line "${track_file}: Missing 'ALBUMARTIST' and 'ALBUM ARTIST' Tag...\n" "${i}" + + if [[ "${FIX_MAA}" == "TRUE" ]] + then + artist="" + + if [[ "${DEFAULT_ARTIST}" != "" ]] + then + artist="${DEFAULT_ARTIST}" + else + album_type=$(mt_album_type_get "${track_file}") + + if [[ "/various_artists/tribute/original_soundtrack/child/" == */${album_type}/* ]] + then + artist="Various Artists" + else + if [[ "$(mt_tag_exist "ARTIST")" == "" ]] + then + echo_line "${track_file}: Warning: Missing 'ARTIST' Tag...\n" "${i}" + else + mt_tag_get artist 0 "ARTIST" + fi + fi + fi + + if [[ "${artist}" != "" ]] + then + echo_line "${track_file}: Copying '${artist}' into 'ALBUMARTIST' Tag...\n" "${i}" + mt_tag_write "${track_file}" "ALBUMARTIST" "${artist}" + fi + fi + fi + fi + + if [[ "${track_file##*.}" == "flac" ]] + then + if [[ "$(file "${track_file}" | grep ID3)" != "" ]] + then + echo_line "${track_file}: Cleaning Flac ID3 Tags...\n" "${i}" + mt_tag_all_delete "${track_file}" "id3" + fi + fi + + echo_line "${track_file}: OK\r" "${i}" + + i=$(( i + 1 )) + done < <(find "${ROOT_DIR}" \( -name '*.flac' -o -name '*.mp3' \) | grep -e "${MUSIC_PATTERN}" | sort) + + echo_line "" fi -i=1 -while read -r track_file -do - mt_tagtab_alloc - - mt_tagtab_read "0" "${track_file}" "DEFAULT" - - for tag in DISCTOTAL DISCNUMBER - do - if [[ "$(mt_tag_exist "${tag}")" != "" ]] - then - echo_line "${track_file}: Cleaning '${tag}' Tag...\n" "${i}" - mt_tag_delete "${track_file}" "${tag}" - fi - done - - if [[ "$(mt_tag_exist "ALBUM ARTIST")" != "" ]] - then - if [[ "$(mt_tag_exist "ALBUMARTIST")" == "" ]] - then - echo_line "${track_file}: Copying 'ALBUM ARTIST' into 'ALBUMARTIST' Tag...\n" "${i}" - - mt_tag_get album_artist 0 "ALBUM ARTIST" - mt_tag_write "${track_file}" "ALBUMARTIST" "${album_artist}" - fi - - echo_line "${track_file}: Cleaning 'ALBUM ARTIST' Tag...\n" "${i}" - mt_tag_delete "${track_file}" "ALBUM ARTIST" - else - if [[ "$(mt_tag_exist "ALBUMARTIST")" == "" ]] - then - echo_line "${track_file}: Missing 'ALBUMARTIST' and 'ALBUM ARTIST' Tag...\n" "${i}" - - if [[ "${FIX_MAA}" == "TRUE" ]] - then - artist="" - - if [[ "${DEFAULT_ARTIST}" != "" ]] - then - artist="${DEFAULT_ARTIST}" - else - album_type=$(mt_album_type_get "${track_file}") - - if [[ "/various_artists/tribute/original_soundtrack/child/" == */${album_type}/* ]] - then - artist="Various Artists" - else - if [[ "$(mt_tag_exist "ARTIST")" == "" ]] - then - echo_line "${track_file}: Warning: Missing 'ARTIST' Tag...\n" "${i}" - else - mt_tag_get artist 0 "ARTIST" - fi - fi - fi - - if [[ "${artist}" != "" ]] - then - echo_line "${track_file}: Copying '${artist}' into 'ALBUMARTIST' Tag...\n" "${i}" - mt_tag_write "${track_file}" "ALBUMARTIST" "${artist}" - fi - fi - fi - fi - - if [[ "${track_file##*.}" == "flac" ]] - then - if [[ "$(file "${track_file}" | grep ID3)" != "" ]] - then - echo_line "${track_file}: Cleaning Flac ID3 Tags...\n" "${i}" - mt_tag_all_delete "${track_file}" "id3" - fi - fi - - echo_line "${track_file}: OK\r" "${i}" - - i=$(( i + 1 )) -done < <(find "${ROOT_DIR}" \( -name '*.flac' -o -name '*.mp3' \) | grep -e "${MUSIC_PATTERN}" | sort) - -echo_line "" +exit ${EXIT_CODE} diff --git a/lib/rx3/music_tools.bash b/lib/rx3/music_tools.bash index 5713552..26a20c0 100644 --- a/lib/rx3/music_tools.bash +++ b/lib/rx3/music_tools.bash @@ -46,6 +46,9 @@ fi # Global Variable #----------------------------------------------------------------------------------------------------------------------------------- +declare LIB_NAME="Music" +declare LIB_VERSION="1.1.3" + declare -Ag MT_FLAC_2_MP3_TAB=( [TRACKNUMBER]=TRCK [TRACKTOTAL]=TRCK @@ -668,3 +671,13 @@ mt_album_type_get() fi done } + + + + + +#-------------------------------------------------------------------------------------------------------------------------- +# Main +#-------------------------------------------------------------------------------------------------------------------------- + +vsl_add