Siento que mis habilidades de AppleScript son muy deficientes y espero aprender de este esfuerzo.
Tengo un código funcionando que procesará uno o más archivos arrastrados a mi aplicación. El procesamiento toma un archivo ".mp4" y, usando VLC, reemplaza el códec de audio con otro códec creando un archivo con el mismo nombre pero con el sufijo ".m4v". Luego se elimina el archivo original ".mp4". Estos pasos funcionan bien.
Luego deseo renombrar el archivo recién creado con sufijo ".m4v" a ".mp4". Esto falla miserablemente. He buscado en Google y leído artículos. Obviamente no estoy entendiendo las sutilezas de POSIX
, alias
y file
.
Estoy proporcionando una versión simplificada de la aplicación que obtiene los caminos y crea los nombres de archivo. Elimina el archivo ".mp4" pero falla al renombrar el archivo ".m4v".
La iteración actual del código falla con este error:
No se puede establecer el nombre del archivo "Volumen de Datos: The Gilded Age S02 E01.m4v" en "The Gilded Age S02 E01.mp4". Finder obtuvo un error: No se puede establecer el nombre del archivo "Volumen de Datos: The Gilded Age S02 E01.m4v" a "The Gilded Age S02 E01.mp4". (-10006)
Cualquier información para orientarme en la dirección correcta sería apreciada.
--##################################################################
--# Fragmento de muestra asumiendo:
--# - El archivo "Volumen de Datos: The Gilded Age S02 E01.mp4" existe y se arrastra a esta aplicación
--# - El archivo "mp4" es procesado creando "Volumen de Datos: The Gilded Age S02 E01.m4v"
--# - El archivo "mp4" luego se elimina
--# - El archivo "m4v" es renombrado al archivo "mp4". ESTO FALLA
--##################################################################
--############################################
--# este código procesa cada archivo arrastrado a esta aplicación
--############################################
on open theDroppedItems
repeat with a from 1 to length of theDroppedItems
set aDroppedItem to item a of theDroppedItems
display dialog "main(): aDroppedItem = " & aDroppedItem
set aDroppedItem_FullPath to the POSIX path of aDroppedItem
display dialog "main(): aDroppedItem_FullPath = " & aDroppedItem_FullPath
set aDroppedItem_FullPath_NoSfx to remove_file_suffix(aDroppedItem_FullPath)
display dialog "main(): aDroppedItem_FullPath_NoSfx = " & aDroppedItem_FullPath_NoSfx
set aDroppedItem_Filename to name of (info for aDroppedItem_FullPath) as string
display dialog "main(): aDroppedItem_Filename = " & aDroppedItem_Filename
set aNewFile_FullPath to aDroppedItem_FullPath_NoSfx & ".m4v" as string
display dialog "main(): aNewFile_FullPath = " & aNewFile_FullPath
set aNewFile to aNewFile_FullPath as POSIX file
display dialog "main(): aNewFile = " & aNewFile
-- delete the original "mp4" file
display dialog "main(): delete aDroppedItem = " & aDroppedItem
tell application "Finder"
try
move aDroppedItem to trash
end try
end tell
-- rename the new "m4v" file to "mp4"
display dialog "main(): rename aNewFile = " & aNewFile
display dialog "main(): rename aDropped_Filename = " & aDroppedItem_Filename
tell application "Finder"
-- this fails
set name of aNewFile to aDroppedItem_Filename
end tell
end repeat
end open
--############################################
--# esta subrutina elimina el sufijo del archivo
--############################################
on remove_file_suffix(theText)
if length of theText = 0 then
error "No se puede recortar el texto vacío." number -1728
else if length of theText = 1 then
return ""
else
return text 1 thru -5 of theText
end if
end remove_file_suffix