6 Replies Latest reply: Jan 27, 2011 8:02 PM by Frank Caggiano
Frank Caggiano Level 7 Level 7 (25,720 points)
I have a series of images taken over the course of many weeks. I would like to sort them by the time of day they were taken regardless of the actual date.

I know I can create a smart filter adding rule Date and then set that to *capture hour* or *in the range*. So I can get all shots taken between say 7 and 10 in one smart album and all shots taken between say 16:00 and 19:00 in another.

But even in the smart album all shots taken at a particular time (or a small range of times) aren't grouped together. What I'm looking for is how the lighting changes over time so I do want to see the images flow with time.

Anyone have any ideas?

thanks

iMac Intel 3.06 GHz 8GB Mem; Macbook5.1 2.4ghz 4GB Mem, Mac OS X (10.6.6), Aperture 3.1.1
  • Mr Endo Level 4 Level 4 (1,005 points)
    Frank,

    I can only come up with a [kludge|http://en.wikipedia.org/wiki/Kludge], as we say in software development.

    1. Make new versions of all those pictures, and somehow (?) make your smart albums based on those.
    2. Adjust the date (but not time) of all pictures except those on 1 date (say the first date, but it can be arbitrary), so that all new versions have that same date. You should be able to easily select all photos on a given date and just "roll back" the date of those 1 or 2 or "whatever" days.

    nathan

    Message was edited by: Mr Endo
  • Frank Caggiano Level 7 Level 7 (25,720 points)
    Thanks for the rely Nathan. You have an interesting take on the problem however for what I'm trying to do I'm not sure it would work.

    I think I've found the solution to the problem. Will post more once I've tested to out.

    regards
  • Kirby Krieger Level 6 Level 6 (12,500 points)
    Good kludge; great question.

    I don't think there is any way to isolate time (from date) in Aperture. You can group by time of day range, but you cannot sort by time of day.

    Grouping is done by creating a container based on a filter (as you know -- illustration for those who don't).

    Filter: Photos

    Sorting by time is arguably a useful feature for a photography program. Even better would be a GPS aware metadatum of percentage difference from solar noon measured in (I think) apparent solar time. (You want to compare images based on the sun's position in the sky, not based on clock-time, no?)

    This is certainly do-able today.

    Message was edited by: Kirby Krieger
  • Frank Caggiano Level 7 Level 7 (25,720 points)
    Well this turned out to be ridiculously easy. I figured I would need to drop into Applescript to for this as the time information is readily available but I had images of having to to do the sort in Applescript also. Not something I was looking forward to.

    Then it hit me *Custom Fields* . Aperture allows you to create any number of fields and put whatever data you want into them. As long as Aperture would also sort on a custom field we were more than half way there.

    Sure enough a quick test showed that you can sort on a custom field (as an added bonus custom fields also show up in the filter HUD under the *Aperture Metadata" Add Rule).

    So now it was just a quick script to extract the date and time EXIF info and create and populate the custom field "Capture Time".

    To sort on this:
    # Add the custom field *Capture Time* to the metadata of the list view.
    # In the Browser go into list view and click on the *Capture Time* field heading.

    Thats it just run the script on the library to create and populate the data. Will also install this as an import action so all imports going forward have this info.


    display dialog "Aperture will Start." & return & return & "Select image(s), press Continue when ready" buttons {"Continue", "Stop"} default button 1
    set the user_choice to the button returned of the result

    if the user_choice is "Stop" then
    tellme to quit
    end if

    tell application "Aperture"
    activate
    set imageSel to (get selection)

    if imageSel is {} then
    error "Please select an image."
    else
    repeat with i from 1 to count of imageSel
    tell item i of imageSel
    set imageDate to value of EXIF tag "ImageDate"
    set s to time string of imageDate
    make new custom tag with properties {name:"Capture Time", value:s}
    end tell
    end repeat
    end if
    end tell
  • Frank Caggiano Level 7 Level 7 (25,720 points)
    Kirby Krieger wrote:
    Good kludge; great question.


    Sorting by time is arguably a useful feature for a photography program. Even better would be a GPS aware metadatum of percentage difference from solar noon measured in (I think) apparent solar time. (You want to compare images based on the sun's position in the sky, not based on clock-time, no?)


    That's very true and a very interesting point. Hadn't thought of it in exactly that way, of course thats what I am actually going for. However we start with little steps, being able to sort on time is a start, I'll have to look into the other.
  • Frank Caggiano Level 7 Level 7 (25,720 points)
    As I wrote when I posted the first script, I installed it as an import action. Here is the script modified to run as an import action:


    on importActionForVersions(input)
    tell application "Aperture"
    tell library 1
    repeat with i from 1 to count of input
    tell (item i of input)
    try
    set imageDate to value of EXIF tag "ImageDate"
    set s to time string of imageDate
    make new custom tag with properties {name:"Capture Time", value:s}
    on error
    log "Failed to get EXIF date."
    end try
    end tell
    end repeat
    end tell
    end tell
    end importActionForVersions


    With this installed all images imported through the import panel will have the *Capture Time* field created and populated with the EXIF capture time of the image.