Q: Old Toad did some great scripts for Photos, but I need one more
Old Toad did some great scripts for Photos, but I need one more.
A script that would copy the Keywords to Titles might be my answer.
http://www.oldtoadstutorials.net/No.P01.html
You see, I started with iPhoto and later started using Aperture. With iPhoto and Aperture you can have ANY metadata shown below the Thumbnails, (nice). Well, I put descriptions of all of my images in the Keywords section because it really didn't matter, because these programs could show them below the Thumbnails.
Now I'm using that wonderful Photos program and I have discovered that it will ONLY show the "Title" of the image below the thumbnails. I've got about 30,000 images with Keywords but no Title. I would like to move / copy the text from the Keyword section into the Title section. I'm no computer expert, I guess that my skills are average. But I can follow directions.
A script that would copy the Keywords to Titles might be my answer.
Posted on Apr 28, 2016 12:26 PM
To get you started, try this script: I tested it on OS X 10.11.4
Only try it on small test library, and be sure to have a working backup of your library.
The script is not yet perfect, it will glue the keywords in the titles together without separators, so you still will have some editing to do. The handling of text separators in apple Script is so tedious, that I did not have time to handle that.
-- batch change the title of images to the keywords
(* How to use this script:
Open this script in Script Editor. Launch Photos.
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.
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.
When all all photo are selected or in the album and all parameters set, press the "Run" button in Scripteditor.
*)
set ReadFromAlbum to true
-- 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 {}
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
repeat with im in imageSel
try
tell im
-- retrieve the keywords
set kws to its keywords as string
if not (exists kws) then
set kws to ""
end if
--retrieve the old title
set thename to its name
if not (exists thename) then
set thename to ""
else
set thename to thename & " "
end if
set its name to thename & kws
end tell
on error errText number errNum
display dialog "Error: " & errNum & return & errText & "Trying again"
try
delay 2 -- wait and try again
tell im
-- retrieve the keywords
set kws to its keywords as string
if not (exists kws) then
set kws to ""
end if
--retrieve the old title
set thename to its name
if not (exists thename) then
set thename to ""
else
set thename to thename & " "
end if
set its name to thename & kws
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"
return "Done"
Posted on Apr 30, 2016 1:07 AM