Просмотр исходного кода

Provide a looping method for daemon use

Zachary Kotlarek 14 лет назад
Родитель
Сommit
cf5e87f7d7
3 измененных файлов с 34 добавлено и 16 удалено
  1. 1 1
      plexMonitor-gui
  2. 1 1
      plexMonitor-playing
  3. 32 14
      plexMonitor.sh

+ 1 - 1
plexMonitor-gui

@@ -1 +1 @@
-plexMonitor
+plexMonitor.sh

+ 1 - 1
plexMonitor-playing

@@ -1 +1 @@
-plexMonitor
+plexMonitor.sh

+ 32 - 14
plexMonitor → plexMonitor.sh

@@ -4,12 +4,36 @@
 EXEC_DIR="${HOME}/bin/video"
 TEMP_DIR="`getconf DARWIN_USER_TEMP_DIR`"
 
+# Compare the current state to the last one
+compareState() {
+	CHANGED=1
+	"${EXEC_DIR}/${CMD}" > "${TEMP_FILE}" 2>/dev/null
+	if [ -r "${MODE}" ]; then
+		diff "${TEMP_FILE}" "${MODE}" > /dev/null
+		if [ $? -eq 0 ]; then
+			CHANGED=0
+		fi
+	fi
+
+	# If anything changed, note the update time and store the current state for future reference
+	if [ $CHANGED -gt 0 ]; then
+		date '+%s' > "${MODE}.lastUpdate"
+		mv "${TEMP_FILE}" "${MODE}"
+	fi
+}
+
 # Sanity check
 if [ ! -d "${EXEC_DIR}" ] || [ ! -d "${TEMP_DIR}" ]; then
 	echo "Bad config" 1>&2
 	exit 1
 fi
 
+# Allow use in daemon mode
+LOOP_DELAY=0
+if [ -n "${DAEMON}" ] && [ $DAEMON -gt 0 ]; then
+	LOOP_DELAY=$DAEMON
+fi
+
 # Determine who we are
 MODE="PLAYING"
 CMD="plex-playing"
@@ -28,22 +52,16 @@ if [ ! -d "${DATA_DIR}" ]; then
 fi
 cd "${DATA_DIR}"
 
-# Compare the current state to the last one
-CHANGED=1
-"${EXEC_DIR}/${CMD}" > "${TEMP_FILE}" 2>/dev/null
-if [ -r "${MODE}" ]; then
-	diff "${TEMP_FILE}" "${MODE}" > /dev/null
-	if [ $? -eq 0 ]; then
-		CHANGED=0
-	fi
-fi
+# Compare
+compareState
 
-# If anything changed, note the update time and store the current state for future reference
-if [ $CHANGED -gt 0 ]; then
-	date '+%s' > "${MODE}.lastUpdate"
-	mv "${TEMP_FILE}" "${MODE}"
-fi
+# Sleep and repeat (if requested)
+while [ $LOOP_DELAY -gt 0 ]; do
+	sleep $LOOP_DELAY
+	compareState
+done
 
 # Cleanup
 rm -f "${TEMP_FILE}"
 exit 0
+