Where are photo file names?

I've "titled" many, many photos in iPhoto by changing the filename (e.g. "DSC_2254" --> "On vacation in Hawaii"), but there appears to be no option in Photos to show the filename. So none of my "titles" appear. Am I missing something?

iMac (Retina 5K, 27-inch, Late 2014), OS X Yosemite (10.10.3)

Posted on Apr 9, 2015 7:56 AM

Reply
Question marked as Top-ranking reply

Posted on Feb 8, 2018 4:28 AM

If you open your Photos Library in Power Photos as a second browser, you can seethe metadata as column in a nice list view, or you can show the filenames as a subtitle below the thumbnails.

Even the free trial version can do this.

User uploaded file

As an added bonus, the grid view can show the thumbnails on a dark background:

User uploaded file

For a very large library PowerPhotos needs a long time to launch, so I simply keep it open at all the time.

282 replies

Apr 15, 2015 2:12 AM in response to léonie

To add to the confusion, file names of photos does not seem to follow the file through synchronization between Macs using iCloud Photo Library, but are changed outside of users control. Maybe Apple will fix this in the next version, but currently I experience that if I have imported a file to Photos named e.g. "2014_summervacation_1" from a folder, when it syncronizes to the other mac, the file there may be called IMGXXXX.jpg. How consistant is that? So a workaround would maybe be to store the filename in the metadata as you are discussing here. Can anyone confirm that this file renaming is automatically happening?

Apr 15, 2015 8:48 AM in response to rbakke

I just noticed this morning, that the filename2title script has stopped working. I get no error message, but nothing happens. I tried opening Automator and stepping through the script, and it completes with no errors, but the (one) image I had selected doesn't get a title. The only thing that has changed is that Photos has completed uploading my complete library to iCloud. As I mentioned in an earlier post, the titles changed by the script don't make it back to the other devices linked to iCloud Photos. The rest of the metadata is intact, but the title is blank again. Ugh.


David

Apr 16, 2015 12:45 PM in response to Chris Lyons

My advice is to:


(1) Reboot your system and try again

and/or

(2) Open automator and try stepping through the script.


I got the same error the first couple of times I tried to run the script, but rebooting and stepping through the script seem to fix whatever problem was occurring.


The script is back working for me again after failing for a while.


I have pretty much decided to go back to Lightroom for all my photo organization and processing. I will only use Photos for my iPhone shots.


David

Apr 17, 2015 9:11 AM in response to DRedfearn

David;


Thanks. I rebooted but to no avail, so I logged in under my admin account and it works but only if run from Automator. Since this is my first attempt at scripting, maybe scripts only work from admin accounts. Also, the Service does not show up in Photos' menu system even though its visible in the \Library\Services folder. So I created a workflow app that works OK when run after selecting some photos. Fortunately Automator is reasonably self evident to use.


On a related topic, I tried deleting the newly created filename-as-title and tried the script again. Does not work. Its almost as if once a title is created and then deleted the script "sees" a title and won't overwrite it. Do you have any ideas as to a different script that would erase a previously created title ?


Thanks in advance .... Chris

Apr 17, 2015 9:31 AM in response to Chris Lyons

There is something very strange going with with how OS X handles the service scripts. It took me two or three tries to get the script working (rebooting, stepping through the script, etc.). Then it stopped working (after my library had been completely uploaded to iCloud Photos). Then it started working again. I am not a script expert, so I have no idea of what is going on here. And, I have noted that the titles don't show up on my linked devices (a second iMac and a MBA - along with an iPhone 5s and an iPad Mini Retina). You could go back to the original author (leonie - who is very helpful) and ask, but I suspect the script treats a "blank" Title (which you get when you manually delete the Title text) as present - as distinct from an "absent" title. If the script thinks the Title is present, it won't update. This is only a guess, however.


I have gotten the script to work both in my own (administrator) account, and my wife's standard user account. This is on the same iMac. I had to create the script twice - once under my account and then again under my wife's account. So, I know it doesn't require an administrative account. There doesn't seem to be any way to create the service and make it available to all users on the same Mac.


I hope Apple clears up some of these details, but the articles I have read so far (the TidBITS FAQ by Joe Kissell is very good) leave some things a mystery - basically, the reviewers have to experiment with the software - and as we have seen, you don't get consistent results.


I have decided that Photos is not for me. I am going to migrate all my "real" photo organization and editing to Lightroom. I have used LR for several years, but split my usage between iPhoto and LR. Now, I think Photos is only good for my iPhone photos, and that is what I am going to do. It will save me some money too, as I purchased the 500GB iCloud package because of the size of my libraries.


David

May 3, 2015 7:29 AM in response to Community User

Hi,


I'd started with a script that included the extensions but then realised that I'd rather remove them. Possibly a little late in the day for you but this is my variation on the theme:


tell application "Photos"


activate

set updated to 0

set info to "Photos | Filename to Title"

set images to (get selection)

if images is {} then

display dialog "Please select items in Photos before calling this script." with titleinfobuttons {"OK"} giving up after 5

else

repeat with image in images

set title to the name of image

if not (exists (title)) or title = "" then

set revTitle to (reverse of (characters of the filename of image)) as string

set pos to offset of "." in revTitle

set prefix to (reverse of (characters (pos + 1) thru -1 of revTitle)) as string

set the name of image to prefix

set updated to updated + 1

else

set revTitle to (reverse of (characters of title)) as string

set pos to offset of "." in revTitle

set prefix to (reverse of (characters (pos + 1) thru -1 of revTitle)) as string

set postfix to (reverse of characters 1 thru (pos - 1) of revTitle) as string

if (offset of postfix in "jpg|mov|png") > 0 then -- Extend list as required

set the name of image to prefix

set updated to updated + 1

end if

end if

end repeat

if updated = 1 then

set message to " item was updated."

else

set message to " items were updated."

end if

if updated = 0 then

set message to "No" & message

else

setmessageto(updated as string) & message

end if


display dialogmessagewith titleinfobuttons {"OK"}

end if

end tell


This will add the filename without the extension as an image title, or remove any extension currently included in the title. I haven't caught up with all of the discussions but it seems that Photos can sometimes bomb out when running the script on large numbers of items, and it may be more reliable when running the script with the contents of an Album rather than the global photos collection.


tt2

May 3, 2015 7:51 AM in response to turingtest2

turingtest2 wrote:

I haven't caught up with all of the discussions but it seems that Photos can sometimes bomb out when running the script on large numbers of items, and it may be more reliable when running the script with the contents of an Album rather than the global photos collection.

That looks like a very useful, well thought out script!


I haven't tried it yet but as I noted somewhere in one of these discussions (& of course can't find now because the ASC search engine seems to be close to useless) it seems like sometimes Photos can't make changes in response to Apple Events very quickly & this causes random errors in Applescripts with repeat loops. A workaround for this that sometimes (but not always) works is to insert a brief delay in the repeat loop, like "delay 0.1" for a tenth of a second pause before beginning the next loop.


The downside is obvious: applying this to a large number of items can greatly extend the execution time but it still beats having to do everything manually or in small batches ... when it works.

May 3, 2015 8:01 AM in response to turingtest2

I'd started with a script that included the extensions but then realised that I'd rather remove them. Possibly a little late in the day for you but this is my variation on the theme:

How about including a parameter? Sometimes the filename extensions are useful, so we can see at a glance if we are about to trash the high resolution raw or a jpeg thumbnail.

May 3, 2015 1:26 PM in response to léonie

Is there a definitive list of the file types/extensions that Photos imports? As written the script will only remove the extensions .jpg, .mov, and .png from a title that has already been set, and it won't add any extensions to new titles it creates. It ought to be fairly easy to tweak things so that certain extensions are always added and others always removed, whether a title has already been set, or is being set for the first time from the filename, but I might as well make sure I know all of the correct extensions before I start. The user could edit the two parameters for included and excluded extensions.


tt2

May 3, 2015 4:24 PM in response to Old Toad

It would be easy enough to snip off the last four characters, but I want to make sure they are only removed if they match a known extension, so running the script repeatedly on the same selection won't have adverse effects.


The script I've posted will strip off .jpg, .mov, or .png already. For anything else expand the string of known file extensions as required, e.g. "jpg|mov|png" could become "jpeg|jpg|mov|png|tif|tiff" and any other extensions that you might want to remove. What extensions exist in your Photos library?


tt2

May 3, 2015 7:15 PM in response to léonie

Here is an improved version that allows specific extensions to be excluded or included in the titles.



-- Photos | Filename to Title | V1.2


-- Images with no title will have the filename used as the title

-- Use values below to exclide or include specfic file extensions from the generated title

-- Existing titles will be modified to add or remove any extension from the title as required


set exclude to ".jpeg.jpg.mov.png.tif.tiff" -- Extensions to exclude from the image titles

set include to ".cr2" -- Extensions to include in the image titles


tell application "Photos"

activate

set updated to 0

set info to "Photos | Filename to Title"

set images to (get selection)

if images is {} then

display dialog "Please select items in Photos before calling this script." with title info buttons {"OK"} giving up after 5

else

repeat with image in images

set fullName to filename of image

set title to the name of image

if not (exists (title)) or title = "" then

set title to fullName

set current to ""

else

set current to title

end if

set pos to offset of "." in ((reverse of characters of title) as string)

set prefix to characters 1 thru (-1 - pos) of title as string

if pos > 0 then

set postfix to characters -pos thru -1 of title as string

else

set postfix to ""

end if

set pos to offset of "." in ((reverse of characters of fullName) as string)

set ext to characters -pos thru -1 of fullName as string

if (offset of postfix in exclude) > 0 then

set newTitle to prefix

else

set newTitle to prefix & postfix

end if

if (offset of ext in include) > 0 and not ext = postfix then

set newTitle to newTitle & ext-- Or could test here and add something like " | RAW" for raw formats

end if

if not current = newTitle then

set the name of image to newTitle

set updated to updated + 1

end if

end repeat

if updated = 1 then

set message to " item was updated."

else

set message to " items were updated."

end if

if updated = 0 then

set message to "No" & message

else

set message to (updated as string) & message

end if

display dialogmessagewith titleinfobuttons {"OK"}

end if

end tell


It could be further enhanced by adding specific text to the title instead of the extension, e,g, add say " | RAW" instead of ".cr2", or various other automatic substitutions could be made.


tt2

May 3, 2015 9:05 PM in response to turingtest2

I noticed something I don't understand occurring in both the original & improved version of your script:


When I run it in Script Editor with the log window set to show replies, every time the script calls 'offsetof' inside the tell application "Photos" block, the log shows that statement returns error number -10004. That is immediately followed by an end tell, a tell current application block with a duplicate of the 'offsetof' statement that returns the correct offset value, & then another tell application "Photos" statement to resume the tell Photos block. For example:


tell application "Photos"


offset of ".jpg" in ".cr2"


--> error number -10004

end tell

tell current application


offset of ".JPG" in ".cr2"


--> 0

end tell

tell application "Photos"


This doesn't prevent the script from running -- it is like Photos can't hand off the offset string command to StandardAdditions but Script Editor (or something) is smart enough to handle the error & do that internally. FWIW, the error is eliminated by enclosing each of the 'offsetof' commands inside the tell application "Photos" block in a tell me to statement to make that explicit.


Anybody else seeing this?

May 4, 2015 2:53 AM in response to R C-R

OK. That is somewhat unintuitive. The offset clauses are all grouped together in an area which doesn't need to communicate with Photos so a single tell me ... end tell construct is enough to avoid all of those errors. Better yet a use scripting additions inserted near the top of the script does the same thing, so now we have:




-- Photos | Filename to Title | V1.3


-- Images with no title will have the filename used as the title

-- Use values below to exclude or include specfic file extensions from the generated title

-- Existing titles will be modified to add or remove any extension from the title as required


set exclude to ".jpeg.jpg.mov.png.tif.tiff" -- Extensions to exclude from the image titles

set include to ".cr2" -- Extensions to include in the image titles

use scripting additions-- Prevents errors triggered by offset clause

tell application "Photos"

activate

set updated to 0

set info to "Photos | Filename to Title"

set images to (get selection)

if images is {} then

display dialog "Please select items in Photos before calling this script." with title info buttons {"OK"} giving up after 5

else

repeat with image in images

set fullName to filename of image

set title to the name of image

if not (exists (title)) or title = "" then

set title to fullName

set current to ""

else

set current to title

end if

set pos to offset of "." in ((reverse of characters of title) as string)

set prefix to characters 1 thru (-1 - pos) of title as string

if pos > 0 then

set postfix to characters -pos thru -1 of title as string

else

set postfix to ""

end if

set pos to offset of "." in ((reverse of characters of fullName) as string)

set ext to characters -pos thru -1 of fullName as string

if (offset of postfix in exclude) > 0 then

set newTitle to prefix

else

set newTitle to prefix & postfix

end if

if (offset of ext in include) > 0 and not ext = postfix then

set newTitle to newTitle & ext-- Or could test here and add something like " | RAW" for raw formats

end if

if not current = newTitle then

set the name of image to newTitle

set updated to updated + 1

end if

end repeat

if updated = 1 then

set message to " item was updated."

else

set message to " items were updated."

end if

if updated = 0 then

set message to "No" & message

else

set message to (updated as string) & message

end if

display dialogmessagewith titleinfobuttons {"OK"}

end if

end tell




And what is interesting is that the log looks the same whichever way you do it.




tell application "Photos"

activate

get selection

--> {media item id "aXv5SiYeRyyCI%azWIuDnA"}

get filename of media item id "aXv5SiYeRyyCI%azWIuDnA"

--> "IMG_0735.png"

get name of media item id "aXv5SiYeRyyCI%azWIuDnA"

--> "IMG_0735.cr2"

exists "IMG_0735.cr2"

--> true

end tell

tell current application

offset of "." in "2rc.5370_GMI"

--> 4

offset of "." in "gnp.5370_GMI"

--> 4

offset of ".cr2" in ".jpeg.jpg.mov.png.tif.tiff"

--> 0

offset of ".png" in ".cr2"

--> 0

end tell

tell application "Photos"

display dialog "No items were updated." with title "Photos | Filename to Title" buttons {"OK"}

--> {button returned:"OK"}

end tell

Result:

{button returned:"OK"}



I can see use scripting additions becoming a standard declaration in my future scripts. 😉


Thanks for introducing me to the delights of the replies log.


tt2

This thread has been closed by the system or the community team. You may vote for any posts you find helpful, or search the Community for additional answers.

Where are photo file names?

Welcome to Apple Support Community
A forum where Apple customers help each other with their products. Get started with your Apple Account.