This is Mac::iPhoto for reading MacOSX iPhoto XML files. Module reads
is AlbumData.xml file created by Apple's iPhoto program and pareses it
into perl hash.

**********************************************************************

Installation:

	1) perl Makefile.PL
	2) make install

Usage/Documentaion:

	1) pod2text iPhoto.pm

Licensing:

	GNU GPL 2.0 or later

**********************************************************************

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'}}) {
        print $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.
    Homepage: 
	      http://yarylo.sytes.net/
	      http://www.asahi-net.or.jp/~as9d-kvlv

SEE ALSO
    https://sourceforge.net/projects/brian-d-foy/