Estoy tratando de facilitar la compresión de un archivo de video usando HandBrake a través de applecript y he estado basando la mayor parte del código en las plantillas que he encontrado.
En este punto del código, el usuario ha especificado el archivo de origen y la carpeta de destino.
En lugar de que HandBrakeCLI solo sobrescribiera ciegamente un archivo con el mismo nombre en la carpeta de destino, quería que el Finder hiciera una comprobación y, si ya existía un archivo con el mismo en la carpeta de destino, quería agregar el nombre del archivo con el Fecha y hora actuales antes de la extensión.
Todo funcionó bien hasta que comencé a agregar el código "si existe".
Aquí está el trozo de código:
tell application "Finder"
set newFilepathPOSIX to POSIX path of dest_folder
set newFilepathPOSIX to newFilepathPOSIX & "video.mp4"
-- Check if file with same name exists
if exists file newFilepathPOSIX then
display dialog "There is already a file named \"video.mp4\". Do you want to replace the file?" buttons {"Quit", "No", "Yes"} cancel button 1
if result = {button returned:"No"} then
set newFilepathPOSIX to POSIX path of dest_folder
set newFilepathPOSIX to newFilepathPOSIX & "video" & getDateAsString & ".mp4"
end if
end if
set newFilepathPOSIX to quoted form of newFilepathPOSIX
set shellCommand to "/Volumes/Flash Drive/HandBrakeCLI -i " & origFilepathPOSIX & " -o " & newFilepathPOSIX & " --preset=\"Classic\""
end tell
to getDateAsString from t
set creationDateString to year of t as string
set creationDateString to creationDateString & text -2 thru -1 of ("0" & getMonthNum(t) as string)
set creationDateString to creationDateString & text -2 thru -1 of ("0" & day of t as string)
set creationDateString to creationDateString & text -2 thru -1 of ("0" & hours of t as string)
set creationDateString to creationDateString & text -2 thru -1 of ("0" & minutes of t as string)
set creationDateString to creationDateString & text -2 thru -1 of ("0" & seconds of t as string)
return creationDateString
end getDateAsString
Esto es lo que devuelve:
exists file "/Users/me/Box Documents/My Folder/video.mp4"
--> false
Si agrego "como archivo POSIX" a la línea "si existe", esto es lo que devuelve:
get file "/Users/me/Box Documents/My Folder/video.mp4"
--> error number -1728 from file "/Users/me/Box Documents/My Folder/video.mp4"
exists file "My HD:Users:me:Box Documents:My Folder:video.mp4"
--> true
display dialog "There is already a file named \"video.mp4\". Do you want to replace the file?" buttons {"Quit", "No", "Yes"} cancel button 1
--> {button returned:"No"}
Después de esto, se produjo un error.
Totalmente nuevo en esto, así que espero que haya dado suficientes detalles sin revelar demasiados detalles.