Déplacer des fichiers automatiquement

skyop

Membre junior
20 Octobre 2009
66
1
27
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 :dead:
 

zeltron54

Membre d’élite
29 Mars 2008
1 754
262
Lorraine
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

Membre junior
20 Octobre 2009
66
1
27
J'aurais a 90% du MKV donc on peut partir là dessus.

Merci beaucoup pour l'aide apportée.
 

zeltron54

Membre d’élite
29 Mars 2008
1 754
262
Lorraine
Bonjour,
J'ai commencé à regarder, j'ai encore besoin de précisions ! :D
-- 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

Membre junior
20 Octobre 2009
66
1
27
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

Membre d’élite
29 Mars 2008
1 754
262
Lorraine
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.
Bloc de code:
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
 
Dernière édition:

zeltron54

Membre d’élite
29 Mars 2008
1 754
262
Lorraine
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

Membre junior
20 Octobre 2009
66
1
27
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

Membre d’élite
29 Mars 2008
1 754
262
Lorraine
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

Membre junior
20 Octobre 2009
66
1
27
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

Membre d’élite
29 Mars 2008
1 754
262
Lorraine
OK !
Alors pense bien à créer les dossiers.
Je te mets le script.
Tiens moi au courant...

Bloc de code:
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
 
Dernière édition:

skyop

Membre junior
20 Octobre 2009
66
1
27
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

Membre d’élite
29 Mars 2008
1 754
262
Lorraine
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

Membre d’élite
29 Mars 2008
1 754
262
Lorraine
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

Membre junior
20 Octobre 2009
66
1
27
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

Membre d’élite
29 Mars 2008
1 754
262
Lorraine
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

Membre junior
20 Octobre 2009
66
1
27
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

Membre d’élite
29 Mars 2008
1 754
262
Lorraine
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

Membre junior
20 Octobre 2009
66
1
27
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

Membre d’élite
29 Mars 2008
1 754
262
Lorraine
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.