Aunque esta no es la solución que pedías, se podría conseguir un resultado equivalente si estuvieras dispuesto a emplear un poco de AppleScript. AppleScript podría utilizarse para automatizar el proceso de exportación de Fotos y luego cambiar el nombre de los archivos que se crean en Buscador . Pero, honestamente, yo sugeriría que la exportación se haga tal y como lo estás haciendo ahora -desde la aplicación- y luego usar AppleScript para renombrar/moverlos colectivamente después.
tell application "System Events"
set ExportPath to POSIX file "/path/to/exported/photos" as alias
set ExportedPhotos to every file in ExportPath
end tell
repeat with PhotoFile in ExportedPhotos
tell application "System Events" to set Filename to name of PhotoFile
--> e.g. "Schloßpark Nymphenburg - Munich, Bavaria, October 19, 2017.jpg"
set [file_extension, theYear, theDay, theMonth] to reverse of words of Filename
--> {"jpg", "2017", "19", "October", "Bavaria", "Munich", "Nymphenburg", "Schloßpark"}
set AppleScript's text item delimiters to " "
set PhotoDate to date ({theDay, theMonth, theYear, "12:00:00 AM"} as text)
--> date "Thursday, 19 October 2017 at 12:00:00"
set AppleScript's text item delimiters to "-"
set {theYear, theMonth, theDay} to {year of PhotoDate as text, ¬
text -2 thru -1 of ("0" & (month of PhotoDate) * 1), ¬
text -2 thru -1 of ("0" & day of PhotoDate)}
--> {"2017", "10", "19"}
set isoDate to result as text
--> "2017-10-19"
set AppleScript's text item delimiters to ", " & month of PhotoDate
first text item of Filename
--> "Schloßpark Nymphenburg - Munich, Bavaria"
set Filename to [isoDate, " - ", result, ".", file_extension] as text
--> "2017-10-19 - Schloßpark Nymphenburg - Munich, Bavaria.jpg"
tell application "System Events" to set the name of PhotoFile to Filename
end repeat
También puede optar por formatear la parte de la fecha del nombre del archivo utilizando la función bash date
llamado desde AppleScript con un do shell script
lo que reduce el número de líneas de código en general.
do shell script "date -j -f '%B %d, %Y' 'October 19, 2017' '+%F'"
--> "2017-10-19"
He pegado esta versión más corta del script a continuación para completarlo.
Vale la pena decir que este código sólo funciona si los nombres de archivo exportados tienen un patrón consistente en línea con el ejemplo que has proporcionado. Específicamente, el nombre del archivo exportado necesita terminar en una fecha que ocupe las últimas tres palabras del nombre del archivo; y cualquier texto antes de él necesita tener una coma y un espacio separándolo de la parte de la fecha. Por supuesto, el código puede ajustarse en consecuencia si se elige un patrón de nomenclatura diferente, pero es mejor elegir uno y atenerse a él.
Si necesitas crear una jerarquía de directorios basada en fechas, esta porción extra de scriptcreará carpetas anidadas %Año/%Mes/%Día/ y mueve la foto al directorio correspondiente:
-- Continuing the script above from the following line
-- (the "[to]" is now omitted to create a "tell" block)
tell application "System Events" [to]
set the name of PhotoFile to Filename
set NestedFolders to [ExportPath, theYear, theMonth, theDay]
repeat until number of NestedFolders is 1
set [This, NestedFolders] to [item 1, rest] of NestedFolders
set Child to first item of NestedFolders
if not (exists folder Child of This) then
set first item of NestedFolders to ¬
(make new folder at folder (POSIX path of This) with properties {name:Child})
else
set first item of NestedFolders to folder Child of This
end if
end repeat
move (alias Filename in ExportPath) to POSIX path of (first item of NestedFolders)
end tell
Ahora todas las fotos exportadas serán renombradas según la pauta anterior y organizadas en jerarquías de directorios basadas en la fecha. De nuevo, esta porción extra de código se podría haber conseguido utilizando algún do shell script
(bash tiene de hecho una función preparada para crear carpetas anidadas fácilmente).
Como reflexión final, si se quisiera automatizar el todo podría adaptar este script a una acción de carpeta, y adjuntarlo a la carpeta a la que se exportan las fotos. Esto significa que, cada vez que Buscador detecta nuevas fotos añadidas a la carpeta, ejecutará automáticamente la acción de carpeta script por usted. Por lo tanto, en cuanto se exporten las fotos, se renombrarán y moverán inmediatamente.
Aquí está la primera parte del scriptde nuevo, esta vez usando un comando del shell para reformatear la parte de la fecha del nombre del archivo:
tell application "Finder"
set PhotoFile to file "Schloßpark Nymphenburg - Munich, Bavaria, October 19, 2017.png" in desktop as alias
set Filename to name of PhotoFile
--> e.g. "Schloßpark Nymphenburg - Munich, Bavaria, October 19, 2017.jpg"
set Extension to name extension of PhotoFile
end tell
set AppleScript's text item delimiters to {", ", "." & Extension}
text items -3 thru -2 of Filename as text
--> "October 19, 2017"
do shell script "date -j -f '%B %d, %Y' " & quoted form of result & " '+%F'"
set isoDate to result
--> "2017-10-19"
text items 1 thru -4 of Filename as text
--> "Schloßpark Nymphenburg - Munich, Bavaria"
set Filename to [isoDate, " - ", result, ".", Extension] as text
--> "2017-10-19 - Schloßpark Nymphenburg - Munich, Bavaria.jpg"
tell application "Finder" to set the name of PhotoFile to Filename
Como puedes ver, es bastante más corto en términos de número de líneas de código, aunque honestamente no podría decirte cuál será más rápido o más robusto.