Déplacer des fichiers automatiquement

skyop

Membre confirmé
20 Octobre 2009
66
1
31
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,
 
Automator doit pouvoir déplacer des fichiers dans des répertoires différents suivant leur extension. Sans doute avec quelque chose de ce style :
Capture d’écran 2020-03-28 à 15.15.12.png
 
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,
 
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 »
 
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,

1585441686427.png
 
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?
 
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...
Bloc de code:
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
 
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...
 
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é !
 
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...
 

Fichiers joints

  • Capture d’écran 2020-03-29 à 18.10.25.jpg
    Capture d’écran 2020-03-29 à 18.10.25.jpg
    128,4 KB · Affichages: 153
  • Capture d’écran 2020-03-29 à 18.10.42.jpg
    Capture d’écran 2020-03-29 à 18.10.42.jpg
    25,3 KB · Affichages: 149
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
 
Dernière édition:
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 :
Capture d’écran 2020-03-29 à 18.43.50.jpg
 
Tu as bien affectés l'action au dossier téléchargement?

Oups j'avais pas vue la 2ieme copie écran.
 
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 ?
 
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
 
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 ?
 
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,
 
Pas tout compris ! :meh:

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)

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
                    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
 
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