Can I reorganize an established Aperture library?
My existing library was set up without using brown folders which is a pity as I could have made it much more logical. It would work better if I could change my projects into brown folders, is this possible?
T5G5
Thanks RB,
I had no idea that blue folders could be successively stacked into one another. In fact until I posed the question on this forum I did not know how to set up a blue folder even though I had looked in the manual specifically. My interest is in natural history which has an existing hierarchical system of classification for which the blue folders are ideal.
Many Thanks
T5G5
Similar Messages
-
Aperture 3: Can I reorganize masterfolders in Aperture library?
I have having a bit of a problem, and it bothers me.
The thing is that I last year in December finally chose to go with Aperture 3. In an earlier stage I imported the iPhoto library to my Aperture. Well, my problem is that Aperture organized all of my imported photos under Masters, and then under 2011 and then under 12 (December) and then 18. Is there a way to reorganize all the affected photos by shot date under masters, and not like it's now by import/consolidate date?
It maybe doesn't affect my work with the photos, but it bothers me a lot that it is organized wrong. All of my imported photos shot after that date is imported correctly.
Looking forward to from you
/CarstenCarsten-
Specifically, the solution for your expressed problem is to make time-based Albums for your old iPhoto imports such as 2008, 2009 etc. Then sort those old iPhoto files by date and drag them into the appropriate Albums.
Originals should be backed up before import into Aperture or any other images management application. Those backups of originals can live in date-based folders on an offsite drive. Not only is that the only proper way to back up originals, it also allows your backup to consist of a more "literal" organization scheme.
Personally I use the same name scheme from the start:
• The camera card is uploaded on to the computer into a date-named folder named for the Project such as 110829_KJones_Wed. Date/time organizing Projects IMO is important because that is the way Aperture sees Projects.
• The camera card is ejected. An important step, because fatal errors to original images can still occur while the card remains in the computer.
• Then the original folder on the internal drive gets split up as needed to maintain Project sizes less than ~400 pix and/or for naming convenience (110829_KJones_Wed_A, 110829_KJones_Wed_B, 110829_Boyd_Construction, etc.). Note that the sortable date 110829 or 20110829 for Aug 29, 2011 is very intentional; dates like 08/29/2011 are not good. Computers see time as a string year-month-day-hour-minute-second and we should name similarly.
• The new folder(s) with the new originals in them get backed up to an exernal drive that will live off site. I leave the same folder names but append .bkup to them so I know that they are backup files rather than referenced Masters. Only after this step is complete can the camera card be reformatted, in-camera (not in-computer).
• After all of the above is complete import into Aperture can occur. To reference Masters on external drives (recommended) have the files to be imported located on an external drive and select "Store images in their current location."
My comments from an earlier thread on Aperture organization:
First, Projects should be just that: individual-shoot based projects rather than some kind of organizing tool for all the architectural photos or whatever. For performance reasons personally I keep each Project under 500 20-MB images, making a second Project if the shoot is large (e.g. 110829_KJones_Wed_B). One or more albums will always organize the KJones wedding pix together anyway.
Folders are indeed flexible organizational tools but IMO often overused. Folders can effectively hide contents from view and therefore require users to remember how folders are nested and what is inside them. Folders were the only way to deal with single-original film, but are IMO limiting to image database thinking.
The way I look at it conceptually:
Aperture is a database, and each image file lives in one Project.
Albums are just collections of pointers that point to individual image files living in one or more Projects. Since they just contain pointers, albums can be created or deleted at will without affecting image files or taking up storage space. Very powerful.
Keywords can be applied to every image separately or in batches. Keywords are hugely powerful and largely obviate the need for folders. Not that we should never use folders, just that we should use folders only when useful organizationally - - after first determining that using keywords and albums is not a better approach.
As one example imagine the keyword "flowers." Every image of 100k images that has some flowers in it has the keyword flowers. Then say we want to put flowers in an ad, or as background for a show of some kind, or to print pix for a party, or even just to look for an image for some other reason. We can find every flower image in a 100k-image database in 2 seconds, and instantly create an Album called "Flowers" that points to all of those individual images.
Similarly all family pix can have a keyword "family" and all work pix can have a key word "work." Each individual pic may have any number of keywords.
So by using keywords and albums we can have instant access to every image everywhere, very cool. And keywords and albums essentially take up no space in the database.
Another approach is to use a folder "Family" for family pix, a folder "Flowers" for flowers pix and another folder "Work" for work pix. IMO such folders usage is a very poor approach to using an images database (probably stemming from old paper or film work practices). Note that one cannot put an image with family in a field of flowers at a work picnic in all three folders.
HTH
-Allen -
How can I slim down the aperture library?
Hi,
My aperture library grew a lot. Is there any way to slimmed it down, without erasing content? I am talking about recreating previews with less quality or smaller size, deleting old thumbnails (I read that even if you delete a picture from the library, Aperture won't delete the thumbnail).
Does anybody knows any tricks about how to do that?
Thank you very much for your answers!
GusEasy. Switch to Referenced-Masters Library with Masters on external drives.
More complete explanation:
First make a Vault to an external drive as backup.
Then from within Aperture:
File Menu--> Relocate Masters. Choose external hard drive(s) and direct Aperture to move the Masters to those drives. Give it plenty of time depending on how many Masters are being moved. The Library remains on an internal drive, only the Masters get moved.
Next back up the drive that the Masters were relocated to, because now you have a Referenced Masters Library so Masters are backed up (once) separately from the Library Vault backups.
In the future back up originals (once) on external drives prior to import into Aperture or any other images app. I cannot overstate how important that is, and various manuals, texts, etc. present workflows that skip that critical step. Also back up the Aperture Library using Aperture's Vaults, which are designed for that purpose.
A complete Referenced-Masters workflow follows. Note that for image security reasons Aperture is not involved until the end of the process:
• Create a folder ("abc") for the incoming images. Easiest is to create the folder on the external hard drive where the Masters will permanently live, but Referenced Masters can be temporarily on the laptop's internal drive, then moved later as described above. I initially put Masters referenced on my MBP internal drive, then after backup and editing I use File Menu--> Relocate Masters to move the Masters to a permanent external drive location.
• Connect a card reader with the camera card in it. The camera card should show on the desktop. If it does not show, restart the Mac with the reader and card still plugged in. You can of course use the camera directly in this step, but I do not recommend it. Obviously cameras like the iPad2 do require direct camera-to-computer uploading.
• Drag the contents of the card's image folder(s) to the abc folder that you previously created on the hard drive.
• Review the abc folder contents to be sure they all copied properly.
• Software-eject the camera card.
• Physically disconnect the camera card reader from the Mac. This step is important to help avoid all-too-common human error.
• Again review the abc folder contents to be sure they are indeed all there (because stuff happens sometimes...).
• Back up the abc folder contents on to another drive.
• Review the files on the backup to be sure they all copied properly.
• At any time after but not before the previous step you can reformat the camera card in-camera. Do not delete images on the card using the computer.
• Start Aperture.
• Import the images from folder abc into Aperture, selecting "Store Files: In their current location" on the right-hand side of the import window (important!). Note that the Library remains on an internal drive, only the Masters are on externals.
HTH
-Allen Wicks -
Can you re-factor an Aperture library to have smaller directories?
Is there a way to re-factor an Aperture library bundle so none of its internal directories have more than 32000 entries?
(I'm asking because my Aperture library weighs in at 44GB+ (and that's using referenced images) and so I want to move it to my RAID server. Unfortunately, my RAID server's filesystem, built on ext3, imposes a limit of 32000 entries per directory. One of the sub-directories in my .aplibrary file has 46000+ entries, so the RAID server can't hold the library.)
Message was gently re-formatted by: fearlessfooladded:
If your library is on external volume, select the icon of your external Disk on your Desktop or in the "Computer" window in the Finder.
Select "File > Get Info" from the main menu bar or press cmd-I.
Click the padlock icon in the lower right corner of the Info-panel and authorize.
Disclose the "Sharing & Permissions" brick and enable the "Ignore Ownershp" flag.
Also select the library in the Finder and again select "File > Get Info" from the main menu bar. In the "Sharing and Permissions" brick add "Read & Write" privileges for yourself, and give yourself "Read&Write" access, if you do not have it. -
Aperture: Can I backup my entire Aperture library at once?
Soon I will be backing up my my entire notebook to a portable external hard drive to be placed in a safety deposit box as an off site backup. For a general day to day back up I use Aperture's Vault system. But I am very hesitant to do so for a MASTER backup because I don't like the idea of being tied to Aperture if I ever needed to retrieve my data. So is there a way to just have aperture export my entire collection to the hard drive at once instead of going to each project and exporting project by project? Thanks!!
Well...
Note there is no way to export the adjustments you make (levels, retouching, definition, saturation adjustments, etc.) out of Aperture.
As far as your master backup, note you really aren't tied to Aperture if you need to retrieve your data. The masters are always accessible, even when they are inside the Aperture library. That's because the Aperture library is just a set of folders. They are what is called a "package," but if you want to check out what's in the Aperture library you can just right click the library and select "Show package contents..." All your masters are in there.
So as for exporting all your masters in one fell swoop, I don't know of a way to do it. You have to do it a project at a time (and you can elect to export XMP sidecars containing all your keywords, if you wish to read them from some other app that can read XMP files). But that's not how I'd do it if I wanted to access all my masters... here's what I'd do:
Right click my Aperture library and select "Show package contents..."
Once I was in there, I'd type a period in the Finder search box (all file names have a dot in them...)
I'd change the search scope to Aperture library
I'd click the plus below and select "Kind... images"
Voila... every image in your Aperture library will show up in the smart search... your master files, as well as any JPEG previews that Aperture has generated.
You can easily copy these wherever you want, at any time, without needing Aperture installed, so no reason to do the export IMO. -
How can I restore a .aplib Aperture library from time machine?
When I try and restore my Aperture I get folders instead of a single .aplib file. Does anyone know how I can restore the .aplib file so I can open it?
How are you trying to resore it? If you enter Time Machine, find the version of the library you want to resore select it and click restore you shouke be good to go.
If a library of the same nae still exists in folder you're restoring to you'll get a window asking what you want to do, keep current, keep both or just keep the restored version.
If on the other hand you are opening the Time Machine disk and going to the folder with the library in it and trying to just drag it out all bets are off.
Message was edited by: Frank Caggiano - What OS version? -
Can I reference my Aperture Library on my desktop from my laptop?
I'd like to be able to bring all of my previews/thumbnails with me on my laptop wherever I go. Can I reference my entire Aperture Library on my desktop from my laptop? Also, if I make any adjustments or new versions on my laptop, will they automatically be synchronized to my Aperture Library on my desktop when I reconnect to the network?
ThanksYou can make a copy of your library and move it to your laptop. If your desktop library has previews enabled then your notebook will be setup with previews. I don't know of any way to have your desktop and notebook share a library that's internal to the desktop. You can have a networked drive that houses your masters and they can be common. I keep a second library on a portable drive and update it weekly so my notebook is upto date. It has been established as the library for the notebook.
Jeff -
Can I put an aperture library on a network drive and edit from multiple computers?
I have an Imac desktop and a macbook pro. I want to be able to edit pictures from multiple computers. If I simply put the aperture library on a network server drive in my home, can I edit the same aperture library from both the Imac and the macbook? Rather than always having to sit in my office making changes to files I would love to also be able to do this with my laptop sitting ont the couch or in the kitchen. Any advice is greatly appreciated.
Get yourself a small portable external drive for your Aperture library.
An Aperture library needs to be on directly connected drive formatted MacOS Extended (Journaled). network access is not supported and can lead to data loss and library corruption.
See Apple's support document: Use locally mounted Mac OS X Extended volumes for your Aperture library
http://support.apple.com/kb/TS3252 -
Can you move the aperture library without losing images?
my library is defaulted to imac..
but can you house it on external drive..I know, yes, as a referenced library.
but I already have some [lots] images in library.
can I move the library and maintain contents?
also..
once you import into library, is the original image in folder it was in before? or it's deleted?
just trying to see what will work best for my needs?
as I sometimes travel/live in 2nd home and just carry external drive
thanks for input/suggestionMenu>File>Vault
Creating what Ap[erture calls a 'Vault' seems like the easiest way to do it.
Here is the complete Help section on backing up your library.
QUOTE:
As you begin working with Aperture, it’s important to perform regular backups of your photos. Using the Aperture backup system, you can create backups and update them whenever you wish. Aperture tracks your backups and indicates how up to date your most recent backup is. In the rare event of equipment failure or an unforeseen catastrophe such as a fire or weather-related damage, you can easily restore the entire Aperture library onto your computer or a new computer.
You set Aperture to back up a copy of the library to a designated storage area called a vault. For safety and redundancy, use external hard disks to hold your vaults. You can create as many vaults as you deem necessary.
When you back up your photos, Aperture makes a complete copy of the library in its current state. If you remove items from the library, those items are removed from the backup when it is next updated.
All originals for managed images, all versions, and all metadata, previews, and adjustment information associated with your photos are backed up. The versions, previews, and metadata associated with referenced images are also backed up in the vault.
Important: Referenced images’ originals are not backed up in the vault with the library. Because the originals for referenced images are stored outside of the library, you must manage the backup and archiving of them yourself.
A typical backup system used with Aperture might look like the following:
This system backs up the Aperture library to two vaults stored on external hard disks. You routinely back up the library on one external hard disk. You use the second hard disk as a backup that you keep offsite. You can then rotate your onsite external hard disk with the offsite hard disk to keep all your vaults updated.
To set up your Aperture backup system, you need to do the following:
Determine the number of vaults you need. For example, do you need one for routine backups, one for weekly backups, and one for offsite storage?
Determine the number of hard disks you need for routine backups.
Determine the number of hard disks you’ll use for storing backups offsite.
Connect your hard disk drives to your computer.
Open Aperture and create the vaults you need, assigning a hard disk to each vault.
Update the new, empty vaults with copies of the Aperture library.
Disconnect one of the vault hard disks and take it to an offsite location for safekeeping.
When planning the amount of storage space you’ll need, estimate the amount of disk space needed to hold your existing digital images (photos you plan to import into Aperture) and the amount of space you might need for new projects. For example, RAW images typically require 8 to 25 or more megabytes (MB) of disk space per file. Estimating the number of photos in a typical project and the number of projects you usually create in a year, you can make a rough estimate of what might represent a year’s storage space. -
I can open Aperture now, but since it says Welcome Aperture, I just want to make sure my old Library is there still. I don't want proceed until I know my photos are safe. They are backed up on Time Machine and a Cloud service, too, if I need to retrive them. I had a problem where my computer shutdown during a rebuild/repair, but when I re-boot, I couldn't open Aperture. Any advice will help.
I have looked in my Picture folder and see "Aperture Library", but not "Aperture Library.aplibrary". Are they the same?
Have you set the Finder to hide the filename extensions? Then enable the extensions to be shown in the Finder Preferences (Advanced tab):
You could also have hidden the extensionin the "Get Info" panel for the Aperture Library:
Can I open this new "Aperture Library"? If I do open this new "Aperture LIbrary," will my old photo library be there?
If that library only has been created yesterday, it is unlikely, that it will contain your photos. How large is this "Aperture Library"? If it is very small, only a few MB, then it is probably a default library, that Aperture has created, when it could not find your regular library. But if it has several GB, than it can be your Aperture Library - then double click it to open it and see.
If your old "Aperture Library" is not in your Pictures folder, enter ".aplibrary" in the Spotlight searchfield in the upper right corner of your screen.
Does that turn up more libraries? -
Aperture Library Issues on NAS - Advice Needed
List-
Need some practical advice here. I've got a 90GB Aperture library that resides on a NAS (QNAP 419P II) that is experiencing major issues. Understood that having the library live on a non-HFS+, non-local drive is not advised by Apple, but it's been there for two years with no issues to speak of.
I had a power failure occur that seems to have done some damage to the library in some way. Upon opening the library, I got an error that said that there were inconsistencies with the file and that it needed to be repaired. I repaired it, and noticed something strange. In almost all files, the picture resolution was poor and both the camera and lens information was gone--in addition to the fact that the Adjustments capability was disabled.
I ran the Aperture first aid and ran all three processes--concluding with the full library rebuild. It looked to be successful and resolution, previews, and picture info returned--but halfway through the preview reprocessing the process just stopped and the beach ball of death ensued. I let it run overnight and it never recovered. I had to force quit and now if I reopen the file it say that there are inconsistencies and that the library needs to be repaired, which won't help.
I also tried to move the library off of the NAS an onto the local drive, but encountered an Error - 50 message--something that apparently is well known in the NAS world where Mac permissions get screwy when dealing with non HFS+ drives.
I have a backup of the original library, but it is sitting in a cloud repository (CrashPlan) that will take time and money to restore.
All of the masters are intact in the Aperture directory, and I have very few major adjustments made to any photos. Aperture is really just a repository for me.
So any practical advice would be appreciated as to how I can create a new local Aperture library and get all of the existing photo files there. I am pretty much giving up on the idea of getting the existing NAS-based library to work properly, so this is more of a real-world question on how to create a new library and eliminate whatever issues there are with the other Aperture files. It looks like everything in the Aperture package is in place, but the library itself is just malfunctioning.
I am also considering moving everything into iPhoto as well, as Aperture may simply be more than I need for my usage. If is is faster and a but simpler to manage, that could be the right answer as well.
Thanks in advance for any ideas or guidance.The problem is most likely with the library itself being located on the NAS.
But you can have a hybrid solution where the library is located on your internal drive while the actual image files are located externally, eg on your NAS. Image files stored within the Apeture library are called "managed" while image files stored externally are called "referenced". Whichever approach you take, the process is the same:
If you try to make a new Library from your masters, you will lose your project structure. The resulting mess will be in accordance to how you created your projects. Basically, if you look at your Masters folder, that's what you'll end up with when you import your masters. If that isn't a problem, the process is simple
Step 1: Prep.
Move or copy your masters out of the library bundle to a folder (to make them more accesible in finder).
Step 2: Create new library.
Within Aperture, from the File menu "Switch to Library -> Other/New..." to create a new Library on your internal drive.
Set the preferences to indicate previews/faces etc. I'd turn these off for now as they will slow you down.
Step 3: Import your images.
Within your new library, File -> Import - Folders as Projects. This gives you a dialog where you specifiy what and where to import.
If you choose "Import folders as: Folders and Projects" you will get a folder structure that matches the Masters folder, with projects at the end of the chain with names like 20120213-200100.
If you choose "Import folders as: Projects and Albums" you will get a single Project called "Masters" with a folder and Album structure that matches the Masters folder.
Neither of these will look particularly great. If you want to avoid this mess, here's what I'd try.
Fix your library again like you did before. After the rebuild, go to the Aperture activity window (SHIFT + CMD + 0) and cancel the preview generation process before it has chance to hang. This should give you a sem-functional library, hopefully functional enough for the next step:
Select all images and use File -> Relocate Original to move your original files out of the library. During this process you can specify that the originals are stored in sub-folders that match the project name, within a parent folder if required.
This gives you a much neater structure for importing into your new library where the projects will get the folder names (which will be your existing project names). It may not be perfect, for example if you have the same project name in different folders and don't/can't segregate them, but it's a lot cleaner than just importing your masters folder.
Andy -
Export Aperture library objects to Finder folders
Inspired by the posted message by user http://discussions.apple.com/profile.jspa?userID=616539 I wrote a script that will do the following:
1. Sync Folders/SubFolders/Albums/Projects..etc hierarchy tree from Aperture to a Finder folders tree
2. At run-time the script will creates/append to a log file under (home directory)\Library\Logs\AppleScriptExportApertureLibrary.log
3. Exports all projects images versions with embedded metadata
4. Create a file system "hard links" for each photo in the respective Albums pointing to the project folder location in order to preserve space.
5. Compare modification date on the image files and modification date within Aperture and export only modified images in order to save time for a full sync/export.
6. In interactive mode you can select Export Folder location, Aperture Library location and Projects List (project list will contain project name and internal aperture project id).
7. In non-interactive (from command line) mode there are two arguments:
7a. "quiet" - exports all projects
7b. "quiet" "Project Information" - export only certain projects. the project information can be found in the log file.
8. Remove any images or folders from Finder export directory that do not exist in Aperture database any more.
Hopefully this would help anyone who is looking to export from Aperture on a regular basis. I am not sure how it will handle large amount of photos. I tested it with 3k+ photos.
Please note that you use this script at your own risk.
Here is the script code:
global theFoldersTree_G
global theLibraryPath_G
global theProcessedProjects_G
global theSelectedProjects_G
global theAllAlbums_G
global theScriptName_G
global Sqlite_G
global ApertureLibrary_G
global numExports_G
on run argv
set Sqlite_G to "/usr/bin/sqlite3"
set ApertureLibraryPath to POSIX path of (path to home folder) & "Pictures/"
set ApertureLibrary_G to ApertureLibraryPath & "Aperture Library.aplibrary/Aperture.aplib/Library.apdb"
set exportFolder to POSIX path of (path to home folder) & "Pictures/Aperture Exports/"
set theScriptName_G to "ExportApertureLibrary"
set theSelectedProjects_G to "ALL PROJECTS"
set theFoldersTree_G to {}
set theProcessedProjects_G to {}
set theAllAlbums_G to {}
set numExports_G to 0
logEvent("Started")
set theArgv1 to {}
set theArgv2 to {}
if (count of argv) ≥ 1 then
set theArgv1 to item 1 of argv
end if
if (count of argv) = 2 then
set theArgv2 to item 2 of argv
end if
logEvent("Passed ARGV 1: " & theArgv1)
logEvent("Passed ARGV 2: " & theArgv2)
if theArgv1 is not equal to "quiet" then
set theFile to (choose file with prompt "Please choose the Aperture Library file" default location POSIX file ApertureLibraryPath) as string
set ApertureLibrary_G to POSIX path of theFile & "Aperture.aplib/Library.apdb"
set exportFolder to POSIX path of (choose folder with prompt "Please choose the export folder" default location POSIX file exportFolder) as string
end if
logEvent("ApertureLibrary_G path is set to: " & ApertureLibrary_G)
logEvent("exportFolder path is set to: " & exportFolder)
try
tell application "Aperture"
logEvent("Getting list of project path information...") of me
set SqlStatement to "
select replace(A.ZLIBRARYRELATIVEPATH,'.approject',''),A.ZUUID
from ZRKFOLDER AS A
WHERE A.ZFOLDERTYPE=2
ORDER BY A.ZNAME"
set SQLProjectUUIDPath to DB_execute(SqlStatement) of me
set theProjectsOptions to SQLProjectUUIDPath as list
set end of theProjectsOptions to "ALL PROJECTS"
logEvent("Projects list: " & theProjectsOptions as string) of me
if theArgv1 is not equal to "quiet" then
set theSelectedProjects_G to choose from list SQLProjectUUIDPath with prompt "Please choose a project(s):"
end if
if theArgv2 is not equal to {} then
set theSelectedProjects_G to theArgv2
end if
logEvent("The selected projects : " & theSelectedProjects_G as string) of me
logEvent("Getting list of libraries...") of me
set theLibraryList to every library
logEvent("Found " & (count of theLibraryList) & " libraries") of me
repeat with theLibrary in theLibraryList
set theLibraryName to name of theLibrary
logEvent("Processing library: " & theLibraryName) of me
set LibraryFolders to {}
set theProcessedProjects_G to {}
tell application "Finder"
if not (exists (POSIX file (exportFolder & theLibraryName) of me)) then
logEvent("creating new folder " & theLibraryName & " at " & exportFolder) of me
make new folder at (POSIX file exportFolder of me) with properties {name:theLibraryName}
end if
end tell
set theLibraryPath_G to exportFolder & theLibraryName & "/"
logEvent("Getting list of folders...") of me
set theFolderList to every folder of library id (id of theLibrary)
logEvent("Found " & (count of theFolderList) & " folders") of me
set theRootFolderList to {}
if theFolderList is not equal to {} then
processFoldersTree(0, theFolderList) of me
repeat with theFolder in theFolderList
if (id of theFolder) is not in theFoldersTree_G as string then
logEvent("Found root folder : " & (name of theFolder) as string) of me
set end of theRootFolderList to theFolder
set end of LibraryFolders to (name of theFolder)
end if
end repeat
end if
if theRootFolderList is not equal to {} then
processFolders(theRootFolderList, theLibraryPath_G, "projects") of me
processFolders(theRootFolderList, theLibraryPath_G, "albums") of me
else
set theProjectList to every project of library id (id of theLibrary)
set end of LibraryFolders to processProjects(theProjectList, theLibraryPath_G, "projects") of me as list
processProjects(theProjectList, theLibraryPath_G, "albums") of me
end if
logEvent("Getting list of projects...") of me
set theProjectList to every project of library id (id of theLibrary)
logEvent("Found " & (count of theProjectList) & " projects") of me
logEvent("Getting list of albums...") of me
set theAlbumList to every album of library id (id of theLibrary)
logEvent("Found " & (count of theAlbumList) & " albums") of me
set theRootProjectList to {}
if theProjectList is not equal to {} then
repeat with theProject in theProjectList
if (id of theProject) is not in theProcessedProjects_G as string then
logEvent("Found root project : " & (name of theProject) as string) of me
set end of theRootProjectList to theProject
set end of LibraryFolders to (name of theProject)
end if
end repeat
end if
set theRootAlbumList to {}
if theAlbumList is not equal to {} then
processAlbumsTree(theProjectList, theFolderList) of me
set theRootAlbumList to {}
repeat with theAlbum in theAlbumList
if (id of theAlbum) is not in theAllAlbums_G as string then
logEvent("Found root album : " & (name of theAlbum) as string) of me
set end of theRootAlbumList to theAlbum
set end of LibraryFolders to (name of theAlbum)
end if
end repeat
end if
if theRootProjectList is equal to {} then
processAlbums(theRootAlbumList, theLibraryPath_G, "albums") of me
else
processProjects(theRootProjectList, theLibraryPath_G, "projects") of me
processProjects(theRootProjectList, theLibraryPath_G, "albums") of me
if theRootAlbumList is not equal to {} then
processAlbums(theRootAlbumList, theLibraryPath_G, "albums") of me
end if
end if
cleanup(LibraryFolders, theLibraryPath_G, "all") of me
end repeat
logEvent("total exports : " & numExports_G) of me
if theArgv1 is not equal to "quiet" then
display dialog "Total image exports : " & numExports_G buttons {"OK"} with title "Aperture Library Export" with icon note
end if
end tell
on error s number i partial result p from f to t
set s to "Error: " & s
logEvent(quoted form of (s))
if theArgv1 is not equal to "quiet" then
display dialog "ERROR : " & s buttons {"OK"} with title "Aperture Library Export" with icon note
end if
end try
end run
on cleanup(theObjects, thePath, theSelection)
logEvent("Cleaning export folders...") of me
logEvent("# Objects: " & (count of theObjects)) of me
logEvent("Export Folder: " & (thePath as string))
tell application "Finder"
logEvent("Getting list of folders...") of me
set theFolderList to every folder in folder (POSIX file thePath of me)
logEvent("Found " & (count of theFolderList) & " folders") of me
logEvent("Getting list of files...") of me
set theFileList to every file in folder (POSIX file thePath of me)
logEvent("Found " & (count of theFileList) & " files") of me
repeat with theFolder in theFolderList
set theFolderName to name of theFolder
if theFolderName is not in theObjects as string then
logEvent("Moving folder " & theFolder & " to trash...") of me
move theFolder to trash
end if
end repeat
if theSelection is not equal to "folder" then
repeat with theFile in theFileList
set theFileName to name of theFile
if theFileName is not in theObjects as string then
logEvent("Moving file " & theFile & " to trash...") of me
move theFile to trash
end if
end repeat
end if
end tell
logEvent("Cleaning completed...") of me
end cleanup
on logEvent(logMessage)
set theLine to quoted form of (((current date) as string) ¬
& " : " & logMessage)
do shell script "echo " & theLine & ¬
" >> ~/Library/Logs/AppleScript" & theScriptName_G & ".log"
end logEvent
on DB_lookupProjectPath(puuid)
set SqlStatement to "
select replace(rtrim(ZLIBRARYRELATIVEPATH,'.approject'),'/',':' )
from ZRKFOLDER
where
ZUUID ='" & puuid & "'"
set SqlRecords to DB_execute(SqlStatement)
return DB_record(SqlRecords, 1, 1)
end DB_lookupProjectPath
on processFolders(theFoldersList, theFolderPath, processOrder)
logEvent("processFolders... : " & theFolderPath) of me
set arrayOfFolders to {}
tell application "Aperture"
set theCount to count of theFoldersList
set theCounter to 1
repeat with theFolder in theFoldersList
set foldersOfFolder to {}
set theFolderName to name of theFolder
logEvent("Processing folder : " & theFolderName & " (" & theCounter & "/" & theCount & ")") of me
set theCounter to theCounter + 1
set end of arrayOfFolders to theFolderName
tell application "Finder"
if not (exists (POSIX file (theFolderPath & theFolderName) of me)) then
logEvent("creating new folder " & theFolderName & " at " & theFolderPath) of me
make new folder at (POSIX file theFolderPath of me) with properties {name:theFolderName}
end if
end tell
logEvent("Getting list of album...") of me
set theAlbumsListOfFolder to every album of folder id (id of theFolder)
logEvent("Found " & (count of theAlbumsListOfFolder) & " albums") of me
logEvent("Getting list of folder...") of me
set theFolderListOfFolder to every folder of folder id (id of theFolder)
logEvent("Found " & (count of theFolderListOfFolder) & " folders") of me
logEvent("Getting list of project...") of me
set theProjectsListOfFolder to every project of folder id (id of theFolder)
logEvent("Found " & (count of theProjectsListOfFolder) & " projects") of me
if theProjectsListOfFolder is not equal to {} then
set end of foldersOfFolder to processProjects(theProjectsListOfFolder, (theFolderPath & theFolderName & "/"), processOrder) of me as list
end if
if theFolderListOfFolder is equal to {} then
set end of foldersOfFolder to processAlbums(theAlbumsListOfFolder, (theFolderPath & theFolderName & "/"), processOrder) of me as list
else
if theAlbumsListOfFolder is not equal to {} then
set end of foldersOfFolder to processAlbums(theAlbumsListOfFolder, (theFolderPath & theFolderName & "/"), processOrder) of me as list
end if
set end of foldersOfFolder to processFolders(theFolderListOfFolder, (theFolderPath & theFolderName & ":"), processOrder) of me as list
end if
cleanup(foldersOfFolder, (theFolderPath & theFolderName & "/"), "all") of me
end repeat
end tell
logEvent("processFolders completed...") of me
return arrayOfFolders
end processFolders
on processFoldersTree(theParent, theFoldersList)
logEvent("processFoldersTree...") of me
tell application "Aperture"
repeat with theFolder in theFoldersList
if theParent is not 0 then
set end of theFoldersTree_G to (id of theFolder)
end if
set theFolderListOfFolder to every folder of folder id (id of theFolder)
if theFolderListOfFolder is not equal to {} then
processFoldersTree((id of theFolder), theFolderListOfFolder) of me
end if
end repeat
end tell
logEvent("processFoldersTree completed...") of me
end processFoldersTree
on processAlbumsTree(theProjectsList, theFoldersList)
logEvent("processAlbumsTree...") of me
set theAllAlbums_G to {}
tell application "Aperture"
repeat with theProject in theProjectsList
repeat with theAlbum in (every album of project id (id of theProject))
set end of theAllAlbums_G to (id of theAlbum)
end repeat
end repeat
repeat with theProject in theProjectsList
repeat with theAlbum in (every album of every subfolder of project id (id of theProject))
set end of theAllAlbums_G to (id of theAlbum)
end repeat
end repeat
repeat with theFolder in theFoldersList
repeat with theAlbum in (every album of folder id (id of theFolder))
set end of theAllAlbums_G to (id of theAlbum)
end repeat
end repeat
end tell
logEvent("processAlbumsTree completed...") of me
end processAlbumsTree
on DB_lookupImageInfo(puuid)
set SqlStatement to "
SELECT replace(A.ZLIBRARYRELATIVEPATH,'.approject',''),strftime('%m/%d/%Y %H:%M:%S',datetime(B.ZDATELASTSAVEDINDATABASE, 'unixepoch', '+31 years','localtime'))
from ZRKFOLDER AS A,ZRKVERSION AS B
where
B.ZPROJECTUUID = A.ZUUID AND
B.ZUUID ='" & puuid & "'"
set SqlRecords to DB_execute(SqlStatement)
return {theImagePath:DB_record(SqlRecords, 1, 1), theImageDate:DB_record(SqlRecords, 1, 2)}
end DB_lookupImageInfo
on processProjects(theProjectsList, theProjectPath, processOrder)
logEvent("processProjects... : " & theProjectPath) of me
logEvent("processOrder: " & processOrder) of me
set arrayOfProjects to {}
tell application "Aperture"
set theCount to count of theProjectsList
set theCounter to 1
repeat with theProject in theProjectsList
set ProjectFolders to {}
set theProjectName to name of theProject
set end of arrayOfProjects to theProjectName
set theContinue to 0
if "ALL PROJECTS" is not in theSelectedProjects_G as string then
if (id of theProject) is not in theSelectedProjects_G as string then
logEvent("Skipping project: " & theProjectName) of me
set theContinue to 1
end if
end if
if theContinue = 0 then
-- set theProjectPath to theProjectPath & DB_lookupProjectPath(id of theProject) of me
logEvent("Processing project : " & theProjectName & " (" & theCounter & "/" & theCount & ")") of me
tell application "Finder"
if not (exists (POSIX file (theProjectPath & theProjectName) of me)) then
logEvent("creating new folder " & theProjectName & " at " & theProjectPath) of me
make new folder at (POSIX file theProjectPath of me) with properties {name:theProjectName}
end if
end tell
if processOrder is equal to "projects" then
set end of theProcessedProjects_G to (id of theProject)
logEvent("Getting list of images...") of me
set theImageList to every image version of project id (id of theProject) as list
logEvent("Found " & (count of theImageList) & " images") of me
set end of ProjectFolders to processImages(theImageList, (theProjectPath & theProjectName & "/"), "project", "JPEG - Original Size") of me as list
end if
logEvent("Getting list of subfolders...") of me
set theSubfolderList to every subfolder of project id (id of theProject)
logEvent("Found " & (count of theSubfolderList) & " subfolders") of me
logEvent("Getting list of album...") of me
set theAlbumList to every album of project id (id of theProject)
logEvent("Found " & (count of theAlbumList) & " albums") of me
if theSubfolderList is equal to {} then
set end of ProjectFolders to processAlbums(theAlbumList, (theProjectPath & theProjectName & "/"), processOrder) of me as list
else
if theAlbumList is not equal to {} then
set end of ProjectFolders to processAlbums(theAlbumList, (theProjectPath & theProjectName & "/"), processOrder) of me as list
end if
set end of ProjectFolders to processSubfolders(theSubfolderList, (theProjectPath & theProjectName & "/"), processOrder) of me as list
end if
if processOrder is equal to "projects" then
cleanup(ProjectFolders, (theProjectPath & theProjectName & "/"), "all") of me
else
cleanup(ProjectFolders, (theProjectPath & theProjectName & "/"), "folder") of me
end if
end if
set theCounter to theCounter + 1
end repeat
end tell
logEvent("processProjects completed...") of me
return arrayOfProjects
end processProjects
on exportImage(imageUUID, imageName, exportFolder, imageType, isAlbum, exportSettings, imageExt)
set imageInfo to DB_lookupImageInfo(imageUUID) of me
set imageTime to theImageDate of imageInfo as Unicode text
set imageDate to date imageTime
set isExported to 0
set imageName to imageName & imageExt
set theFile to POSIX file (exportFolder & imageName)
tell application "Finder"
set isUpdate to 0
if not (exists theFile) then
logEvent("Image does not exist in folder : " & exportFolder) of me
set isUpdate to 1
else
logEvent("Get image modification date") of me
do shell script "ls -l " & quoted form of (exportFolder & imageName)
set imageFileDate to modification date of (info for theFile)
if imageDate ≥ imageFileDate then
logEvent("Image file date: " & imageFileDate as string) of me
set isUpdate to 1
end if
end if
if isUpdate = 1 then
if exists theFile then
move theFile to the trash
end if
if isAlbum is equal to "album" then
logEvent("Creating a link for image: " & imageName) of me
set theProjectFolder to theImagePath of imageInfo
do shell script "ln " & quoted form of (theLibraryPath_G & theProjectFolder & "/" & imageName) & " " & quoted form of exportFolder
else
set isExported to 1
logEvent("Exporting image: " & imageName) of me
tell application "Aperture"
if imageType is "master" then
set settings to exportSettings
export {image version id imageUUID} using settings to POSIX path of file exportFolder metadata embedded
else
set settings to exportSettings
export {image version id imageUUID} using settings to POSIX path of file exportFolder metadata embedded
end if
end tell
end if
end if
end tell
return isExported
end exportImage
on DB_execute(SqlStatement)
try
set SqlScript to Sqlite_G & space & "-separator '|'" & space & (quoted form of ApertureLibrary_G) & space & (quoted form of SqlStatement) & " 2>&1"
set SqlResult to do shell script SqlScript
set theARray to {}
set tid to AppleScript's text item delimiters
set AppleScript's text item delimiters to ASCII character 13
set SqlRecords to text items of SqlResult
set AppleScript's text item delimiters to tid
return SqlRecords
on error s number i partial result p from f to t
set s to "SQL Error: " & s
logEvent(quoted form of (s)) of me
end try
end DB_execute
on DB_record(SqlRecords, row, col)
try
set tid to AppleScript's text item delimiters
set AppleScript's text item delimiters to "|"
set SqlCols to text items of (item row of SqlRecords)
set AppleScript's text item delimiters to tid
return item col of SqlCols
on error
return {}
end try
end DB_record
on DB_lookupRecord(SqlRecords, theReturnCol, theText, theCol)
set theResult to ""
repeat with theRow in items of SqlRecords
set tid to AppleScript's text item delimiters
set AppleScript's text item delimiters to "|"
set theFields to text items of theRow
set AppleScript's text item delimiters to tid
if item theCol of theFields is equal to theText then
set theResult to item theReturnCol of theFields
exit repeat
end if
end repeat
return theResult
end DB_lookupRecord
on processImages(theImageList, exportFolder, isAlbum, exportSettings)
logEvent("processImages... : " & exportFolder) of me
if exportSettings contains "JPEG" then
set imageExt to ".jpg"
else
set imageExt to ".ANY"
end if
set arrayOfImages to {}
with timeout of 6000 seconds
set theCount to count of theImageList
set theCounter to 1
repeat with theImage in theImageList
set imageUUID to id of theImage
set imageName to name of theImage
set end of arrayOfImages to imageName & imageExt
logEvent("Processing image : " & imageName & " (" & theCounter & "/" & theCount & ")") of me
set numExports_G to numExports_G + (exportImage(imageUUID, imageName, exportFolder, "version", isAlbum, exportSettings, imageExt) of me)
set theCounter to theCounter + 1
end repeat
end timeout
return arrayOfImages
end processImages
on processAlbums(theAlbumsList, theAlbumPath, processOrder)
logEvent("processAlbums... : " & theAlbumPath) of me
set arrayOfAlbums to {}
tell application "Aperture"
set theCount to count of theAlbumsList
set theCounter to 1
repeat with theAlbum in theAlbumsList
set theAlbumName to name of theAlbum
logEvent("Processing album : " & theAlbumName & " (" & theCounter & "/" & theCount & ")") of me
set theCounter to theCounter + 1
set AlbumObjects to {}
set end of arrayOfAlbums to theAlbumName
tell application "Finder"
if not (exists (POSIX file (theAlbumPath & theAlbumName) of me)) then
logEvent("creating new folder " & theAlbumName & " at " & theAlbumPath) of me
make new folder at (POSIX file theAlbumPath of me) with properties {name:theAlbumName}
end if
end tell
logEvent("Getting list of images...") of me
set theImagesList to every image version of album id (id of theAlbum)
logEvent("Found " & (count of theImagesList) & " images") of me
if processOrder is equal to "albums" then
set end of AlbumObjects to processImages(theImagesList, (theAlbumPath & theAlbumName & "/"), "album", "JPEG - Original Size") of me as list
cleanup(AlbumObjects, (theAlbumPath & theAlbumName & "/"), "all") of me
end if
end repeat
end tell
logEvent("processAlbums completed...") of me
return arrayOfAlbums
end processAlbums
on processSubfolders(theSubfoldersList, theSubfolderPath, processOrder)
logEvent("processSubfolders... : " & theSubfolderPath) of me
set arrayOfSubfolders to {}
tell application "Aperture"
set theCount to count of theSubfoldersList
set theCounter to 1
repeat with theSubfolder in theSubfoldersList
set theSubfolderName to name of theSubfolder
logEvent("Processing subfolder : " & theSubfolderName & " (" & theCounter & "/" & theCount & ")") of me
set theCounter to theCounter + 1
set end of arrayOfSubfolders to theSubfolderName
tell application "Finder"
if not (exists (POSIX file (theSubfolderPath & theSubfolderName) of me)) then
logEvent("creating new folder " & theSubfolderName & " at " & theSubfolderPath) of me
make new folder at (POSIX file theSubfolderPath of me) with properties {name:theSubfolderName}
end if
end tell
set SubfoldersFolders to {}
logEvent("Getting list of albums ...") of me
set theAlbumsListOfSubfolder to every album of subfolder id (id of theSubfolder)
logEvent("Found " & (count of theAlbumsListOfSubfolder) & " albums") of me
logEvent("Getting list of subfolders...") of me
set theSubfoldersListOfSubfolder to every subfolder of subfolder id (id of theSubfolder)
logEvent("Found " & (count of theSubfoldersListOfSubfolder) & " subfolders") of me
if theSubfoldersListOfSubfolder is equal to {} then
set end of SubfoldersFolders to processAlbums(theAlbumsListOfSubfolder, (theSubfolderPath & theSubfolderName & "/"), processOrder) of me as list
else
if theAlbumsListOfSubfolder is not equal to {} then
set end of SubfoldersFolders to processAlbums(theAlbumsListOfSubfolder, (theSubfolderPath & theSubfolderName & "/"), processOrder) of me as list
end if
set end of SubfoldersFolders to processSubfolders(theSubfoldersListOfSubfolder, (theSubfolderPath & theSubfolderName & "/"), processOrder) of me as list
end if
cleanup(SubfoldersFolders, (theSubfolderPath & theSubfolderName & "/"), "all") of me
end repeat
end tell
logEvent("processSubfolders completed...") of me
return arrayOfSubfolders
end processSubfoldersIf you do externalize your Masters to folders anywhere (same drive, internal/external drive, multiple drives, whatever), never be tempted to use Finder to mess with them.
As Frank said, use Relocate Masters. Otherwise you'll confuse Aperture when it wakes up expecting Masters to be in certain places when they have moved elsewhere.
It's possible to fix up the mess, but it's no fun! -
Accidental PS edit save to the Aperture Library / How to remove
In my haste I accidentally saved a ps edit to the aperture library instead of the desktop. Normally I wouldn't be concerned about it but it's meant to print to mural size and it's huge. I can see it in the save directory via PS but am otherwise unable to get to it via the finder.
Any thoughts would be appreciated.
ThanksAll this is a big help but...
I think he might be asking how to navigate the Aperture library via finder because he can't see the file in Aperture. Maybe not. In any case you can right click on the Aperture library and use show package contents to navigate within the library.
If you do be berry berry careful when hunting wabbits.
RB
Ps. Was that tactful enough or is someone gonna call me names? -
Aperture library not showing in mail, iweb or iphoto
After upgrading to 3.1 my Aperture Library is not coming up in other applications. It also is not showing up as an option for screen saver. Anyone have this issue?
Do you have everything looking right inside the library? Can you go into your Aperture library bundle and see if you have the following files: an ApertureData.xml file, an iLifeShared folder, and inside the iLifeShared folder a file called ApertureDatabaseTimestamp?
-
Transfering aperture library via vault to new comp
I apologize in advance if my question already have been answered in another thread. But I couldn't find any threads matching my problems.
I recently bought the new iMac after my old 24" could not handle the pressure anymore. I wanted to move my aperture library from the old to the new. And ofcourse I wanted all info (adjustment changes and so on) to come with in the move. After reading a few threads on the subject I created a "Vault" that I later opened up in the new comp. At a fist glance everything looks great in aperture but when opening up a picture to make adjustments it says "image offline".
On my old comp I can see (where my pics are stored) two aperture files:
Aperture Library
Aperture Library_original
…so far so good.
But then that are tons (well, many) folders named like my projects in aperture. And not folders within the aperture library file but stand alone…if that makes any sense.
What am I doing wrong? I get all the pics over to my new comp with the help of Vault but can't edit any of my pics from a few months back (when for some reason aperture started to create folders outside the library file)
On my new iMac i have 2 files
Aperture Library
Aperture Library_old
...so no folders got transfered
/Jonatan, swedenIt looks like your Aperture library were a referenced library. When you imported your image files you did not import the originals into the Aperture library, but stored them in folders outside the library. That are folders named like your projects that you are seeing. When Aperture needs to access the originals to render edited versions, it will reference the image files in those folders, see this section in the Aperture 3 User Manual: Aperture 3 User Manual: Working with Referenced Images
When you create a vault, Aperture will only include images that you imported into the library, not the originals you stored outside. You need to copy the folders with projects as well to your new mac and reconnect them to the image versions, otherwise you will not be able to edit your images.
But it looks like you did create these folders outside accidentally and did not intend to use referenced original files. If that is so, I'd suggest to repair this, by consolidating your library.
Select the "Photos" view in the source list of your Aperture Library and select all your images at once.
Then use the command "File > Consolidate Originals" from the main menu bar. This will move (or copy) all referenced images from the folders outside into your Aperture library.
When you now create a vault, it will contain all images. Use this new vault to recreate your Aperture library on your new mac. You can also simply copy your Aperture library itself to your new mac. You do not need the detour using a vault.
BTW: Where Aperture will store the originals image files depends on the settings in the "Import" panel. Make sure the "Store Files" option is set to "In the Aperture Library".
Regards
Léonie
Maybe you are looking for
-
Installing Windows 7 64 bit on a Satellite P500
I bought the above mentioned system back in August last year with 32 bit Windows 7 installed. I understand that it's not possible to upgrade and that a complete new installation is required. Is it necessary to format the hard drive first? Have backed
-
High uccx engine memory usage in uccx8.2 su4
Hi all, We are facing High uccx engine memory usage ,our system version uccx 8.2 su4,when ever this problem hapening we are facing all agent desktop failure also.Any one facing this same issue.Kindly attached RTMT screen shot. Thanks.
-
Keyboard error in Dreamweaver CS3
Dreamweaver part of the CS3 suite was working perfectly. Then... recently certain keys on my keyboard won't type at all. This is only in Dreamweaver. Puzzled as never encounterd this before (changed keyboard etc but same result) I dont usually work i
-
Source files missing after wsus install
2 days ago I decided to install WSUS and SUP on our SCCM 2012 server and all was going good until this am when I discovered the folder that I keep all of my software deployment in under the sourcefiles share was empty. I did take a snapshot of the s
-
Unknown PT XML tag userInfo userinfo
When using a transformer tag for userinfo in a load balanced environment "one" of the servers returns "<!--unknown PT XML tag 'userInfo-->". The same code works fine on 3 other servers. What would cause this? I am suspecting it is some configuration