dam/src/import_track
2018-05-18 18:37:51 -07:00

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
}