Plex Media Server: Status/Anzahl Clients abfragen (mit Skript)

TGY

TGY

Aktives Mitglied
Thread Starter
Dabei seit
12.04.2004
Beiträge
1.129
Reaktionspunkte
104
Hallo.

Ich habe auf einem Mac mini den Plex Media Server laufen, der meine iTunes Bibliothek und meine Filme verwaltet & im LAN anbietet. Da mein Mac mini "Schlafprobleme" hat, habe ich ein Skript erstellt, das den mini unter bestimmten Bedingungen in den Ruhezustand zwingt.

Dafür muß das Skript vom Plex Media Server erfahren, ob aktuell Clients verbunden sind oder eine Streaming Session läuft.

Irgendwie bekomme ich das aber nicht hin. Mir ist nur die HTTP API bekannt (hier und hier). Mit der soll man angeblich die Anzahl verbundener Clients abfragen können, im Skript:

Code:
do shell script "curl 'http://localhost:32400/clients'"

Doch da bekomme ich keine sinnvolle Antwort (Habs auch direkt im Browser probiert).

Kennt ihr eine Methode, wie ich im Appleskript vom Plex Media Server die Anzahl aktuell verbundener Plex Clients erfahren kann oder ob eine Streaming Session aktiv ist?

Vielen Dank für eure Hilfe.

TGY
 
theNumberOfConnectedClients

Was bedeutet
bekomme keine sinnvolle Antwort
?

Normalerweise gibt die plex api XML zurück. Bei mir wird dies auch in Safari und Firefox angezeigt.
Mit "System Events" ist per AppleScript ein Zugriff auf die Werte eines XML Elements oder Attributes möglich.
Das XML enthält für jeden verbundenen Client ein Server Element und die Anzahl der Server Elemente steht im Attribut size des MediaContainer Elements.

Infos zu verbundenen Clients
http://127.0.0.1:32400/clients
http://127.0.0.1:32400/remote-clients //infos zu remote clients, wenn myplex aktiviert ist


Infos zu Sessions
- Authentifizierung nötig, sonst Fehler 403
- ich glaube um infos zu sessions über die http api erhalten zu können muss myplex aktiviert sein
- curl Aufruf muss mit username und password erfolgen, vermutlich die myplex account daten
http://127.0.0.1:32400/status/sessions/
http://127.0.0.1:32400/status/sessions/history/all


Code:
-- plex server version="0.9.7.28.33-f80a4a2"

set theNumberOfConnectedClients to numberOfConnectedClients("http://127.0.0.1:32400/clients")

on numberOfConnectedClients(plexServerURL)
	set theNumber to -1
	try
		set XMLData to do shell script "curl -s " & quoted form of plexServerURL
		tell application "System Events"
			set XMLData to make new XML data with data XMLData
			set theNumber to value of XML attribute "size" of XML element "MediaContainer" of XMLData
		end tell
	end try
	return theNumber as integer
end numberOfConnectedClients
 
Vielen Dank für die Antwort. "Keine sinnvolle Antwort" war ungenau (dem Frust geschuldet), meinte in dem Fall den Inhalt einer xml, die leer war. Plexpass benutze ich (noch) nicht. Diese Optionen fallen daher i.M. weg. Zudem bin ich nicht sicher, ob die Antwort über myplex auf meine Anfrage immer aktuell wäre, also wie schnell myplex merkt, ob ein Player noch/schon aktiv ist oder nicht. Wäre für mich wichtig, da mein Skript den Ruhezustand erzwingen soll. (Blöd, wenn schon oder noch ein Film läuft). Aber wie gesagt, myplex fällt i.M. weg.

Ich habe inzwischen noch ein wenig herumexperimentiert. Es scheint die Clients-Abfrage zeigt leider "nur" die Clients an, die steuerbar sind, also z.B. iOS-Geräte, auf denen die Plex-App gerade läuft. Mein Smart-TV, auf der auch eine Plex App läuft, taucht bei dieser Abfrage NIE auf. Sehr schade. Sonst wäre diese Abfrage perfekt für meine Zwecke.

Mir scheint, der (beste, weil) direkte Weg über eine Abfrage des Plex Media Servers ist unter meinen Bedingungen i.M. wohl nicht möglich. Vielleicht bekomme ich ja einen Workaround hin (über Messen des Traffics als Indiz für aktive Streaming Sessions oder etwas Ähnliches/Besseres). Danke trotzdem.
 
Zurück
Oben Unten