iPhoto Library Manager (Revisited) | Dafacto

The personal website of Matt Henderson.

iPhoto Library Manager (Revisited)

23 May 2003

For anyone interested, attached below (in the Extended Entry) is the script I run nightly from cron that informs me by email when my current iPhoto Library is getting big enough to consider taking an action with iPhoto Library Manager to create a new one.

A couple of notes:

  1. Yes, the script uses the CLI version of PHP. I’m much more familiar with the PHP language than I am with tools like Perl.
  2. The script uses the knowledge that I name my iPhoto Libraries according to the form “iPhoto-Library-20030521”, so that the last entry in a directory listing is the currently used Library (and the one whose size should be calculated).
  3. I’ve removed the <? ?> PHP delimiters from the script example, to prevent execution when you view it (since my blog is parsed by PHP).

    #! /usr/local/bin/php [BEGIN PHP]

    $LibraryLocation = ‘/Users/mhenders/Pictures’; $LibraryPrefix = ‘iPhoto-‘; $MaxDesiredSize = 600; // in megabytes $to = ‘[email protected]’; $subject = ‘iPhoto Library Size Warning [makalup1]’;

    function getSubDirs($dir_name) { $subdirectories = array(); $files = array();

     if(is_dir($dir_name) and is_readable($dir_name)) {
         $d = dir($dir_name);
         while (false !== ($f = $d->read())) {
             // skip . and ..
             if (('.' == $f) || ('..' == $f)) {
             if (is_dir("$dir_name/$f")) {
             } else {
     return $subdirectories;  }

    $subdirectories = getSubDirs($LibraryLocation);

    foreach( $subdirectories as $subdir ) { if(ereg($LibraryLocation.”/”.$LibraryPrefix,$subdir)) { $output = exec(“du -sk “.$subdir); ereg(‘([0-9]+)’,$output,$size); $size = $size[0]; $foundLibrary = $subdir; } }

    $checkSize = round($size/1000,0); // convert KB to MB

    if($checkSize > $MaxDesiredSize) { $message = “iPhoto Library Size Warningn”; $message .= “===========================nn”; $message .= “Library: $foundLibraryn”; $message .= “ Size: $checkSize MBnn”; $message .= “(You specified to be notified when the “; $message .= “library size is greater than $MaxDesiredSize MB.)”;

     $subject .= " [$checkSize MB]";
     mail($to,$subject,$message);  }

    [END PHP]

Enjoy this article? — You can find similar content via the category and tag links below.

Questions or comments? — Feel free to email me using the contact form below, or reach out on Twitter.