From b0cd3f90fb18b8913a274daf4a52ac27aedbcc27 Mon Sep 17 00:00:00 2001 From: dakkar Date: Thu, 30 Dec 2021 18:31:05 +0000 Subject: some better vlc controls / status --- lib/App/MediaControl/Web.rakumod | 3 ++- lib/Vlc/Client.rakumod | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/App/MediaControl/Web.rakumod b/lib/App/MediaControl/Web.rakumod index 240ebab..076e2f2 100644 --- a/lib/App/MediaControl/Web.rakumod +++ b/lib/App/MediaControl/Web.rakumod @@ -27,7 +27,8 @@ class App::MediaControl::Web { get -> 'status' { my $status = await self.vlc.status(); - content 'application/json', $status; + my $playlist = await self.vlc.playlist(); + content 'application/json', %( :$status, :$playlist ); } } diff --git a/lib/Vlc/Client.rakumod b/lib/Vlc/Client.rakumod index 8951c60..0860df4 100644 --- a/lib/Vlc/Client.rakumod +++ b/lib/Vlc/Client.rakumod @@ -49,6 +49,22 @@ class Vlc::Client { method status() { my $res = await self!call-vlc('status.xml'); my XML::Document $status = await $res.body; - return Promise.kept({:status(xml-to-hash($status.root))}) + return Promise.kept(xml-to-hash($status.root)); + } + + method playlist() { + my $res = await self!call-vlc('playlist.xml'); + my XML::Document $playlist = await $res.body; + my @playlist-items = $playlist.elements() + .grep(*.attribs eq 'Playlist').first + .elements().map( + -> $leaf { + %( + $leaf.attribs:p.Slip, + current => $leaf.attribs:exists, + ) + }, + ); + return Promise.kept(@playlist-items); } } -- cgit v1.2.3