NAME

Mac::iTunes - interact with and control iTunes

SYNOPSIS

use Mac::iTunes;

# if you have Mac::iTunes::AppleScript
my $controller = Mac::iTunes->controller();

my $library = Mac::iTunes->new( $library_path );

DESCRIPTION

METHODS

new()

Creates a new, empty Mac::iTunes object. If you want to read a current library, use read().

Returns false on failure.

controller()

Creates a new Mac::iTunes controller object. See Mac::iTunes::AppleScript for methods. This method is not available on non-Mac systems.

preferences( [ FILENAME ] )

Read the iTunes preferences from the given FILENAME, or the file ~/Library/Preferences/com.apple.iTunes.plist .

playlists

In list context, returns a list of the titles of the playlists. In scalar context, returns the number of playlists.

get_playlist( PLAYLIST )

Takes a playlist title argument.

Extracts a Mac::Playlist object from the music library. Returns undef if the playlist does not exist.

add_playlist( PLAYLIST_OBJECT )

Takes a Mac::iTunes::Playlist object as its only argument.

Adds the playlist to the music library and returns a true value. If it cannot add the playlist object, perhaps because it is not a playlist object, it returns undef.

delete_playlist( PLAYLIST | OBJECT )

Takes a playlist title or Mac::iTunes::Playlist object as an argument.

Removes the playlist from the music library.

playlist_exists( PLAYLIST | OBJECT )

Takes a playlist title or Mac::iTunes::Playlist object as an argument.

Returns true if the playlist exists in the music library, and false otherwise.

The playlist exists if the music library has a playlist with the same title, or if the object matches another object in the music library. See Mac::iTunes::Playlist to see how one playlist object may match another.

NOTE: at the moment, if you use an object argument, the function extracts the title of the playlist and sees if that title is in the library. this is just a placeholder until i come up with something better.

read( FILENAME )

*** NOTE: This does not work for iTunes 4.6 and later, which has a different file format. Can anyone help me figure out what that format is? ***

Reads the named iTunes Music Library file and uses it to form the music library object, replacing any other data already in the object.

merge( FILENAME | OBJECT )

UNIMPLEMENTED!

Merges the current music library with the one in the named file or Mac::iTunes object. Does not affect the object argument.

write

UNIMPLEMENTED! Just dumps it with Data::Dumper.

Returns the music library as a string suitable for an iTunes Music Object file.

TO DO

* everything - the list of things already done is much shorter.

* speed everything up 100 times with Mac::Glue when it works on Mac OS X

* Figure out the new file format for the binary library file

BUGS

* plenty

SOURCE AVAILABILITY

This source is part of a SourceForge project which always has the latest sources in SVN, as well as all of the previous releases.

http://sourceforge.net/projects/brian-d-foy/

If, for some reason, I disappear from the world, one of the other members of the project can shepherd this module appropriately.

AUTHOR

brian d foy, <bdfoy@cpan.org>

COPYRIGHT AND LICENSE

Copyright (c) 2002-2008 brian d foy. All rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.