Browse Source

Attempt to self-correct S0 issues

Zachary Kotlarek 8 years ago
parent
commit
da1cccf46a
2 changed files with 86 additions and 0 deletions
  1. 85 0
      yt/s0rename.sh
  2. 1 0
      yt/ytDupCheck

+ 85 - 0
yt/s0rename.sh

@@ -0,0 +1,85 @@
+#!/bin/bash
+
+PREFIX="${1}"
+if [ -z "${PREFIX}" ]; then
+	echo "Usage: ${0} PREFIX" 1>&2
+	exit 1
+fi
+
+# Validate the prefix
+NUM="`echo "${PREFIX}" | sed 's%^S0E\(20[0-9]*\)$%\1%'`"
+if [ -z "${NUM}" ] || ! echo "${NUM}" | grep -Eq '^[0-9]+$'; then
+	echo "Invalid prefix: ${PREFIX}" 1>&2
+	exit 1
+fi
+
+# Find the NFO and MKV
+YTID=""
+shopt -s nullglob
+for i in "${PREFIX}"*; do
+	ID="`echo "${i}" | sed 's%^S0E[0-9]* - \(.*\)\.[mn][kf][vo]$%\1%'`"
+	if [ -z "${ID}" ]; then
+		echo "Invalid YTID for: ${i}" 1>&2
+		exit 1
+	fi
+	if [ -z "${YTID}" ]; then
+		YTID="${ID}"
+	elif [ "${ID}" != "${YTID}" ]; then
+		echo "Moving ${YTID}, leaving ${ID}" 1>&2
+		continue
+	fi
+
+	TYPE="`echo "${i}" | sed 's%^.*\.\([mn][kf][vo]\)$%\1%'`"
+	if [ -z "${TYPE}" ]; then
+		echo "Invalid file extension for: ${i}" 1>&2
+		exit 1
+	fi
+
+	if [ "${TYPE}" == "nfo" ]; then
+		NFO="${i}"
+	elif [ "${TYPE}" == "mkv" ]; then
+		MKV="${i}"
+	else
+		echo "Unknown file type for: ${i}" 1>&2
+		exit 1
+	fi
+done
+if [ -z "${MKV}" ] || [ -z "${NFO}" ]; then
+	echo "Unable to find an NFO/MKV set for: ${PREFIX}" 1>&2
+	exit 1
+fi
+
+function checkNew() {
+	if [ -z "${NUM_NEW}" ]; then
+		COUNT=0
+		for i in "S0E${1}"*; do
+			COUNT=$(( $COUNT + 1 ))
+		done
+		if [ $COUNT -eq 0 ]; then
+			NUM_NEW=$1
+		fi
+	fi
+}
+
+# Find a new file name
+NUM_NEW=""
+checkNew $(( NUM + 1 ))
+checkNew $(( NUM - 1 ))
+checkNew $(( NUM + 2 ))
+checkNew $(( NUM - 2 ))
+checkNew $(( NUM + 3 ))
+checkNew $(( NUM - 3 ))
+if [ -z "${NUM_NEW}" ]; then
+	echo "Unable to find new number for: ${PREFIX}" 1>&2
+	exit 1
+fi
+
+# Rename the files
+MKV_NEW="S0E${NUM_NEW} - ${YTID}.mkv"
+NFO_NEW="S0E${NUM_NEW} - ${YTID}.nfo"
+sudo chattr -i "${MKV}" "${NFO}" && \
+	mv -v "${MKV}" "${MKV_NEW}" && \
+	mv -v "${NFO}" "${NFO_NEW}"
+
+# Renumber the NFO
+sed -i 's%<episode>[0-9]*<\/episode>%<episode>'"${NUM_NEW}"'<\/episode>%' "${NFO_NEW}"

+ 1 - 0
yt/ytDupCheck

@@ -53,6 +53,7 @@ for k in *; do
 			# Duplicate by type-season
 			if [ `ls "S${s}E${e} - "*.* | grep -v '\.nfo$' | wc -l` -gt 1 ]; then
 				echo "Duplicate video by type-season: ${k}/${i}"
+				(cd "${k}" && ~/bin/video/s0rename.sh "${i}")
 			fi
 		fi
 	done