Audio-MPD
view release on metacpan or search on metacpan
lib/Audio/MPD/Collection.pm view on Meta::CPAN
#
# This file is part of Audio-MPD
#
# This software is copyright (c) 2007 by Jerome Quelin.
#
# This is free software; you can redistribute it and/or modify it under
# the same terms as the Perl 5 programming language system itself.
#
use 5.008;
use warnings;
use strict;
package Audio::MPD::Collection;
# ABSTRACT: class to query MPD's collection
$Audio::MPD::Collection::VERSION = '2.004';
use Moose;
use MooseX::Has::Sugar;
use MooseX::SemiAffordanceAccessor;
has _mpd => ( ro, required, weak_ref );
#--
# Constructor
#
# my $collection = Audio::MPD::Collection->new( _mpd => $mpd );
#
# This will create the object, holding a back-reference to the Audio::MPD
# object itself (for communication purposes). But in order to play safe and
# to free the memory in time, this reference is weakened.
#
# Note that you're not supposed to call this constructor yourself, an
# Audio::MPD::Collection is automatically created for you during the creation
# of an Audio::MPD object.
#
#--
# Public methods
# -- Collection: retrieving songs & directories
sub all_items {
my ($self, $path) = @_;
$path ||= '';
$path =~ s/"/\\"/g;
return $self->_mpd->_cooked_command_as_items( qq[listallinfo "$path"\n] );
}
sub all_items_simple {
my ($self, $path) = @_;
$path ||= '';
$path =~ s/"/\\"/g;
return $self->_mpd->_cooked_command_as_items( qq[listall "$path"\n] );
}
sub items_in_dir {
my ($self, $path) = @_;
$path ||= '';
$path =~ s/"/\\"/g;
return $self->_mpd->_cooked_command_as_items( qq[lsinfo "$path"\n] );
}
# -- Collection: retrieving the whole collection
sub all_songs {
my ($self, $path) = @_;
return grep { $_->isa('Audio::MPD::Common::Item::Song') } $self->all_items($path);
}
sub all_albums {
my ($self) = @_;
return $self->_mpd->_cooked_command_strip_first_field( "list album\n" );
}
sub all_artists {
( run in 2.203 seconds using v1.01-cache-2.11-cpan-5837b0d9d2c )