property dossier : ""
property tsecg : 0
tell application "Finder"
set chemin to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à renommer"
set tsecg to 0
set dossier to name of chemin
my inspecter(chemin)
end tell
on inspecter(un_dossier)
tell application "Finder"
set nomdos to name of un_dossier -- recupere le nom du dossier
set FVideo to {"mov", "MOV", "VOB", "vob", "divx", "mp4", "MP4"} -- liste des extensions a traiter
set FVideo_dv_avi to {"dv", "DV", "avi", "AVI"}
-- mise a 0 des variables duree fichier
set totsec to 0
-- traitement des fichiers :
set les_fichiers to files of un_dossier
repeat with chaque_fichier in les_fichiers
-- traitement d'un fichier
tell application "Finder"
set nom to name of chaque_fichier --récupère le nom du fichier
set AppleScript's text item delimiters to {"."} -- defini le separateur
set lextension to get last text item of nom -- recupère l'extension
set duree to "" -- mise a blanc de la durée
set lefichier to chaque_fichier as string
try
if lextension is "mlv" then
set infoRec to info for file lefichier
set lataille to size of infoRec
set lechemin to container of (path to me) as string
set lechemin to lechemin & "duree_mlv.py" as string
set fichier_mlv_info to quoted form of POSIX path of lechemin as string
set infos to do shell script "python " & fichier_mlv_info & " " & quoted form of POSIX path of lefichier as string
set AppleScript's text item delimiters to {"."}
set seconde to text item 1 of infos
set seconde to seconde as number
if seconde = 0 then
set seconde to 1
end if
-- fait le total du dossier en cours
set totsec to totsec + seconde as string
-- fait total general
set tsecg to tsecg + seconde
my ecriture(lefichier, seconde, lataille) --appel pour ecriture dans fichier texte du fichier
end if
if lextension is in FVideo then -- si fichier video
set infoRec to info for file lefichier
set lataille to size of infoRec
set lessecondes to do shell script "mdls -name kMDItemDurationSeconds " & quoted form of POSIX path of lefichier --récupère la durée en secondes format mdls
set duree to word 3 of lessecondes --extrait la durée en secondes dans la variable seconde
set AppleScript's text item delimiters to {"."}
set seconde to text item 1 of duree
-- fait le total du dossier en cours
set totsec to totsec + seconde as string
-- fait total general
set tsecg to tsecg + seconde
my ecriture(lefichier, seconde, lataille) --appel pour ecriture dans fichier texte du fichier
end if
if lextension is in FVideo_dv_avi then
set infoRec to info for file lefichier
set lataille to size of infoRec
set duree to do shell script "/usr/local/bin/exiftool -Duration " & quoted form of POSIX path of lefichier --récupère la duréeau format teste exiftool
set AppleScript's text item delimiters to {":"}
set NB to count of text items of duree
if NB = 2 then
set lesseconde to text item 2 of duree
set AppleScript's text item delimiters to {"."}
set seconde to text item 1 of lesseconde
set minute to 0
set heure to 0
set AppleScript's text item delimiters to {":"}
else
set seconde to get last text item of duree as string -- récupère les secondes
set minute to text item 3 of duree as string -- récupère les minutes
set heure to text item 2 of duree as string --récupère les heures
set seconde to seconde + (minute * 60) + (heure * 3600)
end if
-- fait le total du dossier en cours
set totsec to totsec + seconde as string
-- fait total general
set tsecg to tsecg + seconde
my ecriture(lefichier, seconde, lataille) --appel pour ecriture dans fichier texte du fichier
end if
on error the errorMessage number the errorNumber
display dialog "erreur: " & errorMessage & " sur le fichier " & lefichier
end try
end tell
end repeat
if totsec > 0 then
my total(nomdos, totsec, un_dossier) --appel pour ecriture dans fichier texte total dossier
end if
-- traitement des dossiers :
set les_dossiers to folders of un_dossier
repeat with chaque_dossier in les_dossiers
my inspecter(chaque_dossier) -- dossier suivant
end repeat
end tell
end inspecter
on ecriture(nom, secondes, lataille)
-- calcule le temps total heure-minutes-secondes et Ecrit dans la fichier texte le nom + tabulation + la durée
set heure to secondes div 3600 as string
set minute to secondes mod 3600 div 60 as string
set seconde to secondes mod 60 as string
set lataille to lataille / 1000000
set taille to lataille as string
set AppleScript's text item delimiters to {","}
set MO to text item 1 of taille
set KO to text item 2 of taille
set KO to text 1 thru 2 of text item 2 of taille
set lataille to MO & "." & KO
set lelog to open for access ((path to desktop folder as text) & dossier & ".txt") as text with write permission
write nom & (ASCII character 9) & heure & " h " & minute & " mn " & seconde & " sec " & (ASCII character 9) & lataille & " Mo" & return to lelog starting at eof
close access lelog
end ecriture
on total(nomdos, totsec, un_dossier)
set un_dossier to un_dossier as string
set infoRec to info for file un_dossier
set lataille to size of infoRec
set lataille to lataille / 1000000
set taille to lataille as string
set AppleScript's text item delimiters to {","}
set MO to text item 1 of taille
set KO to text item 2 of taille
set KO to text 1 thru 2 of text item 2 of taille
set lataille to MO & "." & KO
-- calcule le temps total heure-minutes-secondes et ecrit dans fichier texte total dossier+dans fichierprovisoire listh+listmn+listsec
set heure to totsec div 3600 as string
set minute to totsec mod 3600 div 60 as string
set seconde to totsec mod 60 as string
set lelog to open for access ((path to desktop folder as text) & dossier & ".txt") as text with write permission
write " total dossier " & nomdos & (ASCII character 9) & heure & " h " & minute & " mn " & seconde & " sec" & (ASCII character 9) & lataille & " Mo" & (ASCII character 13) & return to lelog starting at eof
close access lelog
end total
tell application "Finder"
-- calcule le temps total heure-minutes-secondes
set heure to tsecg div 3600 as string
set minute to tsecg mod 3600 div 60 as string
set seconde to tsecg mod 60 as string
set chemin to chemin as string
set infoRec to info for file chemin
set lataille to size of infoRec
set lataille to lataille / 1000000
set taille to lataille as string
set AppleScript's text item delimiters to {","}
set MO to text item 1 of taille
set KO to text item 2 of taille
set KO to text 1 thru 2 of text item 2 of taille
set lataille to MO & "." & KO
--Ecrit dans la fichier texte le nom + tabulation + la durée
set lelog to open for access ((path to desktop folder as text) & dossier & ".txt") as text with write permission
write " total général du dossier " & dossier & (ASCII character 9) & heure & " h " & minute & " mn " & seconde & " sec" & (ASCII character 9) & lataille & " Mo" & return to lelog starting at eof
close access lelog
end tell
tell application "Finder"
(display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell