2018-05-18 12:37:03 -07:00
|
|
|
#!/bin/bash
|
|
|
|
|
2018-07-12 17:04:57 -08:00
|
|
|
# doc import_src {
|
2018-05-18 12:37:03 -07:00
|
|
|
#
|
|
|
|
# DESCRIPTION
|
2018-07-12 17:04:57 -08:00
|
|
|
# import_src - Imports source into git directory
|
2018-05-18 12:37:03 -07:00
|
|
|
#
|
|
|
|
# USAGE
|
2018-07-12 17:04:57 -08:00
|
|
|
# import_src </path/to/git/dir> </path/to/track/dir>
|
2018-05-18 12:37:03 -07:00
|
|
|
#
|
2018-05-18 16:37:07 -07:00
|
|
|
# DEPENDENCIES src/gen_mtag
|
|
|
|
#
|
2018-05-18 12:37:03 -07:00
|
|
|
# }
|
|
|
|
|
2018-07-12 17:04:57 -08:00
|
|
|
import_src() {
|
2018-05-18 12:37:03 -07:00
|
|
|
local GIT_DIR="${1}"
|
|
|
|
local TRACK_DIR="${2}"
|
2018-07-27 05:24:18 -08:00
|
|
|
[[ ${3} == "-b" ]] && local BATCHID="${4}"
|
2018-07-16 04:52:20 -08:00
|
|
|
local SOURCE=$(sed 's|.*.import/||' <<<${TRACK_DIR}| cut -d/ -f1)
|
|
|
|
local supportedsrcList=(FLAC CUETOOLS EAC)
|
2018-07-12 17:04:57 -08:00
|
|
|
|
|
|
|
# Checks if source supported
|
|
|
|
if ! _if_array_contains ${SOURCE} ${supportedsrcList[@]}; then return 1; fi
|
2018-07-16 04:52:20 -08:00
|
|
|
[[ ! -d "${TRACK_DIR}" ]] && return 2
|
2018-07-12 17:04:57 -08:00
|
|
|
|
2018-05-18 12:37:03 -07:00
|
|
|
|
2018-12-27 22:36:36 -05:00
|
|
|
local fileList=($(find ${TRACK_DIR} -maxdepth 1 -name '*.flac' -printf '%p\n' 2>/dev/null | sort))
|
2018-07-23 04:58:40 -08:00
|
|
|
|
2018-05-18 16:37:07 -07:00
|
|
|
# Join trackList
|
2018-07-23 05:29:22 -08:00
|
|
|
echo "Processing audio files"
|
2018-07-22 20:13:33 -08:00
|
|
|
case ${SOURCE} in
|
2018-07-23 04:58:40 -08:00
|
|
|
FLAC)
|
2018-12-27 13:14:32 -05:00
|
|
|
med_integrity ${fileList[@]} >${STDERR} 2>&1
|
2018-12-26 20:56:27 -05:00
|
|
|
[[ $? -eq 0 ]] || return 4
|
2018-12-27 15:20:47 -05:00
|
|
|
gen_image "${TRACK_DIR}/img.flac" $(printf "%s\t" ${fileList[@]})
|
2018-07-22 20:13:33 -08:00
|
|
|
local EXIT="$?"
|
|
|
|
[[ $? -eq 0 ]] || return 3
|
|
|
|
;;
|
2018-12-26 20:56:27 -05:00
|
|
|
CUETOOLS|EAC)
|
2018-12-27 15:20:47 -05:00
|
|
|
med_integrity "${TRACK_DIR}/img.flac" >${STDERR} 2>&1
|
2018-12-26 20:56:27 -05:00
|
|
|
[[ $? -eq 0 ]] || return 4
|
|
|
|
;;
|
2018-07-22 20:13:33 -08:00
|
|
|
esac
|
2018-05-18 16:37:07 -07:00
|
|
|
|
|
|
|
|
|
|
|
# Generates IMAGEID
|
2018-07-12 17:04:57 -08:00
|
|
|
echo "Generating IMAGEID"
|
2018-07-16 04:59:31 -08:00
|
|
|
local DISCID="${SOURCE}"
|
2018-12-27 15:20:47 -05:00
|
|
|
[[ "${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)"
|
2018-05-18 16:37:07 -07:00
|
|
|
|
2018-07-22 20:13:33 -08:00
|
|
|
# Generate addmetaList and trackmetaList
|
2018-07-12 17:04:57 -08:00
|
|
|
echo "Generating metadata"
|
2018-07-22 20:13:33 -08:00
|
|
|
case ${SOURCE} in
|
|
|
|
(FLAC)
|
|
|
|
local trackList=(${fileList[@]})
|
|
|
|
local addmetaList=($(gen_metatrack ${trackList[@]}))
|
2018-07-23 05:29:22 -08:00
|
|
|
local trackmetaList=($(print_meta_flac ${trackList[@]}))
|
2018-07-22 20:13:33 -08:00
|
|
|
;;
|
|
|
|
CUETOOLS|EAC)
|
2018-12-27 15:26:39 -05:00
|
|
|
local trackList=($(grep -o TRACK ${TRACK_DIR}/img.cue ))
|
2018-12-27 15:20:47 -05:00
|
|
|
local addmetaList=($(gen_metatrack -c "${TRACK_DIR}/img.cue" "${TRACK_DIR}/img.flac" ))
|
|
|
|
local trackmetaList=($(print_meta_cue ${TRACK_DIR}/img.cue))
|
2018-07-22 20:13:33 -08:00
|
|
|
;;
|
|
|
|
esac
|
2018-05-18 16:37:07 -07:00
|
|
|
local COUNT=0
|
2018-07-22 20:13:33 -08:00
|
|
|
|
|
|
|
# Conjoins trackmetaList and addmetaList into metadataList
|
2018-07-23 04:58:40 -08:00
|
|
|
while [[ ${COUNT} -lt ${#trackList[@]} ]]; do
|
2018-12-27 15:37:41 -05:00
|
|
|
local metadataList[${COUNT}]="${trackmetaList[${COUNT}]};${addmetaList[${COUNT}]};IMAGEID=${IMAGEID};"
|
|
|
|
[[ -n "${BATCHID}" ]] && local metadataList[${COUNT}]="${metadataList[${COUNT}]};BATCHID=${BATCHID};"
|
2018-05-18 16:37:07 -07:00
|
|
|
local COUNT=$(( ${COUNT} + 1 ))
|
|
|
|
done
|
|
|
|
|
|
|
|
# Generate cuesheet
|
2018-07-12 17:04:57 -08:00
|
|
|
echo "Generating cue file"
|
2018-07-18 05:45:14 -08:00
|
|
|
case ${SOURCE} in
|
|
|
|
FLAC)
|
2018-07-22 20:13:33 -08:00
|
|
|
gen_cue "${TRACK_DIR}" $(printf '%s\t' ${metadataList[@]}) > "${GIT_DIR}/${IMAGEID}.cue"
|
2018-07-18 05:45:14 -08:00
|
|
|
local EXIT=$?
|
|
|
|
;;
|
|
|
|
EAC|CUETOOLS)
|
2018-12-27 15:20:47 -05:00
|
|
|
awk "!/FILE/{print} /FILE/{print \"FILE ${IMAGEID}.flac WAVE\"}" "${TRACK_DIR}/img.cue" > "${GIT_DIR}/${IMAGEID}.cue"
|
2018-07-18 05:45:14 -08:00
|
|
|
local EXIT=$?
|
|
|
|
;;
|
|
|
|
esac
|
2018-07-16 04:52:20 -08:00
|
|
|
[[ $? -eq 0 ]] || return 4
|
2018-05-18 12:37:03 -07:00
|
|
|
|
2018-05-18 16:37:07 -07:00
|
|
|
# Generate tags file
|
2018-07-22 20:13:33 -08:00
|
|
|
echo "Generating tags file"
|
|
|
|
|
|
|
|
gen_mtag $(printf '%s\t' ${metadataList[@]}) > "${GIT_DIR}/${IMAGEID}.tags"
|
2018-05-18 18:06:19 -07:00
|
|
|
local EXIT=$?
|
2018-07-16 04:52:20 -08:00
|
|
|
[[ $? -eq 0 ]] || return 5
|
2018-05-18 18:06:19 -07:00
|
|
|
|
2019-02-10 15:11:42 -05:00
|
|
|
# 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[@]}
|
2018-05-18 18:06:19 -07:00
|
|
|
|
2018-12-28 00:44:09 -05:00
|
|
|
# Remove metadata and move img.flac to GIT_DIR
|
|
|
|
|
|
|
|
metaflac --remove-all --dont-use-padding "${TRACK_DIR}/img.flac"
|
2018-12-27 15:20:47 -05:00
|
|
|
cp "${TRACK_DIR}/img.flac" "${GIT_DIR}/${IMAGEID}.flac"
|
2018-05-18 19:40:32 -07:00
|
|
|
|
|
|
|
# Generate cover images
|
2019-02-12 21:28:12 -05:00
|
|
|
gen_cover "${TRACK_DIR}/img.png" > "${GIT_DIR}/${IMAGEID}.png"
|
|
|
|
gen_small_cover "${GIT_DIR}/${IMAGEID}.png" > "${GIT_DIR}/${IMAGEID}.jpg"
|
2018-12-27 22:30:06 -05:00
|
|
|
|
|
|
|
# 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
|
2018-05-18 18:06:19 -07:00
|
|
|
return 0
|
2018-05-18 12:37:03 -07:00
|
|
|
}
|