ytDupCheck 1.6 KB

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