Sto provando a rendere più semplice la compressione di un file video usando HandBrake tramite il applescript e ho basato la maggior parte del codice sui modelli che ho trovato.
A questo punto nel codice, l'utente ha specificato il file sorgente e la cartella di destinazione.
Invece di HandBrakeCLI semplicemente sovrascrivendo ciecamente un file con lo stesso nome nella cartella di destinazione, volevo Finder per fare un controllo e, se un file con lo stesso esiste già nella cartella di destinazione, allora volevo avere il nome del file aggiunto al data e ora correnti prima dell'estensione.
Tutto ha funzionato bene fino a quando ho iniziato ad aggiungere il codice "se esiste".
Ecco il pezzo di codice:
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
Ecco cosa restituisce:
exists file "/Users/me/Box Documents/My Folder/video.mp4"
--> false
Se aggiungo "come file POSIX" alla riga "if exists", questo è ciò che restituisce:
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"}
Dopo questo, ha errato.
Totalmente nuovo in questo modo, spero di aver dato abbastanza dettagli senza dare troppi dettagli.