1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
| -- Action de dossier sur le dossier Téléchargement :
-- Transfère les fichiers vers des sous-dossiers par type
-- une fois leur téléchargement terminé
-- Les sous-dossiers regroupent les fichiers par groupes d'extensions
-- Pour chaque groupe sont définis les types et le nom du sous-dossier
property FImage : {"JPG", "jpg", "png", "TIFF", "ico", "ICO", "tif", "tiff", "TIF", "psd"}
property DImage : "IMAGES"
property FTexte : {"txt", "doc", "docx", "odt", "rtf", "pdf"}
property DTexte : "TEXTES"
property FVideo : {"dv", "DV", "mov", "MOV", "VOB", "vob", "divx", "mp4", "MP4", "mkv", "MKV", "avi", "AVI"}
property DVideo : "VIDEOS"
property FAudio : {"m4a", "M4A", "aif", "mp3", "aiff", "wav"}
property DAudio : "MUSIQUES"
property FArchives : {"tar", "gz", "rar", "zip", "7z", "dmg"}
property DArchives : "ARCHIVES"
-- Pour toutes les autres extensions (impossible de lister tous les types !)
property DAutres : "AUTRES FORMATS"
on adding folder items to Mon_Dossier after receiving Liste_Fichiers
tell application "Finder"
-- Définit une liste de tous les sous-dossiers possibles
set Dossiers_Ajout to {DImage, DTexte, DVideo, DAudio, DArchives, DAutres}
-- Boucle sur chaque fichier ajouté dans le dossier de téléchargement
repeat with Mon_Item in Liste_Fichiers
set Mon_Ext to name extension of Mon_Item
set Mon_Nom to name of Mon_Item
-- Safari télécharge parfois en créant un nom temporaire avec "part"
-- Exemple : photo.jpg.download
-- Cela déclenche l'action de dossier, mais Safari change ensuite le nom du fichier!!
-- Si Safari change avant que l'action de dossier ne démarre, cela crée une erreur
-- On commence donc par prendre le nom sans le ".download" s'il existe
-- On extrait l'extension pour attribution du dossier
if Mon_Ext is "part" then
-- On supprime le download (les neuf derniers caractères)
set Mon_Temp to text 1 thru ((length of Mon_Nom) - 5) of Mon_Nom
-- Recherche du premier "." en partant de la fin pour l'extension
set I to length of Mon_Temp
repeat while character I of Mon_Temp is not "."
set I to I - 1
end repeat
set Mon_Ext to text (I + 1) thru (length of Mon_Temp) of Mon_Temp
set Mon_Nom to text 1 thru I of Mon_Temp
end if
-- attente de fin de téléchargement (vérification que la taille ne change plus)
try
set Mon_Fichier to Mon_Item as alias
set OldSize to -1
repeat until (size of Mon_Fichier) = OldSize
set OldSize to (size of Mon_Fichier)
delay 0.5
end repeat
end try
-- On teste si l'ajout n'est pas justement l'un des sous-dossiers
-- Si c'est le cas, la boucle ne fait rien et passe à l'item suivant !
if Mon_Nom is not in Dossiers_Ajout then
-- Détermination du sous-dossier via l'extension
if Mon_Ext is in FImage then
set Sous_Dossier to DImage
else if Mon_Ext is in FTexte then
set Sous_Dossier to DTexte
else if Mon_Ext is in FVideo then
set Sous_Dossier to DVideo
else if Mon_Ext is in FAudio then
set Sous_Dossier to DAudio
else if Mon_Ext is in FArchives then
set Sous_Dossier to DArchives
else
set Sous_Dossier to DAutres
end if
-- Vérification existence du sous-dossier, création si nécessaire
if not (exists folder Sous_Dossier of Mon_Dossier) then
make new folder at Mon_Dossier with properties {name:Sous_Dossier}
-- attention, cet ajout génère encore un event add folder items !! -> d'où le premier test !
end if
-- Transfert du fichier vers le sous-dossier adéquat
move Mon_Item to folder Sous_Dossier of Mon_Dossier as alias
end if -- si l'item n'est pas un sous-dossier
end repeat -- fin de boucle sur chaque item ajouté
end tell
end adding folder items to |
Partager