/usr/bin/rpld-listplaylists is in roarplaylistd-tools 0.1.9-3.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | #!/usr/bin/perl
# Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2010
#
# This file is part of RoarAudio PlayList Daemon,
# a playlist management daemon for RoarAudio.
# See README for details.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 3
# as published by the Free Software Foundation.
#
# RoarAudio is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this software; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
use strict;
use Audio::RPLD;
my $server;
my $queue;
my $level = 0;
while (($_ = shift(@ARGV))) {
if ( $_ eq '--tree' ) {
$level = 0;
} elsif ( $_ eq '--flat' ) {
$level = -1;
} elsif ( $_ eq '--server' ) {
$server = shift(@ARGV);
} elsif ( $_ eq '--queue' ) {
$queue = shift(@ARGV);
} elsif ( $_ eq '--help' ) {
print STDERR "Usage: $0 [OPTIONS] [--tree|--flat]\n";
exit(0);
} else {
die 'Unknown option: '.$_;
}
}
my $rpld = Audio::RPLD->new();
if ( defined($server) ) {
$rpld->connect($server);
} else {
$rpld->connect_default();
}
$rpld->is_connected() or die;
if ( defined($queue) ) {
$rpld->setqueue($queue) or die;
}
my $res = $rpld->listplaylists() or die;
$rpld->disconnect();
proc($res, $level, 1, $res);
sub get_list {
my ($lists, $id) = @_;
local $_;
foreach (@{$lists}) {
return $_ if $_->{'id'} == $id;
}
return {};
}
sub proc {
my ($lists, $level, $nocircular, $alllists) = @_;
my $c;
my $prefix = '';
my $type;
$level ||= 0;
unless ( $level < 0 ) {
$prefix = ' ' x ($level * 2);
}
foreach $c (@{$_[0]}) {
if ( $c->{'processed'} ) {
#printf("%s[%-8i]: %s ***circular parentship***\n", $prefix, $c->{'id'}, $c->{'name'}) unless $nocircular;
printf("%s%i: %s ***circular parentship***\n", $prefix, $c->{'id'}, $c->{'name'}) unless $nocircular;
next;
}
$type = 'playlist';
if ( defined($c->{'history_size'}) ) {
$type = sprintf('history(size %i)', $c->{'history_size'});
} elsif ( defined($c->{'history'}) ) {
$type = sprintf('queue(volume %i, history %s, %sbackend%s)', $c->{'volume'},
get_list($alllists, $c->{'history'})->{'name'} || $c->{'history'},
$c->{'backend'} eq '+default' ? ('default ', '') : ('', ' default'));
}
#printf("%s[%-8i]: %s\n", $prefix, $c->{'id'}, $c->{'name'});
printf("%s%i [%s]: %s\n", $prefix, $c->{'id'}, $type, $c->{'name'});
$c->{'processed'} = 1;
proc($c->{'children'}, $level + 1, 0, $alllists) unless $level < 0;
}
}
#ll
|