#include "perl_xmmsclient.h" MODULE = Audio::XMMSClient::Playlist PACKAGE = Audio::XMMSClient::Playlist PREFIX = xmmsc_playlist_ =head1 NAME Audio::XMMSClient::Playlist - Playlists for Audio::XMMSClient =head1 SYNOPSIS use Audio::XMMSClient; my $conn = Audio::XMMSClient->new($client_name); $conn->connect or die $conn->get_last_error; my $playlist = $conn->playlist($playlist_name); $playlist->shuffle; =head1 DESCRIPTION This module provides an abstraction for L's playlists. =head1 METHODS =head2 list_entries =over 4 =item Arguments: none =item Return Value: $result =back my $result = $playlist->list_entries; List playlists content. =cut xmmsc_result_t * xmmsc_playlist_list_entries (p) perl_xmmsclient_playlist_t *p C_ARGS: p->conn, p->name =head2 create =over 4 =item Arguments: none =item Return Value: $result =back my $result = $playlist->create; Creates a new empty playlist. =cut xmmsc_result_t * xmmsc_playlist_create (p) perl_xmmsclient_playlist_t *p C_ARGS: p->conn, p->name =head2 current_pos =over 4 =item Arguments: none =item Return Value: $result =back my $result = $playlist->current_pos; Retrives the current position in the playlist. =cut xmmsc_result_t * xmmsc_playlist_current_pos (p) perl_xmmsclient_playlist_t *p C_ARGS: p->conn, p->name =head2 shuffle =over 4 =item Arguments; none =item Return Value: $result =back my $result = $playlist->shuffle; Shuffles the playlist. =cut xmmsc_result_t * xmmsc_playlist_shuffle (p) perl_xmmsclient_playlist_t *p C_ARGS: p->conn, p->name =head2 sort =over 4 =item Arguments: \@properties =item Return Value: $result =back my $result = $playlist->sort([qw/artist album tracknr/]); Sorts the playlist according to the list of C<\@properties>. =cut xmmsc_result_t * xmmsc_playlist_sort (p, properties) perl_xmmsclient_playlist_t *p const char **properties = ($type)perl_xmmsclient_unpack_char_ptr_ptr ($arg); C_ARGS: p->conn, p->name, properties CLEANUP: free (properties); =head2 clear =over 4 =item Arguments: none =item Return Value: $result =back my $result = $playlist->clear; Clears the playlist. =cut xmmsc_result_t * xmmsc_playlist_clear (p) perl_xmmsclient_playlist_t *p C_ARGS: p->conn, p->name =head2 insert_id =over 4 =item Arguments: $position, $id =item Return Value: $result =back my $result = $playlist->insert_id(2, 1337); Insert a medialib C<$id> at given C<$position>. =cut xmmsc_result_t * xmmsc_playlist_insert_id (p, pos, id) perl_xmmsclient_playlist_t *p int pos unsigned int id C_ARGS: p->conn, p->name, pos, id =head2 insert_args =over 4 =item Arguments: $position, $url, @args? =item Return Value: $result =back my $result = $playlist->insert_args(1, 'file://path/to/media/file.sid', 'subtune=2'); Insert a C<$url> at C<$position> with C<@args>. =cut xmmsc_result_t * xmmsc_playlist_insert_args (p, pos, url, ...) perl_xmmsclient_playlist_t *p int pos const char *url PREINIT: int i, nargs; const char **args = NULL; INIT: nargs = items - 2; args = (const char **)malloc (sizeof (char *) * nargs); for (i = 0; i < nargs; i++) { args[i] = SvPV_nolen (ST (i+2)); } C_ARGS: p->conn, p->name, pos, url, nargs, args CLEANUP: free (args); =head2 insert_url =over 4 =item Arguments: $position, $url =item Return Value: $result =back my $result = $playlist->insert_url(0, 'file://path/to/media/file.flac'); Insert C<$url> at C<$position>. =cut xmmsc_result_t * xmmsc_playlist_insert_url (p, pos, url) perl_xmmsclient_playlist_t *p int pos const char *url C_ARGS: p->conn, p->name, pos, url =head2 insert_encoded =over 4 =item Arguments: $position, $url =item Return Value: $result =back my $result = $playlist->insert_encoded(5, $url); Like L, except it expects C<$url> to be encoded already. =cut xmmsc_result_t * xmmsc_playlist_insert_encoded (p, pos, url) perl_xmmsclient_playlist_t *p int pos const char *url C_ARGS: p->conn, p->name, pos, url =head2 insert_collection =over 4 =item Arguments: $position, $collection, \@order =item Return Value: $result =back my $result = $playlist->insert_collection(5, $coll, [qw/artist album tracknr/]); Queries the medialib for entries matching C<$collection>, orders the results by C<\@order> and inserts them at C<$position>. =cut xmmsc_result_t * xmmsc_playlist_insert_collection (p, pos, collection, order) perl_xmmsclient_playlist_t *p int pos xmmsc_coll_t *collection const char **order = ($type)perl_xmmsclient_unpack_char_ptr_ptr ($arg); C_ARGS: p->conn, p->name, pos, collection, order CLEANUP: free (order); =head2 add_id =over 4 =item Arguments: $id =item Return Value: $result =back my $result = $playlist->add_id(9667); Add a medialib C<$id> to the end of the playlist. =cut xmmsc_result_t * xmmsc_playlist_add_id (p, id) perl_xmmsclient_playlist_t *p unsigned int id C_ARGS: p->conn, p->name, id =head2 add_args =over 4 =item Arguments: $url, @args? =item Return Value: $result =back my $result = $playlist->add_args('file:///path/to/media/file.sid', 'subtune=7'); Add a C<$url> with the given C<@args> to the playlists end. =cut xmmsc_result_t * xmmsc_playlist_add_args (p, url, ...) perl_xmmsclient_playlist_t *p const char *url PREINIT: int i, nargs; const char **args = NULL; INIT: nargs = items - 1; args = (const char **)malloc (sizeof (char *) * nargs); for (i = 0; i < nargs; i++) { args[i] = SvPV_nolen (ST (i+1)); } C_ARGS: p->conn, p->name, url, nargs, args CLEANUP: free (args); =head2 add_url =over 4 =item Arguments: $url =item Return Value: $result =back my $result = $playlist->add_url('file:///path/to/media/file.flac'); Add a C<$url> to the end of the playlist. =cut xmmsc_result_t * xmmsc_playlist_add_url (p, url) perl_xmmsclient_playlist_t *p const char *url C_ARGS: p->conn, p->name, url =head2 add_encoded =over 4 =item Arguments: $url =item Return Value: $result =back my $result = $playlist->add_encoded($url); Like L, except it expects C<$url> to be encoded already. =cut xmmsc_result_t * xmmsc_playlist_add_encoded (p, url) perl_xmmsclient_playlist_t *p const char *url C_ARGS: p->conn, p->name, url =head2 add_collection =over 4 =item Arguments: $collection, \@order =back my $result = $playlist->add_collection($coll, [qw/artist album/]); Query the medialib for entries matching C<$coll>, sort the results by C<\@order> and add the results to the end of the playlist. =cut xmmsc_result_t * xmmsc_playlist_add_collection (p, collection, order) perl_xmmsclient_playlist_t *p xmmsc_coll_t *collection const char **order = ($type)perl_xmmsclient_unpack_char_ptr_ptr ($arg); C_ARGS: p->conn, p->name, collection, order CLEANUP: free (order); =head2 move_entry =over 4 =item Arguments: $current_position, $new_position =item Return Value: $result =back my $result = $playlist->move_entry(3, 0); Moves a playlist entry from C<$current_position> to C<$new_position>. =cut xmmsc_result_t * xmmsc_playlist_move_entry (p, cur_pos, new_pos) perl_xmmsclient_playlist_t *p uint32_t cur_pos uint32_t new_pos C_ARGS: p->conn, p->name, cur_pos, new_pos =head2 remove_entry =over 4 =item Arguments: $position =item Return Value: $result =back my $result = $playlist->remove_entry(6); Removes the playlist entry at C<$position>. =cut xmmsc_result_t * xmmsc_playlist_remove_entry (p, pos) perl_xmmsclient_playlist_t *p unsigned int pos C_ARGS: p->conn, p->name, pos =head2 remove =over 4 =item Arguments: none =item Return Value: $result =back my $result = $playlist->remove; Remove the playlist. =cut xmmsc_result_t * xmmsc_playlist_remove (p) perl_xmmsclient_playlist_t *p C_ARGS: p->conn, p->name =head2 load =over 4 =item Arguments: none =item Return Value: $result =back my $result = $playlist->load; Load a playlist as the current active playlist. =cut xmmsc_result_t * xmmsc_playlist_load (p) perl_xmmsclient_playlist_t *p C_ARGS: p->conn, p->name =head2 radd =over 4 =item Arguments: $url =item Return Value: $result =back my $result = $playlist->radd($url); Adds a C<$url> recursivly to the playlist. The C<$url> should be absolute to the server-side. =cut xmmsc_result_t * xmmsc_playlist_radd (p, url) perl_xmmsclient_playlist_t *p const char *url C_ARGS: p->conn, p->name, url =head2 radd_encoded =over 4 =item Arguments: $url =item Return Value: $result =back my $result = $playlist->radd_encoded($url); Same as L, except it expects C<$url> to be encoded already. =cut xmmsc_result_t * xmmsc_playlist_radd_encoded (p, url) perl_xmmsclient_playlist_t *p const char *url C_ARGS: p->conn, p->name, url void DESTROY (p) perl_xmmsclient_playlist_t *p CODE: perl_xmmsclient_playlist_destroy (p); =head1 AUTHOR Florian Ragwitz =head1 SEE ALSO L, L =head1 COPYRIGHT AND LICENSE Copyright (C) 2006-2007, Florian Ragwitz This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available. =cut BOOT: PERL_UNUSED_VAR (items);