ytDupCheck 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #!/bin/bash
  2. shopt -s nullglob
  3. BASE_DIR="`~/bin/video/mediaPath`/YouTube"
  4. DIR="`basename "${1}"`"
  5. cd "${BASE_DIR}"
  6. for k in *; do
  7. if [ ! -d "${BASE_DIR}/${k}" ]; then
  8. continue
  9. fi
  10. if [ -n "${DIR}" ] && [ "${k}" != "${DIR}" ]; then
  11. continue
  12. fi
  13. cd "${BASE_DIR}/${k}"
  14. for i in S[0-9]*E[0-9]*.*; do
  15. s="`echo "${i}" | cut -d 'S' -f 2 | cut -d 'E' -f 1`"
  16. e="`echo "${i}" | cut -d 'E' -f 2 | cut -d ' ' -f 1`"
  17. ext="`echo "${i}" | awk -F '.' '{print $NF}'`"
  18. id="`echo "${i}" | sed 's%^S[0-9]*E[0-9]* - %%' | sed 's%\.'"${ext}"'$%%' | sed 's%-recode%%'`"
  19. # Duplicate by season/episode
  20. if [ `ls "S${s}E${e} - "*".${ext}" | wc -l` -gt 1 ]; then
  21. echo "Duplicate season/episode: ${k}/${i}"
  22. fi
  23. # Duplicate by ID
  24. if [ `ls S[0-9]*E[0-9]*" - ${id}.${ext}" | wc -l` -gt 1 ]; then
  25. echo "Duplicate id: ${k}/${i}"
  26. fi
  27. # Type-specific checks
  28. if [ "${ext}" == "nfo" ]; then
  29. # Missing video
  30. n="`echo "${i}" | sed 's%\.'"${ext}"'$%%'`"
  31. if [ `ls "${n}".* | grep -v "${i}" | wc -l` -ne 1 ]; then
  32. echo "Missing video: ${k}/${i}"
  33. fi
  34. else
  35. # Missing NFO
  36. n="`echo "${i}" | sed 's%\.'"${ext}"'$%.nfo%'`"
  37. if [ ! -r "${n}" ]; then
  38. echo "Missing NFO: ${k}/${i}"
  39. fi
  40. # Duplicate by type-id
  41. if [ `ls S[0-9]*E[0-9]*" - ${id}."* | grep -v '\.nfo$' | wc -l` -gt 1 ]; then
  42. echo "Duplicate video by type-id: ${k}/${i}"
  43. fi
  44. # Duplicate by type-season
  45. if [ `ls "S${s}E${e} - "*.* | grep -v '\.nfo$' | wc -l` -gt 1 ]; then
  46. echo "Duplicate video by type-season: ${k}/${i}"
  47. # Automatically correct S0 drift
  48. if [ $s -eq 0 ]; then
  49. (cd "${k}" && ~/bin/video/s0rename.sh "${i}")
  50. fi
  51. fi
  52. fi
  53. done
  54. done