plex und fhem

Begonnen von justme1968, 27 Oktober 2015, 01:11:32

Vorheriges Thema - Nächstes Thema

Reinerlein

Hi Andre,

wie mache ich das denn?
Wenn ich ein "get .. ls" mache, erhalte ich ja diese Ergebnisfenster. In diesen ist nirgendwo ein Dateiname angegeben, sondern immer nur dieser Plex-Interne Key...

Was muss/kann ich denn dafür tun?

Grüße
Reiner

Reinerlein

Hi Andre,

wie fragst du denn den Plex-Server ab?
Ich habe mich mal kurz eingelesen, und wenn man eine URL wie die folgende zum Auflisten z.B. meines Movie-Folders verwendet, dann erhält man in der Ergebnis-Struktur direkt die Dateinamen des Bündels mit:

http://[PMS-IP]:32400/library/sections/3/all?X-Plex-Token=MyToken
3 => Meine Filme-Bereichs-ID

Die dort erhaltene Struktur enthält dann für jeden Filme-Eintrag (meistens) einen Part:

<Part id="45" key="/library/parts/45/1456347171/file.mkv" duration="6116811" file="/volume1/Video/HD/11.6 - The French Job 2013 1080p.mkv" size="5880365076" audioProfile="dts" container="mkv" videoProfile="high"/>

Wenn man das gleich mit in einer Ergebnisstruktur hätte, könnte ich direkt in der Liste nach dem Dateinamen suchen :)

Ist das bei deiner Methodik ähnlich?

Grüße
Reiner

justme1968

hallo reiner,

das abfragen geschieht im prinzip genau so. der server präsentiert den inhalt der media db als eine art directory struktur  an der man sich lang hangeln dann.

gibt einfach mal ein get <plex> ls 3 ein. jede key in der linken spalte der ausgabe kannst du dann an das 3 an hängen. also get <plex> ls 3/actor oder get <plex> ls 3/decade oder get <plex> ls 3/all oder ...
und so weiter.

hier gibt es auch ein by folder. ich bin davon ausgegangen das hier nicht nur die folder struktur beachtet wird, sondern auch der die aktuelle folder ebene mit zurück geliefert wird. das scheint aber nicht so zu sein. oder ich habe es übersehen.

es auch die möglichkeit nach bestimmten kriterien zu suchen. das geht über die keys die mit search beginnen.

wenn in einem ls der key in der linken spalte direkt mit einem / beginnt kann man ihn beim get ls direkt angeben oder ein get detail darauf machen.

es wird aber nur ein kleiner teil der informationen ausgegeben. im prinzip nur das was nötig ist um sich am baum von hand oder per klick entlang zu hangeln und einen titel zu starten.

die frage wäre jetzt was genau hast du vor :) möchtest du die komplette db auf ein mal in einer art dump?
das kann ich einbauen.

oder möchtest du die info zu einen bestimmten titel. dann könnte man über die search keys gehen.
dann würde ich den pfad zur get detail ausgabe hinzufügen.

gruss
  andre

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Reinerlein

Hi Andre,

naja... ich bräuchte ja irgendwie eine Liste mit <Pfad> -> <Key> Paaren, damit ich die von Plex nicht angebotene Suche nach Dateinamen abbilden kann.
Da das bei mir so einige Dateien sind, sollte man das einmal am Tag ermitteln, und irgendwo als Perl-Hash zum schnellen Verwenden ablegen :)

Die komplette DB als Dump wäre definitiv zu viel des Guten (zumindest für meine Belange). Da kommen sicherlich ein paar hundert MB zusammen...

So wie ich das gesehen habe, wird bereits auf der Auflistungsseite alles im XML mitgeliefert (aber nur, wenn man diese von mir beschriebene Webabfrage macht, bei UPnP über DLNA sind nur sehr wenige Informationen enthalten, deshalb meine Frage :) )

Das bedeutet, dass ich einmal am Tag diese Listen für Video und Serien abfragen würde, und mir die zwei Informationen in ein Hash legen würde. Anschließend kann man die Suche nach Pfaden ermöglichen, und mit dem damit ermittelten Key dann normal über das Modul das Gesehen-Flag setzen...

Hast du denn für deine Abfragen dieses X-Plex-Token bereits zur Verfügung? Dann wäre das ja einfach einbaubar :)
Notfalls würde es ja reichen, wenn du diesen Key als Get-Abfrage liefern kannst, dann kann ich die Funktionalität auch in eine eigene myUtils legen.
Ich könnte mir aber auch Vorstellen, dass es vielleicht auch andere gibt, die mal sorum suchen müssen...

Grüße
Reiner

justme1968

ohne das token könnte das modul so gut wie nichts tun :)

probier mal die angehängte version. die kennt zusätzlich zum ls kommando noch ein files kommando. hier wird zusätzlich noch der file name in klammern am ende jeder zeile ausgegeben.

alle anderen möglichkeiten sind gleich wie bei ls. es gehen also dinge wie:
get <plex> files 3/all
get <plex> files 3/search?type=1&query=French
get <plex> files 3/unwatched
get <plex> files /library/metadata/42390


gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Reinerlein

Hi Andre,

kann es sein, dass du die falsche Datei angehangen hast :)
Bei mir taucht das mit den Files nicht auf, und ein Blick in den Quelltext bringt da auch wenig...

Grüße
Reiner

justme1968

das file ist schon das richtige. das files kommando taucht aber beim get ? nicht mit auf.

das kommando solltest du in zeile 1580 finden.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Reinerlein

Hi Andre,

in die Falle getappt :)
Aber wenn ich den Befehl, wie von dir angegeben, ausführe, erhalte ich dasselbe Ergebnis wie bei ls.
Ich sehe keinerlei Dateinamen oder Pfade...

Ich erhalte allerdings ein leeres Fenster, wenn ich z.B.

get plex files 3/unwatched

angebe...

wenn ich es mit

get plex files 3
versuche, erhalte ich ein leeres Fenster und die normale Liste von "ls"...

Was mache ich denn falsch?

Noch was anderes: Kann man diese Ergebnisse eigentlich auch Maschinenlesbar erhalten? Für FhemWeb ist das ja super, aber zum weiterverarbeiten doch eher unpraktisch :)

Grüße
Reiner

justme1968

hallo reiner,

filenamen werden nur ausgegeben wenn du auch auf einer ebene bist die files kennt. bei get plex files 3 gibt es noch keine titel, also auch keine filenamen. get plex files 3/unwatched sollte aber hinter den titeln ganz rechts welche zeigen.

leere fenster sollte es nie geben. mach mal bitte einen screenshot. und bitte teste mal per telnet.

über das format reden wir wenn alles andere geht :) aber auch für alles andere ist es nicht ganz so schlimm wie es ausschaut. zwischen den spalten sind tabs, der key ist immer die erste spalte und der filename steht ganz am ende in klammern.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Reinerlein

Hi Andre,

ich habe mal einen Screenshot angehangen, denn ich mit Aufruf von "get plex files" und anschließendem durchklicken bis zu Recently Added erhalte.
Wenn ich die Fenster mit OK der Reihe nach schließe, sehe ich als "oberstes" Fenster ein leeres (2. Screenshot).

Bei Telnet:

fhem> get plex files
fhem>
Plex Library
Directory
key                                 type       title
3                                   movie      Filme
6                                   movie      Heimvideos
9                                   artist     Musik
7                                   movie      TV-Aufnahmen
2                                   show       TV-Serien

bzw.:

hem> get plex files 3/recentlyAdded
fhem>

Filme: Filme ; Recently Added
Video
key                                 type        nr title
/library/metadata/59694             movie          Guardians of the Galaxy (/volume1/Video/HD/Guardians of the Galaxy 2014 DTS-5.1 8Bit 1080p.mkv)
/library/metadata/59693             movie          Der Babadook (/volume1/Video/HD/Der Babadook 2014 DTS-5.1 8Bit 1080p.mkv)

Da tauchen die Dateinamen auf... scheint also ein Problem der Darstellung für Fhemweb zu sein.

Super, wenn man das gleich als Perl-Hash (z.B. per Dumper rausgeschrieben) bekommen könnte, könnte ich mit einem einfach Map meine Pfad -> Key Struktur bekommen, und damit meine Suche (bzw. das Ergebnis dazu) :)

Grüße
Reiner

justme1968

das liegt dararan das beim durcklicken die jeweiligen links noch fest mit ls statt dem tatsächlich verwendeten kommando (ls oder file) erzeugt werden. ich war noch am überlegen ob und wie ich das kommando für die linkerzeugung mit durchreichte.

wenn du in fhemweb ein get plex files 3/recentlyAdded direkt eingibst sollten im popup auch die files mit auftauchen.

das leere fenster verstehe ich allerdings nicht. das sollte es nicht geben.


um die daten direkt als hash zu bekommen ist es vermutlich das beste wenn ich dir eine plex_Data(<device>,<path>) routine einbaue statt über get zu gehen. das files kommando könnte man dann auch wieder raus schmeissen.

die frage wäre nur wie nah du an den original json daten die der plex server liefert sein willst. die könnte ich dir auch direkt zurück geben, dann müsstest du dich direkt durch hangeln und auch diverse sonderfälle selber berücksichtigen. oder du bekommst nur das was aktuell beim files kommando ausgegeben wird in einen hash gesteckt.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Reinerlein

Hi Andre,

das mit dem direkten Aufruf von "get plex files 3/recentlyAdded" über FhemWeb gibt nur das leere Fenster zurück, und sonst nix :( Ist aber ja auch gar nicht weiter wichtig :)

Zu der Datenstruktur: Im Prinzip das, was dir am Einfachsten erscheint...
Am liebsten (Wunschdenken) wäre mir eine Perlmethode, die genauso wie der get-Files-Befehl arbeitet, also die Sonderfälle u.ä. berücksichtigt, und mir gleich einen Perl-Hash zurückliefert:

{
  'PlexKey' => {'Title' => 'Hans im Glück', 'Cover' => 'Pfad zum Cover', 'Path' => 'filesystempath', ... },
  'PlexKey2' => {'Title' => 'Hans im Pech', 'Cover' => 'Pfad zum Cover', 'Path' => 'filesystempath', ... },
.
.
}

Wie hast du denn die Daten im Speicher vorliegen? nur als JSON? Oder bereits als (JSON-artigen) Hash?
Ich für meinen Teil bräuchte erstmal nur den PlexKey und den Path. Vielleicht kommt aber noch jemand anderes um die Ecke und möchte z.B. das MediaList-Modul aufbohren, und benötigt noch andere Infos wie Laufzeit oder so... Deswegen die Frage, wie einfach du welche Daten dort reinpacken kannst...

Schließlich kann das ja auch gleich das Ergebnis einer Suche mit mehreren Kriterien sein, oder eine in Plex gespeicherte Playlist und so weiter...

Grüße
Reiner

OppiM

#327
Hi,

seit dem 16.6. füllt sich mein Logfile mit Plex-Meldungen:

2017.06.27 11:51:43.228 2: Plex: unhandled websocket data: ?
2017.06.27 11:51:44.188 2: Plex: unhandled websocket data: ?
2017.06.27 11:51:53.228 2: Plex: unhandled websocket data: ?
2017.06.27 11:51:54.188 2: Plex: unhandled websocket data: ?
2017.06.27 11:52:03.228 2: Plex: unhandled websocket data: ?
2017.06.27 11:52:04.188 2: Plex: unhandled websocket data: ?
2017.06.27 11:52:13.228 2: Plex: unhandled websocket data: ?
2017.06.27 11:52:14.188 2: Plex: unhandled websocket data: ?
2017.06.27 11:52:23.248 2: Plex: unhandled websocket data: ?
2017.06.27 11:52:24.188 2: Plex: unhandled websocket data: ?
2017.06.27 11:52:33.228 2: Plex: unhandled websocket data: ?
2017.06.27 11:52:34.188 2: Plex: unhandled websocket data: ?
2017.06.27 11:52:43.229 2: Plex: unhandled websocket data: ?
2017.06.27 11:52:44.188 2: Plex: unhandled websocket data: ?
2017.06.27 11:52:53.229 2: Plex: unhandled websocket data: ?
2017.06.27 11:52:54.188 2: Plex: unhandled websocket data: ?
2017.06.27 11:53:03.229 2: Plex: unhandled websocket data: ?
2017.06.27 11:53:04.188 2: Plex: unhandled websocket data: ?
2017.06.27 11:53:13.229 2: Plex: unhandled websocket data: ?
2017.06.27 11:53:14.188 2: Plex: unhandled websocket data: ?
2017.06.27 11:53:23.229 2: Plex: unhandled websocket data: ?
2017.06.27 11:53:24.188 2: Plex: unhandled websocket data: ?
2017.06.27 11:53:33.820 2: Plex: unhandled websocket data: ?
2017.06.27 11:53:34.188 2: Plex: unhandled websocket data: ?
2017.06.27 11:53:43.229 2: Plex: unhandled websocket data: ?


So geht das im ca. 10 Sekundentakt weiter, bis heute über 160.000 Einträge!

Der Startpunkt müsste in etwa mit dem Einspielen des letzten Plex-Updates (plexmediaserver_1.7.3.3937-70f781325_amd64.deb) auf einem meiner Plex-Server (IP:192.168.1.41) zusammenhängen. Allerdings habe ich einen 2. Server auf meinem QNAP (IP:192.168.1.22) laufen, der die gleiche Version hat und scheinbar keine Probleme macht.

Hier noch das FHEM-Log bevor die Einträge anfingen und wo ich das Plex-Update eingespielt habe:

2017.06.16 11:31:07.423 3: Plex: notification websocket opened to 192.168.1.22
2017.06.16 11:31:07.428 3: Plex: notification websocket: Switching Protocols ok
2017.06.16 12:00:08.281 3: Plex: client discovered: 192.168.1.41
2017.06.16 12:07:19.359 3: Plex: client discovered: 192.168.1.22
2017.06.16 12:08:07.404 2: Plex: http request (http://192.168.1.41:32400/player/timeline/subscribe?protocol=http&port=35057&commandID=19) failed: read from http://192.168.1.41:32400 timed out
2017.06.16 12:08:07.411 3: Plex: client disappeared: 192.168.1.41
2017.06.16 12:11:01.341 3: Plex: notification websocket opened to 192.168.1.41
2017.06.16 12:11:01.401 3: Plex: notification websocket: Switching Protocols ok
2017.06.16 12:11:11.343 2: Plex: unhandled websocket data: ?
2017.06.16 12:11:21.343 2: Plex: unhandled websocket data: ?
2017.06.16 12:11:31.341 3: Plex: client discovered: 192.168.1.41
2017.06.16 12:11:31.344 2: Plex: unhandled websocket data: ?
2017.06.16 12:11:41.343 2: Plex: unhandled websocket data: ?
2017.06.16 12:11:51.343 2: Plex: unhandled websocket data: ?
2017.06.16 12:12:04.301 2: Plex: unhandled websocket data: ?
2017.06.16 12:12:24.306 3: Plex: notification websocket opened to 192.168.1.41
2017.06.16 12:12:24.308 3: Plex: notification websocket: Switching Protocols ok
2017.06.16 12:12:34.308 2: Plex: unhandled websocket data: ?
2017.06.16 12:12:44.308 2: Plex: unhandled websocket data: ?
2017.06.16 12:12:44.375 3: Plex: notification websocket opened to 192.168.1.22
2017.06.16 12:12:44.379 3: Plex: notification websocket: Switching Protocols ok
2017.06.16 12:12:54.308 2: Plex: unhandled websocket data: ?
2017.06.16 12:12:54.379 2: Plex: unhandled websocket data: ?
2017.06.16 12:13:07.301 2: Plex: unhandled websocket data: ?
2017.06.16 12:13:07.303 2: Plex: unhandled websocket data: ?
2017.06.16 12:13:14.308 2: Plex: unhandled websocket data: ?
2017.06.16 12:13:14.378 2: Plex: unhandled websocket data: ?
2017.06.16 12:13:24.309 2: Plex: unhandled websocket data: ?
2017.06.16 12:13:24.378 2: Plex: unhandled websocket data: ?
2017.06.16 12:13:34.309 2: Plex: unhandled websocket data: ?
2017.06.16 12:13:34.380 2: Plex: unhandled websocket data: ?
2017.06.16 12:13:44.309 2: Plex: unhandled websocket data: ?
2017.06.16 12:13:44.378 2: Plex: unhandled websocket data: ?
2017.06.16 12:13:54.309 2: Plex: unhandled websocket data: ?
2017.06.16 12:13:54.378 2: Plex: unhandled websocket data: ?
2017.06.16 12:14:04.309 2: Plex: unhandled websocket data: ?
2017.06.16 12:14:04.378 2: Plex: unhandled websocket data: ?
2017.06.16 12:14:14.309 2: Plex: unhandled websocket data: ?
2017.06.16 12:14:14.378 2: Plex: unhandled websocket data: ?
2017.06.16 12:14:24.309 2: Plex: unhandled websocket data: ?
2017.06.16 12:14:24.378 2: Plex: unhandled websocket data: ?
2017.06.16 12:14:34.309 2: Plex: unhandled websocket data: ?
2017.06.16 12:14:34.378 2: Plex: unhandled websocket data: ?
2017.06.16 12:14:44.309 2: Plex: unhandled websocket data: ?
2017.06.16 12:14:44.378 2: Plex: unhandled websocket data: ?
2017.06.16 12:14:54.309 2: Plex: unhandled websocket data: ?


Irgendein Tipp, wie ich das wegbekomme? So langsam wird das FHEM-Log etwas groß...

EDIT:
Ich hab jetzt mal testweise den 2. Server runtergefahren (um 12:04:00), dann halbieren sich die Einträge. Sobald er wieder hochgefahren ist, gibt es wieder 2. Eintrage:


2017.06.27 12:03:33.234 2: Plex: unhandled websocket data: ?
2017.06.27 12:03:34.184 2: Plex: unhandled websocket data: ?
2017.06.27 12:03:43.234 2: Plex: unhandled websocket data: ?
2017.06.27 12:03:44.184 2: Plex: unhandled websocket data: ?
2017.06.27 12:03:53.234 2: Plex: unhandled websocket data: ?
2017.06.27 12:04:03.596 2: Plex: unhandled websocket data: ?
2017.06.27 12:04:13.235 2: Plex: unhandled websocket data: ?
2017.06.27 12:04:23.235 2: Plex: unhandled websocket data: ?
2017.06.27 12:04:33.235 2: Plex: unhandled websocket data: ?
2017.06.27 12:04:43.235 2: Plex: unhandled websocket data: ?
2017.06.27 12:04:53.235 2: Plex: unhandled websocket data: ?
2017.06.27 12:04:53.961 3: Plex: notification websocket opened to 192.168.1.22
2017.06.27 12:04:53.969 3: Plex: notification websocket: Switching Protocols ok
2017.06.27 12:05:03.235 2: Plex: unhandled websocket data: ?
2017.06.27 12:05:06.528 2: Plex: unhandled websocket data: ?
2017.06.27 12:05:13.235 2: Plex: unhandled websocket data: ?
2017.06.27 12:05:13.968 2: Plex: unhandled websocket data: ?
2017.06.27 12:05:23.235 2: Plex: unhandled websocket data: ?
2017.06.27 12:05:23.969 2: Plex: unhandled websocket data: ?


Also scheint es beide Server mit der Version 1.7.3.3937 zu betreffen.

Gruß,
Michael

justme1968

mit verbose 1 sollten die meldungen weg sein.

kannst du bitte mal im modul die log meldung in zeile 4054 aktivieren und zeigen was dann geloggt wird?

danke
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

OppiM

Hi,

Das war diese Zeile, richtig?
Log 1, "$fin $op $mask $len";

nach der Änderung sieht das Log so aus:
2017.06.27 13:19:10.138 1: 1 9 0 1
2017.06.27 13:19:10.138 2: Plex: unhandled websocket data: ?
2017.06.27 13:19:13.541 1: 1 9 0 1
2017.06.27 13:19:13.541 2: Plex: unhandled websocket data: ?
2017.06.27 13:19:20.138 1: 1 9 0 1
2017.06.27 13:19:20.138 2: Plex: unhandled websocket data: ?
2017.06.27 13:19:23.541 1: 1 9 0 1
2017.06.27 13:19:23.541 2: Plex: unhandled websocket data: ?


Gruß,
Michael