medialinter 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #!/bin/sh
  2. usage () {
  3. cat <<EOF>&2
  4. Usage: ${0##*/} FOLDER
  5. Print lints in mediafiles:
  6. - CBR audio
  7. - Less of more than 2 channels
  8. - Non-HD files
  9. - HD files without resolution in their names
  10. - Misspellings in subtitles (oe, \`, ´)
  11. - Embedded covers
  12. - Leading zeros in tags
  13. EOF
  14. }
  15. [ $# -eq 0 ] && usage && exit 1
  16. [ "$1" = "-h" ] && usage && exit
  17. [ "$1" = "--" ] && shift
  18. if ! command -v mediainfo >/dev/null 2>&1; then
  19. echo >&2 "mediainfo required."
  20. exit 1
  21. fi
  22. subtitle () {
  23. buffer=$(cat "$1")
  24. echo "$buffer" | grep -q "\`" && echo "$i: Misspelling (\`)"
  25. echo "$buffer" | grep -q "´" && echo "$i: Misspelling (´)"
  26. echo "$buffer" | grep -q "oe" && echo "$i: Misspelling (oe)"
  27. }
  28. media () {
  29. buffer=$(mediainfo "$1")
  30. echo "$buffer" | grep -q "Bit rate mode *: Constant" && echo "$i: CBR audio"
  31. echo "$buffer" | grep -q "Cover *: Yes" && echo "$i : Embedded cover(s)"
  32. echo "$buffer" | grep -q "Track name/Position *: 0+" && echo "$i: Leading zeros in tags"
  33. echo "$buffer" | grep -q "Channel(s) *: 1 channel" && echo "$i: Only 1 audio channel"
  34. echo "$buffer" | grep -q "Channel(s) *: (2[0-9]+|[013-9]+) channels" && echo "$i: More than 2 audio channels"
  35. width=$(echo "$buffer" | awk '/^Width *:/ {gsub(/[^0-9]/, ""); print; exit} ')
  36. if [ -n "$width" ]; then
  37. if [ "$width" -lt 1200 ]; then
  38. echo "$i: Non-HD"
  39. else
  40. echo "$i" | grep -q "\[720\]|\[1080\]" || echo "$i: HD file without resolution in filename"
  41. fi
  42. fi
  43. }
  44. for i ; do
  45. l=$(echo "$i" | awk '{print tolower($0)}')
  46. case "$l" in
  47. *.srt|*.sub|*.ass)
  48. subtitle "$i"
  49. exit ;;
  50. esac
  51. media "$i"
  52. done