131 lines
4.3 KiB
Bash
131 lines
4.3 KiB
Bash
#!/bin/bash
|
|
|
|
# doc import_src {
|
|
#
|
|
# DESCRIPTION
|
|
# import_src - Imports source into git directory
|
|
#
|
|
# USAGE
|
|
# import_src </path/to/git/dir> </path/to/track/dir>
|
|
#
|
|
# DEPENDENCIES src/gen_mtag
|
|
#
|
|
# }
|
|
|
|
import_src() {
|
|
local GIT_DIR="${1}"
|
|
local TRACK_DIR="${2}"
|
|
[[ ${3} == "-b" ]] && local BATCHID="${4}"
|
|
local SOURCE=$(sed 's|.*.import/||' <<<${TRACK_DIR}| cut -d/ -f1)
|
|
local supportedsrcList=(FLAC CUETOOLS EAC)
|
|
|
|
# Checks if source supported
|
|
if ! _if_array_contains ${SOURCE} ${supportedsrcList[@]}; then return 1; fi
|
|
[[ ! -d "${TRACK_DIR}" ]] && return 2
|
|
|
|
|
|
local fileList=($(find ${TRACK_DIR} -maxdepth 1 -name '*.flac' -printf '%p\n' 2>/dev/null | sort))
|
|
|
|
# Join trackList
|
|
echo "Processing audio files"
|
|
case ${SOURCE} in
|
|
FLAC)
|
|
med_integrity ${fileList[@]} >${STDERR} 2>&1
|
|
[[ $? -eq 0 ]] || return 4
|
|
gen_image "${TRACK_DIR}/img.flac" $(printf "%s\t" ${fileList[@]})
|
|
local EXIT="$?"
|
|
[[ $? -eq 0 ]] || return 3
|
|
;;
|
|
CUETOOLS|EAC)
|
|
med_integrity "${TRACK_DIR}/img.flac" >${STDERR} 2>&1
|
|
[[ $? -eq 0 ]] || return 4
|
|
;;
|
|
esac
|
|
|
|
|
|
# Generates IMAGEID
|
|
echo "Generating IMAGEID"
|
|
local DISCID="${SOURCE}"
|
|
[[ "${SOURCE}" == "CUETOOLS" ]] && local DISCID=$(grep "CTDB TOCID:" ${TRACK_DIR}/img.accurip | cut -d' ' -f3 | sed 's|-]||')
|
|
[[ "${SOURCE}" == "EAC" ]] && local DISCID="$(grep "REM DISCID" ${TRACK_DIR}/img.cue | cut -d' ' -f3)"
|
|
local IMAGEID="SHA256-${DISCID}--$(sha256sum "${TRACK_DIR}/img.flac" | cut -d' ' -f1)"
|
|
|
|
# Generate addmetaList and trackmetaList
|
|
echo "Generating metadata"
|
|
case ${SOURCE} in
|
|
(FLAC)
|
|
local trackList=(${fileList[@]})
|
|
local addmetaList=($(gen_metatrack ${trackList[@]}))
|
|
local trackmetaList=($(print_meta_flac ${trackList[@]}))
|
|
;;
|
|
CUETOOLS|EAC)
|
|
local trackList=($(grep -o TRACK ${TRACK_DIR}/img.cue ))
|
|
local addmetaList=($(gen_metatrack -c "${TRACK_DIR}/img.cue" "${TRACK_DIR}/img.flac" ))
|
|
local trackmetaList=($(print_meta_cue ${TRACK_DIR}/img.cue))
|
|
;;
|
|
esac
|
|
local COUNT=0
|
|
|
|
# Conjoins trackmetaList and addmetaList into metadataList
|
|
while [[ ${COUNT} -lt ${#trackList[@]} ]]; do
|
|
local metadataList[${COUNT}]="${trackmetaList[${COUNT}]};${addmetaList[${COUNT}]};IMAGEID=${IMAGEID};"
|
|
[[ -n "${BATCHID}" ]] && local metadataList[${COUNT}]="${metadataList[${COUNT}]};BATCHID=${BATCHID};"
|
|
local COUNT=$(( ${COUNT} + 1 ))
|
|
done
|
|
|
|
# Generate cuesheet
|
|
echo "Generating cue file"
|
|
case ${SOURCE} in
|
|
FLAC)
|
|
gen_cue "${TRACK_DIR}" $(printf '%s\t' ${metadataList[@]}) > "${GIT_DIR}/${IMAGEID}.cue"
|
|
local EXIT=$?
|
|
;;
|
|
EAC|CUETOOLS)
|
|
awk "!/FILE/{print} /FILE/{print \"FILE ${IMAGEID}.flac WAVE\"}" "${TRACK_DIR}/img.cue" > "${GIT_DIR}/${IMAGEID}.cue"
|
|
local EXIT=$?
|
|
;;
|
|
esac
|
|
[[ $? -eq 0 ]] || return 4
|
|
|
|
# Generate tags file
|
|
echo "Generating tags file"
|
|
|
|
gen_mtag $(printf '%s\t' ${metadataList[@]}) > "${GIT_DIR}/${IMAGEID}.tags"
|
|
local EXIT=$?
|
|
[[ $? -eq 0 ]] || return 5
|
|
|
|
# Convert tags and cue to utf-8 with bom
|
|
local txtExtensionsList=(tags cue)
|
|
for txtExtensions in ${txtExtensionsList[@]}; do
|
|
local pathList=("${GIT_DIR}/${IMAGEID}.${txtExtensions}" ${pathList[@]})
|
|
done
|
|
fix_charset ${pathList[@]}
|
|
for path in ${pathList[@]}; do
|
|
iconv -t UTF-8//IGNORE "${path}" > "${path}.iconv"
|
|
mv "${path}.iconv" "${path}"
|
|
done
|
|
add_bom ${pathList[@]}
|
|
|
|
# Remove metadata and move img.flac to GIT_DIR
|
|
|
|
metaflac --remove-all --dont-use-padding "${TRACK_DIR}/img.flac"
|
|
cp "${TRACK_DIR}/img.flac" "${GIT_DIR}/${IMAGEID}.flac"
|
|
|
|
# Generate cover images
|
|
gen_cover "${TRACK_DIR}/img.png" > "${GIT_DIR}/${IMAGEID}.png"
|
|
gen_small_cover "${GIT_DIR}/${IMAGEID}.png" > "${GIT_DIR}/${IMAGEID}.jpg"
|
|
|
|
# Move misc files
|
|
echo "Moving misc files"
|
|
case ${SOURCE} in
|
|
EAC)
|
|
cp "${TRACK_DIR}/img.log" "${GIT_DIR}/${IMAGEID}.log"
|
|
;;
|
|
|
|
CUETOOLS)
|
|
cp "${TRACK_DIR}/img.log" "${GIT_DIR}/${IMAGEID}.log"
|
|
cp "${TRACK_DIR}/img.accurip" "${GIT_DIR}/${IMAGEID}.accurip"
|
|
;;
|
|
esac
|
|
return 0
|
|
}
|