Currently Being Moderated

Script: How to find photos without any keywords

Photos 1.5 has no option to search for photos that have not yet have any keywords assigned, like we could in Aperture or iPhoto.  There is no search rule "Keyword is none" for the smart albums.

The Apple Script below can be used to find look at selected photos in Photos and to add all photos to an album, that do not have any keywords. I put a version of this script into my Dropbox:

 

 

 

https://dl.dropboxusercontent.com/u/45503699/Photos_find_photos_with_no_keywords .scpt

 

(* Find All Photos Without Keywords   © Léonie

  --------------------------------

 

This script will scan the photos passed to it for keywords and add  all photos without keywords to a standard album called missingKeywordsAlbum

 

To use this script, select a some photos in Photos to check for missing keyword.

Then press the "Run" button.

 

 

The photos can be passed to the script in two ways:

1. Either select photos while viewing the  "All Photos" album; this works better than Moments or smart albums

2. Or collect the Photos in a top level defined album with a fixed name. This is safer when your Photos Library is an iCloud Photo Library.

 

If you want to select the photos without collecting them in an album, set the variable "ReadFromAlbum" to false

If you want to pass the photos in a toplevel album, set ReadFromAlbum to true and change the variable "theAlbumName" to the name of the album you are using.

 

*)

 

set ReadFromAlbum to false

 

-- set this to true, if you want to pass the photos in a toplevel album

set theAlbumName to "PhotoDropBox" -- change this to the name of the album you will use

 

 

set imageSel to {}

set saved_delimiter to AppleScript's text item delimiters --save the delimiter

set missingalbumname to "missingKeywordsAlbum"

 

tell application "Photos"

  activate

  if (ReadFromAlbum) then -- the photos will be passed in a toplevel album named "PhotoDropBox"

 

  try

 

  if exists container theAlbumName then

 

  set thePhotosBuffer to container theAlbumName

  set imageSel to every media item of thePhotosBuffer

  else

  error "Album " & theAlbumName & "does not exist"

  end if

 

  on error errTexttwo number errNumtwo

  display dialog "Cannot open album: " & errNumtwo & return & errTexttwo

  end try

 

  else -- process the selected photos from the All Photos album

  try

  set imageSel to (get selection)

  on error errTexttwo number errNumtwo

  display dialog "Cannot get the selection: " & errNumtwo & return & errTexttwo

  end try

 

  end if

 

  -- check, if the album or the selected photos do contain images

  if imageSel is {} then

  error "Please select some images."

  else -- create an album for the photos without keywords

  try

 

  if exists container missingalbumname then

 

  set kwa to container missingalbumname

  else

  set kwa to (make new album named missingalbumname)

 

  end if

 

  on error errTexttwo number errNumtwo

  display dialog "Cannot open album missingKeywordsAlbum: " & errNumtwo & return & errTexttwo

  end try

 

  repeat with im in imageSel

 

  try

 

  tell im

  --set the text item delimiter

  set AppleScript's text item delimiters to {", "} --use a comma and space as the delimiter

  -- retrieve the keywords

 

  set kws to its keywords as string

  if (not (exists kws) or (kws is "missing value")) then

  add {im} to kwa

  end if

 

  end tell

  on error errText number errNum

  display dialog "Error: " & errNum & return & errText & "Trying again"

  try

  delay 2 -- wait and try again

  tell im

  --set the text item delimiter

  set AppleScript's text item delimiters to {", "} --use a comma and space as the delimiter

  -- retrieve the keywords

 

  set kws to its keywords as string

  if (not (exists kws) or (kws is "missing value")) then

  add {im} to kwa

  end if

 

  end tell

  on error errTexttwo number errNumtwo

  display dialog "Skipping image due to repeated error: " & errNumtwo & return & errTexttwo

  end try

  end try

  end repeat

  end if

end tell

-- display dialog "Done"

set AppleScript's text item delimiters to saved_delimiter --restore  the delimiter

 

return "Done"

Replies

Delete User Tip

Are you sure you want to delete this user tip?