Control iTunes with Perl
Use the Mac::iTunes Perl module to control iTunes from scripts and from other machines
When I started to work with iTunes AppleScripts, I wanted them to be as easy to write as Perl scripts, even though they were not. After a while, I decided to fix that by writing a Perl module to handle the AppleScript portions of iTunes. I already had a MacOSX::iTunes Perl module that I used to parse the binary format of the iTunes Music Library.xml file. I needed to add AppleScript support to it.
On the suggestion of Chris Nandor, the caretaker of MacPerl and author of Mac::Carbon, I changed the name of my
distribution to Mac::iTunes and added
the Mac::iTunes::AppleScript module,
which wrapped common AppleScripts in Perl functions. The meat of the
module was the _osascript routine,
which creates an AppleScript string and calls osascript:
sub _osascript
{
my $script = shift;
require IPC::Open2;
my( $read, $write );
my $pid = IPC::Open2::open2( $read, $write, 'osascript' );
print $write qq(tell application "iTunes"\n), $script,
qq(\nend tell\n);
close $write;
my $data = do { local $/; <$read> };
return $data;
}The Mac::iTunes::AppleScript
module works much like the osascript
command-line tool. Indeed, the first version simply created a script
string (called osascript) with that
script and captured the output, if any, for parsing. About the same time
I finished the first version, Nathan Torkington needed Perl access to
AppleScript and convinced Dan Sugalski to write Mac:: ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access