Explorar el Código

Make mkvRename a full-fledge exec

Zachary Kotlarek hace 8 años
padre
commit
492397b78e
Se han modificado 2 ficheros con 93 adiciones y 1 borrados
  1. 92 0
      mkvRename
  2. 1 1
      tvdup.sh

+ 92 - 0
mkvRename

@@ -0,0 +1,92 @@
+#!/bin/bash
+
+MIN_SIZE=$(( 100 * 1024 * 1024 ))
+INPUT="${1}"
+if [ -z "${INPUT}" ] || [ ! -r "${INPUT}" ]; then
+	echo "Invalid file: ${INPUT}" 1>&2
+	exit 1
+fi
+
+BASE="`echo "${INPUT}" | \
+	sed 's%\.mkv\.[a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9]$%.mkv%i' | \
+	sed 's%\-recode\.mkv$%.mkv%i' | \
+	sed 's%\.mkv$%%i' | \
+	sed 's%\.mp4$%%i' | \
+	sed 's%\.avi$%%i'`"
+if [ -z "${BASE}" ] || [ "${BASE}" == "${INPUT}" ]; then
+	echo "Unable to extract base name from: ${INPUT}" 1>&2
+	exit 1
+fi
+OUTPUT="${BASE}.mkv"
+
+OTHER=""
+DEL_OTHER=""
+RENAME_MKV=""
+for i in "${BASE}"*; do
+	if [ "${i}"  == "${OUTPUT}" ]; then
+		continue
+	fi
+	if [ ! -s "${i}" ]; then
+		echo "Removing empty file: ${i}"
+		rm -f "${i}"
+		continue
+	fi
+	if echo "${i}" | grep -Eq '\.avi$'; then
+		DEL_OTHER="${i}"
+	elif echo "${i}" | grep -Eq '\.mp4$'; then
+		DEL_OTHER="${i}"
+	fi
+	if echo "${i}" | grep -Eq '\-recode\.mkv$'; then
+		RENAME_MKV="${i}"
+	elif echo "${i}" | grep -Eiq '\.mkv\.[a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9]$'; then
+		RENAME_MKV="${i}"
+	fi
+	OTHER="${i}"
+done
+if [ -n "${DEL_OTHER}" ]; then
+	if [ `stat -c '%s' "${DEL_OTHER}"` -lt $MIN_SIZE ]; then
+		echo "File too small: ${DEL_OTHER}" 1>&2
+		DEL_OTHER=""
+	fi
+fi
+if [ -n "${RENAME_MKV}" ]; then
+	if [ `stat -c '%s' "${RENAME_MKV}"` -lt $MIN_SIZE ]; then
+		echo "File too small: ${RENAME_MKV}" 1>&2
+		RENAME_MKV=""
+	fi
+fi
+if [ -z "${DEL_OTHER}" ] && [ -z "${RENAME_MKV}" ]; then
+	echo "Unable to determine pair file for: ${INPUT}" 1>&2
+	exit 1
+fi
+
+if [ -n "${DEBUG}" ] && [ "${DEBUG}" != "0" ]; then
+	echo "Input: ${INPUT}"
+	echo "Base: ${BASE}"
+	ls "${BASE}"* 2>/dev/null
+	echo "Other: ${OTHER}"
+	echo "Output: ${OUTPUT}"
+	echo "Output exists: ${OUTPUT_EXISTS}"
+	echo "Delete other: ${DEL_OTHER}"
+	echo "Rename MKV: ${RENAME_MKV}"
+fi
+
+ACTION=0
+if [ -r "${RENAME_MKV}" ]; then
+	echo "Renaming MKV file ${RENAME_MKV} to ${OUTPUT}"
+	mv "${RENAME_MKV}" "${OUTPUT}"
+	ACTION=1
+fi
+if [ -r "${OUTPUT}" ] && [ -r "${DEL_OTHER}" ]; then
+	echo "Deleting non-MKV file: ${DEL_OTHER}"
+	rm -f "${DEL_OTHER}"
+	ACTION=1
+fi
+
+if [ $ACTION -le 0 ]; then
+	echo "Unable to determine action for: ${INPUT}" 1>&2
+	echo "Related files: `ls "${BASE}."* 2>/dev/null`"
+	exit 1
+fi
+
+exit 0

+ 1 - 1
tvdup.sh

@@ -58,7 +58,7 @@ while IFS= read -r -d '' lpath; do
 
 
 	# Use mkvRename (which protects against small files internally)
 	# Use mkvRename (which protects against small files internally)
 	sudo chattr -i "${id}"*
 	sudo chattr -i "${id}"*
-	mkvRename "${lpath}"
+	~/bin/video/mkvRename "${lpath}"
 
 
 	# Skip if we're down to one
 	# Skip if we're down to one
 	updateCount
 	updateCount