plexMonitor 983 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #!/bin/bash
  2. # Config
  3. EXEC_DIR="${HOME}/bin/video"
  4. TEMP_DIR="`getconf DARWIN_USER_TEMP_DIR`"
  5. # Sanity check
  6. if [ ! -d "${EXEC_DIR}" ] || [ ! -d "${TEMP_DIR}" ]; then
  7. echo "Bad config" 1>&2
  8. exit 1
  9. fi
  10. # Determine who we are
  11. MODE="PLAYING"
  12. CMD="plex-playing"
  13. if basename "${0}" | grep -qi GUI; then
  14. MODE="GUI"
  15. CMD="plex-gui"
  16. fi
  17. # Construct our runtime paths
  18. DATA_DIR="${TEMP_DIR}/plexMonitor"
  19. TEMP_FILE="`mktemp -t plexMonitor.XXXXXXXX`"
  20. # Get into position
  21. if [ ! -d "${DATA_DIR}" ]; then
  22. mkdir -p "${DATA_DIR}"
  23. fi
  24. cd "${DATA_DIR}"
  25. # Compare the current state to the last one
  26. CHANGED=1
  27. "${EXEC_DIR}/${CMD}" > "${TEMP_FILE}" 2>/dev/null
  28. if [ -r "${MODE}" ]; then
  29. diff "${TEMP_FILE}" "${MODE}" > /dev/null
  30. if [ $? -eq 0 ]; then
  31. CHANGED=0
  32. fi
  33. fi
  34. # If anything changed, note the update time and store the current state for future reference
  35. if [ $CHANGED -gt 0 ]; then
  36. date '+%s' > "${MODE}.lastUpdate"
  37. mv "${TEMP_FILE}" "${MODE}"
  38. fi
  39. # Cleanup
  40. rm -f "${TEMP_FILE}"
  41. exit 0