2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-04 05:16:45 +00:00

37_plex.pm: ignore websocket keepalives

git-svn-id: https://svn.fhem.de/fhem/trunk@14601 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
justme-1968 2017-06-30 07:33:29 +00:00
parent 0015ac7284
commit 66172f24cb

View File

@ -828,7 +828,7 @@ plex_Set($$@)
if( $hash->{'myPlex-servers'}{Server} ) { if( $hash->{'myPlex-servers'}{Server} ) {
foreach my $entry (@{$hash->{'myPlex-servers'}{Server}}) { foreach my $entry (@{$hash->{'myPlex-servers'}{Server}}) {
if( $entry->{localAddresses} eq $params[0] || $entry->{machineIdentifier} eq $params[0] ) { if( $entry->{localAddresses} eq $params[0] || $entry->{machineIdentifier} eq $params[0] ) {
Log 1, Dumper $entry; #Log 1, Dumper $entry;
my $define = "$entry->{machineIdentifier} plex $entry->{address}"; my $define = "$entry->{machineIdentifier} plex $entry->{address}";
@ -1246,9 +1246,9 @@ plex_makeImage($$$$)
sub sub
plex_mediaList2($$$$) plex_mediaList2($$$$;$)
{ {
my ($hash, $type, $xml, $items) = @_; my ($hash, $type, $xml, $items, $cmd) = @_;
if( $items ) { if( $items ) {
if( 0 && !$xml->{sortAsc} ) { if( 0 && !$xml->{sortAsc} ) {
@ -1264,6 +1264,7 @@ plex_mediaList2($$$$)
my $ret; my $ret;
if( $type eq 'Directory' ) { if( $type eq 'Directory' ) {
#Log 1, Dumper $items;
$ret .= "\n" if( $ret ); $ret .= "\n" if( $ret );
$ret .= "$type\n"; $ret .= "$type\n";
$ret .= sprintf( "%-35s %-10s %s\n", 'key', 'type', 'title' ); $ret .= sprintf( "%-35s %-10s %s\n", 'key', 'type', 'title' );
@ -1302,12 +1303,16 @@ plex_mediaList2($$$$)
#$ret .= " ($item->{year})" if( $item->{year} ); #$ret .= " ($item->{year})" if( $item->{year} );
$ret .= sprintf(": S%02iE%02i",$item->{parentIndex}, $item->{index} ) if( $item->{parentIndex} ); $ret .= sprintf(": S%02iE%02i",$item->{parentIndex}, $item->{index} ) if( $item->{parentIndex} );
$ret .= ")" if( $item->{grandparentTitle} ); $ret .= ")" if( $item->{grandparentTitle} );
$ret .= "\n";
} else { } else {
$ret .= plex_makeLink($hash,'detail', $xml->{parentSection}, $item->{key}, sprintf( "%-35s %-10s %s\n", $item->{key}, $item->{type}, $item->{title} ) ); $ret .= plex_makeLink($hash,'detail', $xml->{parentSection}, $item->{key}, sprintf( "%-35s %-10s %s", $item->{key}, $item->{type}, $item->{title} ) );
}
} }
if( $cmd && $cmd eq 'files'
&& $item->{Media} && $item->{Media}[0]{Part} ) {
$ret .= " ($item->{Media}[0]{Part}[0]{file})";
}
$ret .= "\n";
}
} }
if( $type eq 'Track' ) { if( $type eq 'Track' ) {
@ -1324,9 +1329,9 @@ plex_mediaList2($$$$)
} }
sub sub
plex_mediaList($$$) plex_mediaList($$$;$)
{ {
my ($hash, $server, $xml) = @_; my ($hash, $server, $xml, $cmd) = @_;
#Log 1, Dumper $xml; #Log 1, Dumper $xml;
return $xml if( ref($xml) ne 'HASH' ); return $xml if( ref($xml) ne 'HASH' );
@ -1349,7 +1354,7 @@ plex_mediaList($$$)
$ret .= plex_mediaList2( $hash, 'Directory', $xml, $xml->{Directory} ) if( $xml->{Directory} ); $ret .= plex_mediaList2( $hash, 'Directory', $xml, $xml->{Directory} ) if( $xml->{Directory} );
$ret .= plex_mediaList2( $hash, 'Playlist', $xml, $xml->{Playlist} ) if( $xml->{Playlist} ); $ret .= plex_mediaList2( $hash, 'Playlist', $xml, $xml->{Playlist} ) if( $xml->{Playlist} );
$ret .= plex_mediaList2( $hash, 'Video', $xml, $xml->{Video} ) if( $xml->{Video} ); $ret .= plex_mediaList2( $hash, 'Video', $xml, $xml->{Video}, $cmd ) if( $xml->{Video} );
$ret .= plex_mediaList2( $hash, 'Track', $xml, $xml->{Track} ) if( $xml->{Track} ); $ret .= plex_mediaList2( $hash, 'Track', $xml, $xml->{Track} ) if( $xml->{Track} );
if( !$xml->{Directory} && !$xml->{Playlist} && !$xml->{Video} && !$xml->{Track} ) { if( !$xml->{Directory} && !$xml->{Playlist} && !$xml->{Video} && !$xml->{Track} ) {
@ -1572,17 +1577,17 @@ plex_Get($$@)
$param = ''; $param = '';
} }
if( $cmd eq 'sections' || $cmd eq 'ls' ) { if( $cmd eq 'sections' || $cmd eq 'ls' || $cmd eq 'files' ) {
$param = "/$param" if( $param && $param !~ '^/' ); $param = "/$param" if( $param && $param !~ '^/' );
my $ret; my $ret;
if( $param =~ m'/playlists' ) { if( $param =~ m'/playlists' ) {
$ret = plex_sendApiCmd( $hash, "http://$ip:$entry->{port}$param", 'sections', $hash->{CL} || 1, $entry->{accessToken} ); $ret = plex_sendApiCmd( $hash, "http://$ip:$entry->{port}$param", 'sections', $hash->{CL} || 1, $entry->{accessToken} );
} elsif( $param =~ m'^/library' ) { } elsif( $param =~ m'^/library' ) {
$ret = plex_sendApiCmd( $hash, "http://$ip:$entry->{port}$param", "sections:$param", $hash->{CL} || 1, $entry->{accessToken} ); $ret = plex_sendApiCmd( $hash, "http://$ip:$entry->{port}$param", "sections:$param $cmd", $hash->{CL} || 1, $entry->{accessToken} );
} else { } else {
$ret = plex_sendApiCmd( $hash, "http://$ip:$entry->{port}/library/sections$param", "sections:$param", $hash->{CL} || 1, $entry->{accessToken} ); $ret = plex_sendApiCmd( $hash, "http://$ip:$entry->{port}/library/sections$param", "sections:$param $cmd", $hash->{CL} || 1, $entry->{accessToken} );
} }
return $ret; return $ret;
@ -1647,7 +1652,7 @@ plex_Get($$@)
} }
$list .= 'identity:noArg ls search sessions:noArg detail onDeck:noArg recentlyAdded:noArg playlists:noArg '; $list .= 'identity:noArg ls files search sessions:noArg detail onDeck:noArg recentlyAdded:noArg playlists:noArg ';
$list .= 'servers:noArg pin:noArg ' if( $list !~ m/\bservers\b/ ); $list .= 'servers:noArg pin:noArg ' if( $list !~ m/\bservers\b/ );
} }
@ -2216,7 +2221,7 @@ plex_serverOf($$;$)
if( !$entry && $only ) { if( !$entry && $only ) {
if( my $mhash = $modules{plex}{defptr}{MASTER} ) { if( my $mhash = $modules{plex}{defptr}{MASTER} ) {
Log 1, Dumper $mhash; #Log 1, Dumper $mhash;
my @keys = keys(%{$modules{plex}{defptr}{MASTER}{servers}}); my @keys = keys(%{$modules{plex}{defptr}{MASTER}{servers}});
if( @keys == 1 ) { if( @keys == 1 ) {
$entry = $modules{plex}{defptr}{MASTER}{servers}{$keys[0]}; $entry = $modules{plex}{defptr}{MASTER}{servers}{$keys[0]};
@ -3702,12 +3707,13 @@ plex_parseHttpAnswer($$$)
|| $param->{key} eq 'playlists' || $param->{key} eq 'playlists'
|| $param->{key} eq 'recentlyAdded' || $param->{key} eq 'recentlyAdded'
|| $param->{key} eq 'search' || $param->{key} eq 'search'
|| $param->{key} =~ m'sections(:(.*))?' ) { || $param->{key} =~ m'sections(:(\S*))?( (.*))?' ) {
$handled = 1; $handled = 1;
my $cmd = $4;
$xml->{parentSection} = $2; $xml->{parentSection} = $2;
my $server = plex_entryOfIP($hash, 'server', $param->{address}); my $server = plex_entryOfIP($hash, 'server', $param->{address});
my $ret = plex_mediaList( $hash, $server, $xml ); my $ret = plex_mediaList( $hash, $server, $xml, $cmd );
if( $param->{cl} && $param->{cl}->{TYPE} eq 'FHEMWEB' ) { if( $param->{cl} && $param->{cl}->{TYPE} eq 'FHEMWEB' ) {
$ret =~ s/&/&/g; $ret =~ s/&/&/g;
$ret =~ s/'/'/g; $ret =~ s/'/'/g;
@ -4057,8 +4063,12 @@ Log 1, "!!!!!!!!!!";
my $data = substr($hash->{buf}, $i, $len); my $data = substr($hash->{buf}, $i, $len);
$hash->{buf} = substr($hash->{buf},$i+$len); $hash->{buf} = substr($hash->{buf},$i+$len);
#Log 1, ">>>$data<<<";
if( $op == 0x01 ) { if( $data eq '?' ) {
#ignore keepalive
} elsif( $op == 0x01 ) {
my $obj = eval { decode_json($data) }; my $obj = eval { decode_json($data) };
if( $obj ) { if( $obj ) {