1
0

Fix names with spaces

Signed-off-by: James Ketrenos <jketreno@media.ketrenos.com>
This commit is contained in:
James Ketrenos 2022-04-11 11:56:56 +00:00
parent 6c95fc0765
commit 3bb489b3ad

View File

@ -2,8 +2,12 @@
# Look into HW video encoding to vp9 instead of h264:
# https://www.reddit.com/r/VP9/comments/g9uzzv/hardware_encoding_vp9_on_intel/
log_file=""
fail() {
echo "$*" >&2
if [[ -e ${log_file} ]]; then
rm ${log_file}
fi
exit -1
}
@ -50,10 +54,16 @@ mstodate() {
function move {
base="$(dirname "${IN}")"
[ ! -d "${base}" ] && continue
base=/remote/media/backup/"${base}"
[ ! -d "${base}" ] && mkdir -p "${base}" || fail "Unable to mkdir '${base}'"
[ -e "${base}" ] && mv "${IN}" "${base}"/ || fail "Unable to move '$IN'"
if [ ! -d "${base}" ]; then
continue
fi
base=/multimedia/backup"${base}"
if [ ! -d "${base}" ]; then
mkdir -p "${base}" || fail "Unable to mkdir '${base}'"
fi
if [ -d "${base}" ]; then
mv "${IN}" "${base}"/ || fail "Unable to move '$IN'"
fi
}
function convert {
@ -61,13 +71,15 @@ function convert {
SRC_CODEC="$2"
FORMAT="$3"
OUT="${IN/%.???/.mkv}"
ORIG=${OUT}
IN="$(realpath "${IN}")"
OUT="$(realpath "${OUT}")"
ORIG="${OUT}"
if [[ "${OUT}" == "${IN}" ]]; then
OUT=${OUT/.mkv/.transcoded.mkv}
OUT="${OUT/.mkv/.transcoded.mkv}"
[ -e "${OUT}" ] && rm "${OUT}"
else
[ -e "${OUT}" ] && move && return 0
[ -e /remote/media/backup/"${OUT}" ] && return 0
[ -e /multimedia/backup/"${OUT}" ] && return 0
fi
TITLE="${IN%.*}"
@ -94,7 +106,7 @@ function convert {
-c copy
-vf vpp_qsv=format=nv12
-c:v h264_qsv
-global_quality 25
-global_quality 20
"
fi
@ -106,24 +118,23 @@ function convert {
STARTTIME=$(date +%s)
LASTTIME=${STARTTIME}
LASTPOS=0
IN=$(realpath "${IN}")
OUT=$(realpath "${OUT}")
DIN=$(dirname "${IN}")
DOUT=$(dirname "${OUT}")
DIN="$(dirname "${IN}")"
DOUT="$(dirname "${OUT}")"
quiet="
-v quiet
-loglevel fatal
-loglevel error
"
# quiet=""
log_file=$(mktemp)
{
docker run \
--device=/dev/dri \
--user=$(id -u) \
--rm \
${ADD_GROUPS} \
-v "${DIN}:${DIN}" \
-v "${DOUT}:${DOUT}" \
-v "${DIN}":"${DIN}" \
-v "${DOUT}":"${DOUT}" \
intel-media-ffmpeg \
ffmpeg \
${quiet} \
@ -135,22 +146,25 @@ function convert {
${output_flags} \
-movflags +faststart \
"${OUT}" \
-y || echo "ffmpeg failed"
-y || echo "FFMPEG failed" | tee ${log_file}
} | while read line; do
if [[ "${line}" == "ffmpeg failed" ]]; then
fail "FFMPEG failed"
cat ${log_file}
fail "Terminating"
false
exit -1
break
fi
POS=$(echo $line | sed -n 's/^frame=*\(.*\)/\1/p')
if [[ "${POS}" == "" ]]; then
true
continue
fi
NOW=$(date +%s)
ELAPSEDTIME=$(( NOW - LASTTIME ))
if (( ELAPSEDTIME <= 5 )); then
true
continue
fi
@ -174,6 +188,7 @@ function convert {
mv "${OUT}" "${IN}" || fail "Unable to mv '${OUT}' -> '${IN}'"
fi
}
rm ${log_file}
NOW=$(date +%s)
echo -e "\nCompleted in $(mstodate $(( NOW - STARTTIME ))000)"
}
@ -199,6 +214,8 @@ function check_and_convert {
}
if [ -z "$1" ]; then
find . -name '* *' -type d | while read file; do mv "${file}" "${file// /_}" || fail "Unable to rename dir ${file}"; done
find . -name '* *' -type f | while read file; do mv "${file}" "${file// /_}" || fail "Unable to rename file ${file}"; done
find . -type f \
-and -not -path "./backup/*" | sort | while read file; do
check_and_convert "${file}"
@ -208,3 +225,11 @@ else
check_and_convert "${file}"
done
fi
cat << EOF
To transfer the updated files:
rsync -avprlP --remove-source-files /multimedia/Downloads/ azurite:/multimedia/
find /multimedia/Downloads/ -type d -empty -delete
EOF