Je sens que mes compétences en AppleScript laissent beaucoup à désirer et j'espère apprendre de cet effort.
J'ai du code qui fonctionne et qui traitera un ou plusieurs fichiers déposés sur mon application. Le traitement prend un fichier ".mp4" et, en utilisant VLC, remplace le codec audio par un autre codec pour créer un fichier portant le même nom mais avec un suffixe ".m4v". Le fichier ".mp4" original est ensuite supprimé. Ces étapes fonctionnent bien.
Ensuite, je souhaite renommer le fichier ".m4v" nouvellement créé en ".mp4". Cela échoue lamentablement. J'ai cherché sur Google et lu des articles. Je ne comprends évidemment pas les subtilités de POSIX
, alias
et file
.
Je fournis une version allégée de l'application qui récupère des chemins et crée des noms de fichiers. Elle supprime le fichier ".mp4" mais échoue à renommer le fichier ".m4v".
L'itération actuelle du code échoue avec cette erreur :
Impossible de définir le nom du fichier "Volume de données : The Gilded Age S02 E01.m4v" en "The Gilded Age S02 E01.mp4".
Finder a renvoyé une erreur : Impossible de définir le nom du fichier "Volume de données : The Gilded Age S02 E01.m4v" en "The Gilded Age S02 E01.mp4". (-10006)
Toute suggestion pour me mettre sur la bonne voie serait appréciée.
--##################################################################
--# Exemple de bout de code supposant :
--# - le fichier "Volume de données : The Gilded Age S02 E01.mp4" existe et est déposé sur cette application
--# - le fichier "mp4" est traité pour créer le fichier "Volume de données : The Gilded Age S02 E01.m4v"
--# - le fichier "mp4" est ensuite supprimé
--# - le fichier "m4v" est renommé en "mp4". CECI ÉCHEOUE
--##################################################################
--############################################
--# ce code traite chaque fichier déposé sur cette application
--############################################
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
-- supprimer le fichier original "mp4"
display dialog "main(): delete aDroppedItem = " & aDroppedItem
tell application "Finder"
try
move aDroppedItem to trash
end try
end tell
-- renommer le nouveau fichier "m4v" en "mp4"
display dialog "main(): rename aNewFile = " & aNewFile
display dialog "main(): rename aDropped_Filename = " & aDroppedItem_Filename
tell application "Finder"
-- cela échoue
set name of aNewFile to aDroppedItem_Filename
end tell
end repeat
end open
--############################################
--# cette sous-routine enlève le suffixe du fichier
--############################################
on remove_file_suffix(theText)
if length of theText = 0 then
error "Impossible de supprimer un texte vide." number -1728
else if length of theText = 1 then
return ""
else
return text 1 thru -5 of theText
end if
end remove_file_suffix