| Audio-MPD documentation | Contained in the Audio-MPD distribution. |
Audio::MPD::Playlist - class to mess MPD's playlist
version 1.111200
$mpd->playlist->shuffle;
# and lots of other methods
Audio::MPD::Playlist is a class meant to access & update MPD's playlist.
Note that you're not supposed to call the constructor yourself, an
Audio::MPD::Playlist is automatically created for you during the
creation of an Audio::MPD object - it can then be used with the
playlist() accessor.
my @items = $pl->as_items;
Return an array of Audio::MPD::Common::Item::Songs, one for each of the songs in the current playlist.
my @items = $pl->items_changed_since( $plversion );
Return a list with all the songs (as Audio::MPD::Common::Item::Song objects)
added to the playlist since playlist $plversion.
$pl->add( $path [, $path [...] ] );
Add the songs identified by $path (relative to MPD's music directory) to the
current playlist. No return value.
$pl->delete( $song [, $song [...] ] );
Remove the specified $song numbers (starting from 0) from the current
playlist. No return value.
$pl->deleteid( $songid [, $songid [...] ] );
Remove the specified $songids (as assigned by mpd when inserted in playlist)
from the current playlist. No return value.
$pl->clear;
Remove all the songs from the current playlist. No return value.
$pl->crop;
Remove all of the songs from the current playlist except the song currently playing.
$pl->shuffle;
Shuffle the current playlist. No return value.
$pl->swap( $song1, $song2 );
Swap positions of song number $song1 and $song2 in the current
playlist. No return value.
$pl->swapid( $songid1, $songid2 );
Swap the postions of song ID $songid1 with song ID $songid2 in the
current playlist. No return value.
$pl->move( $song, $newpos );
Move song number $song to the position $newpos. No return value.
$pl->moveid( $songid, $newpos );
Move song ID $songid to the position $newpos. No return value.
$pl->load( $playlist );
Load list of songs from specified $playlist file. No return value.
$pl->save( $playlist );
Save the current playlist to a file called $playlist in MPD's playlist
directory. No return value.
$pl->rm( $playlist );
Delete playlist named $playlist from MPD's playlist directory. No
return value.
Jerome Quelin
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.
| Audio-MPD documentation | Contained in the Audio-MPD distribution. |
# # 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::Playlist; BEGIN { $Audio::MPD::Playlist::VERSION = '1.111200'; } # ABSTRACT: class to mess MPD's playlist use Moose; use MooseX::Has::Sugar; use MooseX::SemiAffordanceAccessor; has _mpd => ( ro, required, weak_ref ); #-- # Constructor # # my $collection = Audio::MPD::Playlist->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::Playlist is automatically created for you during the creation # of an Audio::MPD object. # #-- # Public methods # -- Playlist: retrieving information sub as_items { my ($self) = @_; my @list = $self->_mpd->_cooked_command_as_items("playlistinfo\n"); return @list; } sub items_changed_since { my ($self, $plid) = @_; return $self->_mpd->_cooked_command_as_items("plchanges $plid\n"); } # -- Playlist: adding / removing songs sub add { my ($self, @pathes) = @_; my $command = "command_list_begin\n" . join( '', map { my $p=$_; $p=~s/"/\\"/g; qq[add "$p"\n] } @pathes ) . "command_list_end\n"; $self->_mpd->_send_command( $command ); } sub delete { my ($self, @songs) = @_; my $command = "command_list_begin\n" . join( '', map { my $p=$_; $p=~s/"/\\"/g; "delete $p\n" } @songs ) . "command_list_end\n"; $self->_mpd->_send_command( $command ); } sub deleteid { my ($self, @songs) = @_; my $command = "command_list_begin\n" . join( '', map { "deleteid $_\n" } @songs ) . "command_list_end\n"; $self->_mpd->_send_command( $command ); } sub clear { my ($self) = @_; $self->_mpd->_send_command("clear\n"); } sub crop { my ($self) = @_; my $status = $self->_mpd->status; my $cur = $status->song; my $len = $status->playlistlength - 1; # we need to reverse the list, to remove the bigest ids before my $command = "command_list_begin\n" . join( '', map { $_ != $cur ? "delete $_\n" : '' } reverse 0..$len ) . "command_list_end\n"; $self->_mpd->_send_command( $command ); } # -- Playlist: changing playlist order sub shuffle { my ($self) = @_; $self->_mpd->_send_command("shuffle\n"); } sub swap { my ($self, $from, $to) = @_; $self->_mpd->_send_command("swap $from $to\n"); } sub swapid { my ($self, $from, $to) = @_; $self->_mpd->_send_command("swapid $from $to\n"); } sub move { my ($self, $song, $pos) = @_; $self->_mpd->_send_command("move $song $pos\n"); } sub moveid { my ($self, $song, $pos) = @_; $self->_mpd->_send_command("moveid $song $pos\n"); } # -- Playlist: managing playlists sub load { my ($self, $playlist) = @_; $self->_mpd->_send_command( qq[load "$playlist"\n] ); } sub save { my ($self, $playlist) = @_; $self->_mpd->_send_command( qq[save "$playlist"\n] ); } sub rm { my ($self, $playlist) = @_; $self->_mpd->_send_command( qq[rm "$playlist"\n] ); } no Moose; __PACKAGE__->meta->make_immutable; 1;
__END__