| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #!/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
|