Zachary Kotlarek 14 лет назад
Родитель
Сommit
7370921c55

+ 1 - 1
plexMonitor/launchd/com.uberzach.plexMonitor.playing.plist

@@ -21,7 +21,7 @@
 	<key>ProgramArguments</key>
 	<array>
 		<string>/Users/tv/bin/video/plexMonitor/plexMonitor-playing</string>
-		<string>2</string>
+		<string>0.25</string>
 	</array>
 </dict>
 </plist>

+ 20 - 5
plexMonitor/plexMonitor.sh

@@ -1,7 +1,7 @@
 #!/bin/bash
 
 # Config
-EXEC_DIR="${HOME}/bin/video/plexMonitor"
+EXEC_DIR="${HOME}/bin/video"
 TEMP_DIR="`getconf DARWIN_USER_TEMP_DIR`"
 
 # Compare the current state to the last one
@@ -20,6 +20,19 @@ compareState() {
 		date '+%s' > "${MODE}.lastUpdate"
 		mv "${TEMP_FILE}" "${MODE}"
 	fi
+
+	# Special case for PLAYING mode -- it's a bit of a hack, but it saves a lot of code other places
+	if [ $CHANGED -gt 0 ] && [ "${MODE}" == "PLAYING" ]; then
+		LAST_PLAYING=$PLAYING
+		PLAYING=0
+		if grep -q 'PlayStatus\:Playing' "${MODE}"; then
+			PLAYING=1
+		fi
+		if [ -z "${LAST_PLAYING}" ] || [ $LAST_PLAYING -ne $PLAYING ]; then
+			echo $PLAYING > "PLAY_STATUS"
+			cp "${MODE}.lastUpdate" "PLAY_STATUS.lastUpdate"
+		fi
+	fi
 }
 
 # Sanity check
@@ -56,10 +69,12 @@ cd "${DATA_DIR}"
 compareState
 
 # Sleep and repeat (if requested)
-while [ $LOOP_DELAY -gt 0 ]; do
-	sleep $LOOP_DELAY
-	compareState
-done
+if [ -n "${LOOP_DELAY}" ]; then
+	while [ 1 ]; do
+		sleep $LOOP_DELAY
+		compareState
+	done
+fi
 
 # Cleanup
 rm -f "${TEMP_FILE}"