# Déplacer des fichiers automatiquement



## skyop (28 Mars 2020)

Bonjour, 

J'aimerai créer une automatisation de mon dossier téléchargements. 

En effet, j'aimerai que quand je télécharge une vidéo, cette dernière, une fois téléchargée, soit automatiquement déplacée dans le dossier "vidéos" de mon mac. 

J'ai téléchargé l'application Hazel qui le fait très bien, malheureusement elle n'est gratuite que 14 jours. Aussi, j'aimerai savoir si il est possible de faire la même chose via Automator. 

Merci,


----------



## Membre supprimé 1129907 (28 Mars 2020)

Automator doit pouvoir déplacer des fichiers dans des répertoires différents suivant leur extension. Sans doute avec quelque chose de ce style :


----------



## skyop (28 Mars 2020)

Merci Ecaomb d'avoir pris le temps de me répondre.

Comment as-tu fait pour à la base sélectionner le dossier download ? 

Je ne sais pas comment faire pour afficher cette fonction.

Merci,


----------



## Membre supprimé 1129907 (28 Mars 2020)

Dans automator, j’ai choisi « action de dossier » et la ligne en haut de ma capture précédente apparait. Cela permet alors de choisir le dossier que tu veux via le « Autre... ». Tu sélectionnes ton dossier ( téléchargement) et tu cliques sur « choisir »


----------



## skyop (28 Mars 2020)

Super ! Cela fonctionne ! Merci beaucoup !


----------



## skyop (29 Mars 2020)

Alors en fait @ecatomb j'ai crié victoire trop vite...

En fait j'avais seulement testé en déplaçant manuellement un fichier vidéo dans mon dossier "Download".

Là pas de problème, ça fonctionne, au bout de 2 secondes le fichier vidéo est automatiquement déplacé dans mon dossier cible.

Cependant, si je télécharge un fichier vidéo via mon navigateur internet. Une fois que le fichier est téléchargé, rien ne se passe. Il reste dans le dossier "download".

J'ai remarqué que si j'applique une action sur le fichier (le renommer par exemple) alors là il est bien déplacé vers mon dossier cible.

Mais bon, moi ça ne m’intéresse pas trop... J'aimerai que cela soit fait de façon autonome sans aucune action de ma part.

Voici une capture d'écran de Automator. Comme indiqué dans mon Historique, j'ai une Alerte comme quoi "L'action n'a pas été fournie avec les données requises".

Est-ce que ça peut venir de là ?

Merci,


----------



## Membre supprimé 1129907 (29 Mars 2020)

Bizarre, peut-être parce que le fichier est créé au début avant d'être complet et donc ça taille est trop faible ?
Il faudrait vérifier ça... Peut-être ajouter une action de test pour savoir si qqc se déclenche ?

Si c'est ça... peut-être rajouter une pause (5min ou autre) avant de tester la taille, ou alors lancer qqc qui vérifie la taille du fichier et quand elle n'évolue plus passe à la suite?


----------



## zeltron54 (29 Mars 2020)

Bonjour,
Effectivement l'action de dossier est lancée dés que le fichier est créé. Mais suivant le navigateur , il est créé un fichier provisoire qui est converti à la fin du téléchargement, et dans tous les cas le fichier créé n'est pas complet, et surtout il est utilisé par le système qui est en train de le télécharger donc pas possible de le déplacer.

Pour contourner ce problème il faut surveiller et attendre la fin du téléchargement.
Pour ça je ferai un petit applescript à utiliser comme action de dossier.

Un pas à pas d’installation.


Ouvrir l’application éditeur de script qui se trouve dans application—> utilitaires.
Faire un copier coller du script dans une fenêtre de l’application
Enregistrer sous : (exemple : Déplace_videos) sur le bureau
Déplacer ce fichier dans: Utilisateurs —> « le nom d’utilisateurs » —> Bibliothèque —> Scripts —> Folder Action Scripts
Si les dossiers « scripts » et ou « Folder Action Scripts » n’existent pas il faut les créer.


Faire un clic droit sur le dossier Téléchargements (à la racine du dossier utilisateur) —> service —> Configuration des actions de dossier…
Dans le fenêtre qui s’ouvre (choisir un script à joindre sélectionner le script.
-Cocher la case en haut à gauche (Activer les actions de dossier).
Voilà on peut tout fermer.

le script:
Dis moi si c'est bon...

```
property FVideo : {"dv", "DV", "mov", "MOV", "VOB", "vob", "divx", "mp4", "MP4"}
property DVideo : "mes_Videos"

on adding folder items to Mon_Dossier after receiving Liste_Fichiers
    tell application "Finder"
        
        set Dossiers_Ajout to {DVideo}
        
        repeat with Mon_Item in Liste_Fichiers
            set Mon_Ext to name extension of Mon_Item
            set Mon_Nom to name of Mon_Item
            if Mon_Ext is "download" then
                set Mon_Temp to text 1 thru ((length of Mon_Nom) - 9) of Mon_Nom
                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
            
            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
            
            if Mon_Ext is in FVideo then
                set dossier_videos to ((path to home folder) & "Vidéos:") as string
                -- Transfert du fichier vers le sous-dossier adéquat
                move Mon_Item to folder dossier_videos as alias
            end if
        end repeat
        
    end tell
end adding folder items to
```


----------



## skyop (29 Mars 2020)

Bonjour à vous, 

J'ai effectué la démarche que vous avez indiqué en copiant/collant le script (je n'ai rien modifié du tout) mais rien ne se passe quand le téléchargement est terminé. 

J'ai essayé en laissant mon processus Automator activé, j'ai essayé en le desactivant mais rien n'y fait...

Je ne sais pas quoi faire du coup...


----------



## zeltron54 (29 Mars 2020)

As-tu essayé en faisant un simple glissé déposé d'un fichier vidéo dans le dossier téléchargement pour tester.

Edit : le processus automator étant désactivé !


----------



## skyop (29 Mars 2020)

Oui, quand je fais un simple glissé déposé, il ne se passe rien.

J'ai bien désactivé le processus Automator. 

Ci joint l'emplacement du script et son détail. Je pense avoir fait ce qu'il fallait mais on sait jamais...


----------



## zeltron54 (29 Mars 2020)

Non tu n'est pas dans la bonne bibliothèque.
il faut mettre le fichier dans la bibliothèque utilisateur.
pour le trouver tu peux y accéder depuis le bureau dans le menu aller en maintenant la touche alt, la bibliothèque devrait apparaître.

Edit: as-tu bien affecté ce script au dossier téléchargement dans service , action de dossier


----------



## skyop (29 Mars 2020)

Je l'avais mis dans les deux bibliothèques au cas ou ^^

DU coup je l'ai supprimé de l'autre pour garder uniquement celle utilisateur. Malheureusement ça ne fonctionne toujours pas

Voici ce que ça donne  :


----------



## zeltron54 (29 Mars 2020)

Tu as bien affectés l'action au dossier téléchargement?

Oups j'avais pas vue la 2ieme copie écran.


----------



## zeltron54 (29 Mars 2020)

Le script déplace les fichiers vidéo en fonction de leurs extensions.
Il prend les DV, MOV, MP4, VOB et DIVX

Je viens de me rendre compte en l'écrivant que j'ai oublié les AVI.

Tu as testé avec quel type ?


----------



## skyop (29 Mars 2020)

Exact ! 

J'ai rajouté MKV et cela fonctionne. 

Merci beaucoup ! 

Une dernière question : est-ce possible de rajouter une condition de taille minimum dans le script ? Par exemple 2 GO ? 

Merci


----------



## zeltron54 (29 Mars 2020)

Ok
la première ligne du script devient donc:

property FVideo : {"dv", "DV", "mov", "MOV", "VOB", "vob", "divx", "mp4", "MP4", "avi", "AVI" , "MKV" , "mkv"}

Tu veux que seul les fichiers de plus 2 Go soit déplacés  ou que seul les fichiers de moins de 2 Go soit déplacés ?


----------



## skyop (29 Mars 2020)

Idéalement j'aimerai les deux : 

Que les fichiers >2GO soient déplacé dans un dossier A

Je comprends bien dans le script comment définir un dossier de destination, cependant je ne sais pas comment inclure cette condition de taille.

Aussi, est-ce possible d'inclure une condition si le fichier contient une série de caractère en particulier dans son titre ? 

Je m'explique : j'aimerai que même si le fichier est inférieur ou supérieur à 2GO, si il contient E0 dans son titre, il soit déplacé dans un fichier B et non un fichier A.

Est-ce possible ? 

Merci,


----------



## zeltron54 (29 Mars 2020)

Pas tout compris !  

je te mets le script complet pour ne déplacer que les fichiers plus grand que 2 Go dans le dossier Vidéo. les autres reste dans le dossier téléchargement.

Pour le reste de ta demande, j'ai besoin de plus d'explications.
Essai d'être un peu plus précis dans ta demande, (je comprend vite si en m'explique longtemps)


```
property FVideo : {"dv", "DV", "mov", "MOV", "VOB", "vob", "divx", "mp4", "MP4", "avi", "AVI", "MKV", "mkv"}
property DVideo : "mes_Videos"

on adding folder items to Mon_Dossier after receiving Liste_Fichiers
    tell application "Finder"
        
        set Dossiers_Ajout to {DVideo}
        
        repeat with Mon_Item in Liste_Fichiers
            set Mon_Ext to name extension of Mon_Item
            set Mon_Nom to name of Mon_Item
            if Mon_Ext is "download" then
                set Mon_Temp to text 1 thru ((length of Mon_Nom) - 9) of Mon_Nom
                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
            
            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
            
            if Mon_Ext is in FVideo then
                tell application "Finder"
                    set lefichier to Mon_Item as string
                    set infoRec to info for file lefichier
                    set lataille to size of infoRec
                end tell
                if lataille > 2.0E+9 then
                    set dossier_videos to ((path to home folder) & "Vidéos:") as string
                    -- Transfert du fichier vers le dossier Vidéo
                    move Mon_Item to folder dossier_videos as alias
                end if
            end if
        end repeat
        
    end tell
end adding folder items to
```


----------



## Membre supprimé 1129907 (29 Mars 2020)

Je crois qu'il veut dire qu'il n'y a pas besoin de test de taille (mais c'est bien d'avoir mis le script pour) :

si le nom du fichier contient EO, on le déplace dans le répertoire A
sinon, on le déplace dans le répertoire B


----------



## skyop (29 Mars 2020)

Merci beaucoup pour votre réponse.

En fait mon besoin final serait :


Si mon fichier vidéo ne contient pas E0 dans son titre et est >2GO le déplacer dans un dossier A
Si mon fichier contient E0 dans son titre et est >2G0 ou <2GO le déplacer dans un dossier B
Si mon fichier ne contient pas E0 dans son titre et est <2GO il reste dans le dossier Téléchargement

OU ALORS


Si mon fichier vidéo est supérieur à 4200 secondes le déplacer dans un dossier A
Si mon fichier vidéo est inférieur à 4200 secondes et est >500mo le déplacer dans un dossier B
Si min fichier vidéo est inférieur à 4200 secondes et est <500mo il reste dans le dossier Téléchargement

Je pense que ces deux systèmes pourraient convenir à mes besoins (même si j'ai une préférence pour le deuxième, il sera, je pense, plus précis).

Est-ce possible de faire un script pour l'option 2 ? Sinon la 1 fera l'affaire.

Encore une fois merci beaucoup pour votre aide, je ne m'en sortirai pas tout seul


----------



## zeltron54 (29 Mars 2020)

Ok je regarde ce qu’il est possible de faire demain.
une autre chose, pour la durée de la vidéo , j’ai besoin de connaître l’extension du fichier. En effet la durée n’est pas renseignée de la même manière en fonction du type du conteneur (extension), si l’extension est toujours là même cela simplifierai le script...


----------



## skyop (29 Mars 2020)

J'aurais a 90% du MKV donc on peut partir là dessus. 

Merci beaucoup pour l'aide apportée.


----------



## zeltron54 (30 Mars 2020)

Bonjour,
J'ai commencé à regarder, j'ai encore besoin de précisions !  
-- Ou vont se trouver les dossiers A et B et quel sont leurs nom réel ? c'est pour Pour renseigner un chemin correct.

De plus il faudra que tu installes exiftool sur ta machine. à télécharger là: https://exiftool.org/index.html
tu prends le fichier pour mac os package de 2,9 MB en dmg, tu ouvres l'image disque et tu installes.
Ce programme installe des commandes de gestion de fichiers vidéos et images accessible depuis le terminal, qui seront nécessaire pour récupérer la durée des vidéos.


----------



## skyop (30 Mars 2020)

Bonjour Zeltron,

J'ai bien téléchargé et installé ExifTool.

Pour le dossier A voici son chemin :

/users/adb/documents/videos/finals
/users/adb/documents/videos/rushs

Merci encore,


----------



## zeltron54 (30 Mars 2020)

Bonjour,

Alors voilà le script
Dis moi si cela te convient.
N'oublie pas créer les dossiers Finals et Rushs dans le dossier Vidéos.

```
property FVideo : {"dv", "DV", "mov", "MOV", "VOB", "vob", "divx", "mp4", "MP4", "avi", "AVI", "MKV", "mkv"}
property DVideo : "mes_Videos"

on adding folder items to Mon_Dossier after receiving Liste_Fichiers
    tell application "Finder"
      
        set Dossiers_Ajout to {DVideo}
      
        repeat with Mon_Item in Liste_Fichiers
            set Mon_Ext to name extension of Mon_Item
            set Mon_Nom to name of Mon_Item
            if Mon_Ext is "download" then
                set Mon_Temp to text 1 thru ((length of Mon_Nom) - 9) of Mon_Nom
                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
          
            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
          
            if Mon_Ext is in FVideo then
                tell application "Finder"
                  
                    set lefichier to Mon_Item as string
                  
                    set infoRec to info for file lefichier --recup taille
                    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ée au format texte exiftool
                    set AppleScript's text item delimiters to {":"} --defini le séparateur
                    set NB to count of text items of duree -- verifie si duree est inférieur à 30 secondes (notation différente)
                    if NB = 2 then --recup duree en secondes
                        set lesseconde to text item 2 of duree
                        set AppleScript's text item delimiters to {"."}
                        set seconde to text item 1 of lesseconde
                        set AppleScript's text item delimiters to {":"}
                    else -- recup duree si supérieure à 30 sec (format hh : mn : sec )
                        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
                  
                end tell
              
                if seconde > 4500 then
                    set dossier_videos to ((path to home folder) & "Vidéos:Finals:") as string
                    move Mon_Item to folder dossier_videos as alias
                else
                    if lataille > 500000000 then
                        set dossier_videos to ((path to home folder) & "Vidéos:Rushs:") as string
                        move Mon_Item to folder dossier_videos as alias
                    end if
                end if
              
              
            end if
        end repeat
      
    end tell
end adding folder items to
```


----------



## zeltron54 (30 Mars 2020)

Je viens de me rendre compte que j'ai mis comme chemin des dossiers à créer dans le dossier vidéos et pas dans documents

Faut'il changer ça ?


----------



## skyop (30 Mars 2020)

Je n'ai pas bien compris ton dernier message mais malheuresement le script ne fonctionne pas alors j'imagine que ça vient de là ^^


----------



## zeltron54 (30 Mars 2020)

De plus il y a un bug dans le dernier script.
J'attend ta réponse pour envoyer un nouveau .
Tu dis chemin dans : /users/adb/documents/videos/finals
alors que le chemin du dossier Vidéos n'est pas dans documents !
Veux-tu créer un dossier Vidéos dans ton dossier documents ?


----------



## skyop (30 Mars 2020)

Ah ok j'ai compris ! 

Oui je ne n'utilise pas le dossier Vidéos crée nativement par MacOS

J'ai crée mon propre dossier vidéos dans /users/adb/documents/vidéos

Est-ce plus clair ? 

Merci,


----------



## zeltron54 (30 Mars 2020)

OK !
Alors pense bien à créer les dossiers.
Je te mets le script.
Tiens moi au courant...


```
property FVideo : {"dv", "DV", "mov", "MOV", "VOB", "vob", "divx", "mp4", "MP4", "avi", "AVI", "MKV", "mkv"}
property DVideo : "mes_Videos"

on adding folder items to Mon_Dossier after receiving Liste_Fichiers
    tell application "Finder"
   
        set Dossiers_Ajout to {DVideo}
   
        repeat with Mon_Item in Liste_Fichiers
            set Mon_Ext to name extension of Mon_Item
            set Mon_Nom to name of Mon_Item
            if Mon_Ext is "download" then
                set Mon_Temp to text 1 thru ((length of Mon_Nom) - 9) of Mon_Nom
                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
       
            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
       
            if Mon_Ext is in FVideo then
                tell application "Finder"
                    set lefichier to Mon_Item as string
               
                    set infoRec to info for file lefichier --recup taille
                    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ée au format texte exiftool
                    set AppleScript's text item delimiters to {":"} --defini le séparateur
                    set NB to count of text items of duree -- verifie si duree est inférieur à 30 secondes (notation différente)
                    if NB = 2 then --recup duree en secondes
                        set lesseconde to text item 2 of duree
                        set AppleScript's text item delimiters to {"."}
                        set seconde to text item 1 of lesseconde
                        set AppleScript's text item delimiters to {""}
                    else -- recup duree si supérieure à 30 sec (format hh : mn : sec )
                        set AppleScript's text item delimiters to {":"}
                        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)
                        set AppleScript's text item delimiters to {""}
                    end if
               
                end tell
           
                if seconde > 4500 then
                    set dossier_videos to ((path to home folder) & "Documents:Vidéos:Finals:") as string
                    move Mon_Item to folder dossier_videos as alias
                else
                    if lataille > 500000000 then
                        set dossier_videos to ((path to home folder) & "Documents:Vidéos:Rushs:") as string
                        move Mon_Item to folder dossier_videos as alias
                    end if
                end if
           
           
            end if
        end repeat
   
    end tell
end adding folder items to
```


----------



## skyop (30 Mars 2020)

Alors j'ai malheureusement le même problème que quand j'avais fait le processus avec Automator : 

En fait une fois le téléchargement terminé le fichier reste dans le dossier "Téléchargement". 

Je dois effectuer une action ( par exemple le renommer) pour qu'il soit déplacé dans le dossier correspondant.

Par contre les actions en fonction de la taille et de la durée fonctionnent bien.

PS : j'ai remarqué pendant le téléchargeemtn de mon fichier une roue crantée s'affichant dans ma barre des menus(celle avec l'heure, l'icone siri, le volume..) en mettant ma souris dessus j'ai vu une info bulle du genre : script "deplacer les vidéos" activé (ou quelque chose comme ça)


----------



## zeltron54 (30 Mars 2020)

Il va falloir que je refasse d'autres tests.
La roue crantée qui tourne est justement la preuve que le script attend la fin du téléchargement pour continuer, il fait des tests sur la taille du fichier en cours de chargement pour vérifier si sa taille évolue...


----------



## zeltron54 (30 Mars 2020)

Alors tests chez moi pas de problème.

fichiers issus d'un appareil photo (en Wifi), d'un autre ordi en réseau (wifi),  d'un disque dur externe, et depuis un site de transfert de fichier.

Les fichiers que tu télécharges viennent d'où ?, si c'est d'internet peux-tu me passer un lien pour tester?

Eventuellement tu peux essayer en augmentant le délai de contrôle j'y crois pas trop mais !

Dans le script la ligne : delay 0.5    tu remplaces 0.5    par 1 ou même 2.


----------



## skyop (30 Mars 2020)

Alors en fait sur la roue crantée il est indiqué "echec" quand je passe la souris dessus. 

J'ai aussi changé le script en mettant 2 à la place de 0,5 ça ne change rien.

Les fichiers viennent d'un site de transfert de fichier. 

Malheureusement je ne peux pas te donner de lien car ce sont des fichiers pour le boulots qui sont confidentiels. 

Mais ça marchait très bien avec le premier script (celui qui ne prenait en compte que le type de fichier et non la taille)

Je ne sais pas d'où ça peut venir du coup...


----------



## zeltron54 (30 Mars 2020)

pour test:
Lorsque le fichier est complètement téléchargé et qu'il n'a pas été déplacé, tu le sorts du dossier téléchargement en le mettant sur le bureau, puis te le remets dans le dossier téléchargement par glissé déposé, pour voir si là il est déplacé.
C'est pour vérifier que sans aucun changement de nom ou autre il est pris en compte dans ce cas.
Ce qui me surprend c'est que le script pour cette partie n'a subit aucun changement si ce n'est la destination.


----------



## skyop (30 Mars 2020)

Alors en faisant ça, juste en le déplaçant et en le remettant dans le dossier Téléchargement ça fonctionne. Il est bien déplacé automatiquement dans mon dossier cible.


----------



## zeltron54 (30 Mars 2020)

tous mes tests à moi fonctionnent, donc sans pouvoir reproduire ce qui se passe chez toi ça va être difficile.

Voir aussi ce qu'il y a dans le dossier téléchargement pendant que ça télécharge (plusieurs fichiers ? provisoire ... quel extension etc...)


----------



## skyop (30 Mars 2020)

Oui je me doute...

Quand ça télécharge j'ai :


un fichier .mkv qui reste à 0ko
un fichier .mkv.part qui gagne en taille au fur et a mesure du téléchargement

Dans le script ou est la partie qui prend en charge cette fonctionalité de déplacement une fois le téléchargement terminé ? Je vais voir si j'ai bien copié/collé même si normalement je pense que oui ^^


----------



## zeltron54 (30 Mars 2020)

Je crois avoir compris.
Lors de la création des 2 fichiers le script voit un .mkv , teste son poids, puis voyant que son poids ne bouge plus croit qu'il a terminé et continu le script, donc fichier  moins de 500 Mo reste dans téléchargement...

Par contre je ne comprend pas que ça ai pu fonctionné avant avec ce même type de fichier !

Je regarde si je peut adapté le script à cela.


----------



## zeltron54 (30 Mars 2020)

essai cette version qui attend tant que le fichier est = à 0


```
property FVideo : {"dv", "DV", "mov", "MOV", "VOB", "vob", "divx", "mp4", "MP4", "avi", "AVI", "MKV", "mkv"}
property DVideo : "mes_Videos"

on adding folder items to Mon_Dossier after receiving Liste_Fichiers
    tell application "Finder"
        
        set Dossiers_Ajout to {DVideo}
        
        repeat with Mon_Item in Liste_Fichiers
            set Mon_Ext to name extension of Mon_Item
            set Mon_Nom to name of Mon_Item
            if Mon_Ext is "download" then
                set Mon_Temp to text 1 thru ((length of Mon_Nom) - 9) of Mon_Nom
                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
            
            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)
                    if OldSize = 0 then OldSize = -1
                    delay 0.5
                end repeat
            end try
            
            if Mon_Ext is in FVideo then
                tell application "Finder"
                    set lefichier to Mon_Item as string
                    
                    set infoRec to info for file lefichier --recup taille
                    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ée au format texte exiftool
                    set AppleScript's text item delimiters to {":"} --defini le séparateur
                    set NB to count of text items of duree -- verifie si duree est inférieur à 30 secondes (notation différente)
                    if NB = 2 then --recup duree en secondes
                        set lesseconde to text item 2 of duree
                        set AppleScript's text item delimiters to {"."}
                        set seconde to text item 1 of lesseconde
                        set AppleScript's text item delimiters to {""}
                    else -- recup duree si supérieure à 30 sec (format hh : mn : sec )
                        set AppleScript's text item delimiters to {":"}
                        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)
                        set AppleScript's text item delimiters to {""}
                    end if
                    
                end tell
                
                if seconde > 4500 then
                    set dossier_videos to ((path to home folder) & "Documents:Vidéos:Finals:") as string
                    move Mon_Item to folder dossier_videos as alias
                else
                    if lataille > 500000000 then
                        set dossier_videos to ((path to home folder) & "Documents:Vidéos:Rushs:") as string
                        move Mon_Item to folder dossier_videos as alias
                    end if
                end if
                
                
            end if
        end repeat
        
    end tell
end adding folder items to
```


----------



## skyop (30 Mars 2020)

Je ne comprends pas, ça ne fonctionne pas... Il faut que je fasse une action sur le fichier pour qu'il soit déplacé.

Voici ce que j'ai dans mon script, nous sommes d'accord, j'ai bien tout copié/collé ? 


```
property FVideo : {"dv", "DV", "mov", "MOV", "VOB", "vob", "divx", "mp4", "MP4", "avi", "AVI", "MKV", "mkv"}
property DVideo : "mes_Videos"

on adding folder items to Mon_Dossier after receiving Liste_Fichiers
    tell application "Finder"
        
        set Dossiers_Ajout to {DVideo}
        
        repeat with Mon_Item in Liste_Fichiers
            set Mon_Ext to name extension of Mon_Item
            set Mon_Nom to name of Mon_Item
            if Mon_Ext is "download" then
                set Mon_Temp to text 1 thru ((length of Mon_Nom) - 9) of Mon_Nom
                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
            
            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)
                    if OldSize = 0 then OldSize = -1
                    delay 0.5
                end repeat
            end try
            
            if Mon_Ext is in FVideo then
                tell application "Finder"
                    set lefichier to Mon_Item as string
                    
                    set infoRec to info for file lefichier --recup taille
                    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ée au format texte exiftool
                    set AppleScript's text item delimiters to {":"} --defini le séparateur
                    set NB to count of text items of duree -- verifie si duree est inférieur à 30 secondes (notation différente)
                    if NB = 2 then --recup duree en secondes
                        set lesseconde to text item 2 of duree
                        set AppleScript's text item delimiters to {"."}
                        set seconde to text item 1 of lesseconde
                        set AppleScript's text item delimiters to {""}
                    else -- recup duree si supérieure à 30 sec (format hh : mn : sec )
                        set AppleScript's text item delimiters to {":"}
                        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)
                        set AppleScript's text item delimiters to {""}
                    end if
                    
                end tell
                
                if seconde > 4500 then
                    set dossier_videos to ((path to home folder) & "Documents:Vidéos:Finals:") as string
                    move Mon_Item to folder dossier_videos as alias
                else
                    if lataille > 500000000 then
                        set dossier_videos to ((path to home folder) & "Documents:Vidéos:Rushs:") as string
                        move Mon_Item to folder dossier_videos as alias
                    end if
                end if
                
                
            end if
        end repeat
        
    end tell
end adding folder items to
```


----------



## zeltron54 (30 Mars 2020)

Comme je t'ai dis , je ne peux pas tester, chez moi ça fonctionne.
Teste celui la:



```
property FVideo : {"dv", "DV", "mov", "MOV", "VOB", "vob", "divx", "mp4", "MP4", "avi", "AVI", "MKV", "mkv"}
property DVideo : "mes_Videos"

on adding folder items to Mon_Dossier after receiving Liste_Fichiers
    tell application "Finder"
        
        set Dossiers_Ajout to {DVideo}
        
        repeat with Mon_Item in Liste_Fichiers
            set Mon_Ext to name extension of Mon_Item
            set Mon_Nom to name of Mon_Item
            if Mon_Ext is "download" then
                set Mon_Temp to text 1 thru ((length of Mon_Nom) - 9) of Mon_Nom
                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
            
            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)
                    if OldSize = 0 then set OldSize to -1
                    delay 0.5
                end repeat
            end try
            
            if Mon_Ext is in FVideo then
                tell application "Finder"
                    set lefichier to Mon_Item as string
                    
                    set infoRec to info for file lefichier --recup taille
                    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ée au format texte exiftool
                    set AppleScript's text item delimiters to {":"} --defini le séparateur
                    set NB to count of text items of duree -- verifie si duree est inférieur à 30 secondes (notation différente)
                    if NB = 2 then --recup duree en secondes
                        set lesseconde to text item 2 of duree
                        set AppleScript's text item delimiters to {"."}
                        set seconde to text item 1 of lesseconde
                        set AppleScript's text item delimiters to {""}
                    else -- recup duree si supérieure à 30 sec (format hh : mn : sec )
                        set AppleScript's text item delimiters to {":"}
                        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)
                        set AppleScript's text item delimiters to {""}
                    end if
                    
                end tell
                
                if seconde > 4500 then
                    set dossier_videos to ((path to home folder) & "Documents:Vidéos:Finals:") as string
                    move Mon_Item to folder dossier_videos as alias
                else
                    if lataille > 500000000 then
                        set dossier_videos to ((path to home folder) & "Documents:Vidéos:Rushs:") as string
                        move Mon_Item to folder dossier_videos as alias
                    end if
                end if
                
                
            end if
        end repeat
        
    end tell
end adding folder items to
```


----------



## skyop (31 Mars 2020)

C'est bon ! Cela fonctionne maintenant ! 

Qu'avez vous changé par rapport à l'ancien script ? 

En tout cas merci beaucoup, ça me sauve !


----------



## zeltron54 (31 Mars 2020)

Le script surveille tout les 0.5 seconde si la taille du fichier change, Si la taille ne change pas il considère que le chargement est terminé et déplace ce fichier.
Hors lors du transfert le fichier est créé avec taille 0 et le reste jusqu'a la fin. j'ai donc ajouté dans le script que tant que la taille est 0, il recommence la surveillance.
c'est la partie là:


```
repeat until (size of Mon_Fichier) = OldSize
                    set OldSize to (size of Mon_Fichier)
                    if OldSize = 0 then set OldSize to -1
                    delay 0.5
                end repeat
```

Bref si tout fonctionne ...
Content pour toi


----------



## skyop (1 Avril 2020)

D'accord c'est noté. Je comprends mieux ! 

Merci beaucoup en tout cas


----------

