#!/bin/bash shopt -s nullglob BASE_DIR="`~/bin/video/mediaPath`/YouTube" DIR="`basename "${1}"`" cd "${BASE_DIR}" for k in *; do if [ ! -d "${BASE_DIR}/${k}" ]; then continue fi if [ -n "${DIR}" ] && [ "${k}" != "${DIR}" ]; then continue fi cd "${BASE_DIR}/${k}" for i in S[0-9]*E[0-9]*.*; do s="`echo "${i}" | cut -d 'S' -f 2 | cut -d 'E' -f 1`" e="`echo "${i}" | cut -d 'E' -f 2 | cut -d ' ' -f 1`" ext="`echo "${i}" | awk -F '.' '{print $NF}'`" id="`echo "${i}" | sed 's%^S[0-9]*E[0-9]* - %%' | sed 's%\.'"${ext}"'$%%' | sed 's%-recode%%'`" # Duplicate by season/episode if [ `ls "S${s}E${e} - "*".${ext}" | wc -l` -gt 1 ]; then echo "Duplicate season/episode: ${k}/${i}" fi # Duplicate by ID if [ `ls S[0-9]*E[0-9]*" - ${id}.${ext}" | wc -l` -gt 1 ]; then echo "Duplicate id: ${k}/${i}" fi # Type-specific checks if [ "${ext}" == "nfo" ]; then # Missing video n="`echo "${i}" | sed 's%\.'"${ext}"'$%%'`" if [ `ls "${n}".* | grep -v "${i}" | wc -l` -ne 1 ]; then echo "Missing video: ${k}/${i}" fi else # Recode remnants if [ ${#ext} -gt 3 ] && [ "${i}" == "S${s}E${e} - ${id}.${ext}" ]; then MTIME=`stat -c '%Y' "${i}"` TIME=`date '+%s'` if [ $(( $TIME - $MTIME )) -gt 3600 ]; then echo "Deleting recode remnant: ${i}" rm -f -- "${i}" continue fi fi # Missing NFO n="`echo "${i}" | sed 's%\.'"${ext}"'$%.nfo%'`" if [ ! -r "${n}" ]; then echo "Missing NFO: ${k}/${i}" fi # Duplicate by type-id if [ `ls S[0-9]*E[0-9]*" - ${id}."* | grep -v '\.nfo$' | wc -l` -gt 1 ]; then echo "Duplicate video by type-id: ${k}/${i}" fi # 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}" # Automatically correct S0 drift if [ $s -eq 0 ]; then ~/bin/video/yt/s0rename.sh "S${s}E${e}" fi fi fi done done