60 lines
2 KiB
Bash
60 lines
2 KiB
Bash
#!/bin/bash
|
|
|
|
# doc import_track {
|
|
#
|
|
# DESCRIPTION
|
|
# import_track - Consolidates track of .import subdirectory in git repository
|
|
# in ARTIST--ALBUM--DISCNUMBER subfolder, to then import later. This is done
|
|
# to allow the possibility of importing tracks that are a part of the same
|
|
# album, but are found in different directories..
|
|
#
|
|
# USAGE
|
|
# import_track </path/to/git/dir> </path/to/track>
|
|
#
|
|
# DEPENDENCIES src/print_meta_flac
|
|
#
|
|
# }
|
|
|
|
import_track() {
|
|
local GIT_DIR="${1}"
|
|
local TRACK="${2}"
|
|
local DIR_NAME="$(dirname "${TRACK}")"
|
|
local SOURCE="FLAC"
|
|
|
|
# Cover image finder
|
|
local coverList=($(find "${DIR_NAME}"/ -maxdepth 1 \( -name '*.jpg' -o -name '*.png' \) -printf '%p\t'))
|
|
|
|
# Metadata parsing
|
|
local ARTIST=$(cut -d= -f2 <<< $(print_meta_flac ${TRACK} ARTIST))
|
|
local ALBUM=$(cut -d= -f2 <<< $(print_meta_flac ${TRACK} ALBUM))
|
|
local DISCNUMBER=$(cut -d= -f2 <<< $(print_meta_flac ${TRACK} DISCNUMBER))
|
|
local TRACKNUMBER=$(cut -d= -f2 <<< $(print_meta_flac ${TRACK} TRACKNUMBER))
|
|
|
|
# Setting TRACK_DIR
|
|
[[ -z "${DISCNUMBER}" ]] && local DISCNUMBER=1
|
|
local TRACK_DIR="${GIT_DIR}/.import/${ARTIST}--${ALBUM}--$(printf '%02d' ${DISCNUMBER})"
|
|
mkdir -p ${TRACK_DIR}
|
|
[[ ${EXIT} -eq 0 ]] || return 1
|
|
|
|
|
|
# Moving cover to TRACK_DIR
|
|
if [[ ${#coverList[@]} -eq 1 ]] && [[ ! -f "${TRACK_DIR}/folder.png" ]]; then
|
|
convert ${coverList[@]} "${TRACK_DIR}/folder.png"
|
|
fi
|
|
|
|
# Converting to FLAC if need me
|
|
local TRACK_EXT="$(echo "${TRACK}" | sed 's|.*\.||' | tr "[a-z]" "[A-Z]")"
|
|
if [[ "${TRACK_EXT}" != "FLAC" ]]; then
|
|
echo "Converting ${TRACK} to FLAC format"
|
|
med_convert flac ${TRACK}
|
|
local EXIT=$?
|
|
[[ ${EXIT} -eq 0 ]] || return 1
|
|
local SOURCE="${TRACK_EXT}"
|
|
fi
|
|
|
|
# Moving track to TRACK_DIR
|
|
echo "Moving ${TRACK} to ${TRACK_DIR}"
|
|
mv "${TRACK}" "${TRACK_DIR}/$(printf %02d ${TRACKNUMBER}).${SOURCE}.flac"
|
|
local EXIT=$?
|
|
[[ ${EXIT} -eq 0 ]] && return 0 || return 1
|
|
}
|