NAME
iPhoto - reads in photo albums plist files of iPhoto.app on MacOS X and presents them as perl data structure.
SYNOPSIS
use Mac::iPhoto;
my $a = new Mac::iPhoto("./AlbumData.xml");
$a->parse;
DESCRIPTION
Reads in photo albums plist files of iPhoto.app on MacOS X and presents them as perl data structure.
FUNCTIONS
&new();
my
$AlbumData
= Mac::iPhoto->new(
"/Users/Shared/Photo/AlbumData.xml"
);
Creates new data object. Takes one parameter - UNIX path to
AlbumData.xml file.
&parse()
$AlbumData
->
&parse
();
Parses XML file and populates data structure
$AlbumData
->{
'Data'
}.
Structure of the data format of iPhoto.pm
Mac::iPhoto->parse() populates a hash iPhoto->{Data} that has following structure:
{
Properties
=> \
%Properties
,
Albums
=> \
@Albums
,
Images
=> \
@Images
}
%Properties is hash of the top-level properties in the AlbumData.xml file.
%Properties has following structure:
{
'Application Version'
=> string,
'Archive Path'
=> string,
'Major Version'
=> string,
'Minor Version'
=> string,
}
@Albums - array describing all albums in parsed XML file.
@Albums has following structure:
{
'AlbumName'
=> string,
'BookDesignName'
=> string,
'RepeatSlideShow'
=> string,
'SecondsPerSlide'
=> string,
'SongPath'
=> string,
'KeyList'
=> \
@KeyList
,
}
@Images - array describing all images in the AlbumData.xml file.
@Images has following structure:
(
'ImagePath'
=> string,
'Caption'
=> string,
'Comment'
=> string,
'Date'
=> string,
'ThumbPath'
=> string,
'ModificationDate'
=> string,
);
CHANGES
Nov 19, 2003 - 1st actually working version of module.
EXAMPLE
use Mac::iPhoto;
my $a = new Mac::iPhoto("./AlbumData.xml");
$a->parse;
printf "Created by iTunes v. %s / maj.%s / min.%s\n", $a->{'Properties'}->{'Application Version'}, $a->{Properties}->{'Major Version'}, $a->{Properties}->{'Minor Version'};
printf "Album path: %s\n", $a->{Properties}->{'Archive Path'};
for my $album (@{$a->{Data}->{Albums}}) {
printf
"Name: %s \n"
,
$album
->{
'AlbumName'
};
printf
"BookDesignName: %s \n"
,
$album
->{
'BookDesignName'
};
for
my
$key
( @{
$album
->{
'KeyList'
}}) {
$key
,
": \n"
;
printf
"\t%s\n\t%s\n\t%s\n\t%s\n\t%s\n\t%s\n"
,
$a
->{Data}->{Images}->[
$key
]->{
'Date'
},
$a
->{Data}->{Images}->[
$key
]->{
'ImagePath'
},
$a
->{Data}->{Images}->[
$key
]->{
'ThumbPath'
},
$a
->{Data}->{Images}->[
$key
]->{
'Caption'
},
$a
->{Data}->{Images}->[
$key
]->{
'Comment'
},
$a
->{Data}->{Images}->[
$key
]->{
'ModificationDate'
};
}
}
CREDITS
Mac::iPhoto relies on Mac::PropertyList module for actual parsing of XML file. Thanks for Brian D Foy, <bdfoy@cpan.org> for developing it.
AUTHOR
Dmytro Kovalov, 2003. kov at tokyo dot email dot ne dot jp.
SEE ALSO
https://sourceforge.net/projects/brian-d-foy/