comment trier des dossiers automatiquement ?

Tocnay

Membre confirmé
5 Mars 2007
65
0
55
Bordeaux
forum.insanelymac.com
Bonjour,
je voudrais trier des dossiers contenant de la musique.
Sur un DD externe je possède quelques centaines de dossiers (Nom d'artistes, classés pas iTunes, avec des sous dossiers, les albums). Le problème, c'est qu'il y a plusieurs formats (mp3, m4a, et du wma). Je souhaite séparer les dossiers contenant les wma des autres dossiers.
je ne souhaites donc pas seulement retirer les wma pour les mettre dans un autres dossier, mais bien séparer les dossiers (artistes), avec les sous dossiers (albums), contenant les morceaux, afin de pouvoir jeter ceux que je ne veux pas.
Tout ceci bien sur d'une façon automatique (vu le nombre de dossier)
J'ai pensé à automator, mais je ne vois absolument comment procéder.
Avez vous une idée.
Merci pour vos idées.
 
Tu fais une recherche bien ciblée sur spotlight
par exemple m4a
Tu tries par type de fichier, par exemple, ou par date ou par artiste
Tu sélectionnes le premier a supprimer
tu cliques en maintenant shift sur le dernier a supprimer
On est bien d'accord que sont sélectionnés alors tous ceux que tu veux supprimer
Tu supprimes et c'est fait.
 
Merci pour ta réponse, mais ce n'est pas ce que je veux faire.
Je veux trier les dossiers pour avoir ceux qui contiennent du wma de ceux qui contiennent les autres extensions (lisible par iTunes).
Seulement je ne veux pas jeter les wma, mais pouvoir garder ceux qui m'intéressent (et les convertir) et jeter les autres.
Dans spotlight, si je tape .wma, je retrouve tous les fichiers wma, mais je ne sais pas du tout de quel artiste il sagit ! Donc je ne peux pas faire le trie. Je pourrais aussi vérifier chaque dossier a la main, mais il y en a trop, d'ou l'automatisation.
Voila, merci encore pour ta réponse.
Je crois qu'un script pourrait faire le travail... mais encore complexe pour moi. (Si qqlqu'un sait manier cet outil....)
D'autres idées ?
 
Bonjour,

Des dossiers intelligents, peut-être?



Note du modo : Musique et iTunes n'ont rien à voir là dedans ! C'est un problème de tri de dossiers, et de sélections, donc d'opérations du finder. Nous allons donc déménager direction "Mac OS X" !
 
Merci d'avoir déplacé au bon endroit, je pensais a l'utilisation de Automator donc j'avais posté dans la partie logiciel.
avec ça, j'ai toujours pas trouvé de solution, mais je cherche !!!
 
Je viens de regarder pour les dossiers intelligents, mais je n'arrive qu'à trier les fichiers (comme avec spotlight) mais pas les dossiers contenant ces fichiers.
je retrouve bien le chemin de chaque fichier en bas de page.
La différence avec spotlight, c'est que je peux sauvegarder ma recherche dans ces dossiers, et modifier le type de recherche.
Je crois que le script est la solution, mais... voila le travail a se taper avant d'y arriver !!!
 
Merci pour ta réponse, mais ce n'est pas ce que je veux faire.
Je veux trier les dossiers pour avoir ceux qui contiennent du wma de ceux qui contiennent les autres extensions (lisible par iTunes).
Seulement je ne veux pas jeter les wma, mais pouvoir garder ceux qui m'intéressent (et les convertir) et jeter les autres.
Dans spotlight, si je tape .wma, je retrouve tous les fichiers wma, mais je ne sais pas du tout de quel artiste il sagit ! Donc je ne peux pas faire le trie. Je pourrais aussi vérifier chaque dossier a la main, mais il y en a trop, d'ou l'automatisation.
Voila, merci encore pour ta réponse.
Je crois qu'un script pourrait faire le travail... mais encore complexe pour moi. (Si qqlqu'un sait manier cet outil....)
D'autres idées ?

Il me semble qu'en convertissant tout tes fichiers .wma et ENSUITE, tu jettes ceux que tu ne veux pas garder, tu auras plus facile ou je dis des bêtises :rose:
 
Salut,

Est-ce que le script suivant te conviendrait ?
Essaye d'abord sur une copie de quelques dossiers puis dis-moi quelles modifications apporter…

Bloc de code:
on open theDrop
	try
		
		set pathToDesktop to (POSIX path of (path to desktop) as string)
		set wmaFolder to (pathToDesktop & "Dossier wma/")
		try
			(POSIX file wmaFolder) as alias
		on error
			do shell script "mkdir " & (quoted form of wmaFolder)
		end try
		set theFolders to (do shell script "find  " & (quoted form of POSIX path of theDrop) & " -type d | tr -s '/'")
		set TextItemDel to text item delimiters
		set text item delimiters to return
		set countItem to count of text items of theFolders
		repeat with x from 2 to countItem
			set thisFolder to (quoted form of (text item x of theFolders))
			set theResult to do shell script "find " & thisFolder & " -iname '*.wma'"
			if theResult ≠ "" then do shell script "mv " & thisFolder & " " & (quoted form of wmaFolder)
		end repeat
		set text item delimiters to TextItemDel
	on error mer
		display dialog mer with icon 0
	end try
end open

Copie/colle ce code dans l'Éditeur de script puis enregistre au format application et enfin dépose ton dossier contenant les musiques sur l'icône… Utilise une copie pour essayer, j'voudrais pas que tu me fasses un procès si le résultat ne correspond pas à ton attente… :D

Edit : Le script créé un dossier intitulé Dossier wma sur le bureau dans lequel sont déplacés les dossiers contenant des fichiers .wma
 
Alors la, chapeau bas !
C'est exactement qu'est ce que je voulais faire...
Mais (forcément ya un mais):
J'ai fait l'essai avec 4 dossiers artistes
Quand les dossiers artistes contiennent des albums mp3 ET des albums wma, la il me les laisse de coté, et ne les transfert pas dans le "Dossier wma"
J'ai fait l'experience avec 4 dossiers artistes:
1, que du mp3
2, que du wma
3, du mp3 et du wma
4, du m4a

a la fin du transfert, j'ai bien un "Dossier wma" avec l'artiste qui contient seulement les albums en wma dedans.
Les artistes avec albums mixtes sont restés dans le dossier à trier.
Enfin j'ai un message qui dit:

find: /Users/yanevana/desktop/Music a trier/Eddy Mitchel/Tout Eddy
Disc 1: No such file or directory

Voilà, tout est dit, donc je ne te ferais pas de procès, juste une bise virtuelle (on est pas des sauvages)
Merci encore donc :up:
 
J'ai fait l'essai avec 4 dossiers artistes
Quand les dossiers artistes contiennent des albums mp3 ET des albums wma, la il me les laisse de coté, et ne les transfert pas dans le "Dossier wma"
Les différents albums sont bien dans des dossiers séparés ?

J'ai fait l'experience avec 4 dossiers artistes:
1, que du mp3
2, que du wma
3, du mp3 et du wma
4, du m4a

a la fin du transfert, j'ai bien un "Dossier wma" avec l'artiste qui contient seulement les albums en wma dedans.
Les artistes avec albums mixtes sont restés dans le dossier à trier.
Alors j'ai un peu de mal à saisir ton explication…

Supposons que tu aies un dossier (EddyMitchell) contenant 4 dossiers (album-mp3, album-wma, album-mp3wma et album-m4a), album-wma est bien déplacé tandis que album-mp3wma reste en place alors que tu voudrais que celui-ci soit également déplacé ? C'est bien ça ?
Normalement dès lors que le dossier contient au moins un wma, il est déplacé…

Enfin j'ai un message qui dit:

find: /Users/yanevana/desktop/Music a trier/Eddy Mitchel/Tout Eddy
Disc 1: No such file or directory
N'est-ce pas un dossier (Tout Eddy) qui contient des sous dossiers ?
Ceux-ci sont tout de même déplacés ?

J'ai modifié le code, les sous-dossiers ne devraient plus poser de problèmes.

Tu peux déposer plusieurs dossiers d'artiste sur l'icône…

Bloc de code:
on open theDrop
	set pathToDesktop to (POSIX path of (path to desktop) as string)
	set wmaFolder to (pathToDesktop & "Dossier wma/")
	repeat with anItem in theDrop
		try
			tell application "Finder" to set label index of (anItem as alias) to 2 --met les artistes traités en rouge	
			testFolder(wmaFolder)
			set theFolders to (do shell script "find  " & (quoted form of POSIX path of anItem) & " -type d -maxdepth 1| tr -s '/'")
			set TextItemDel to text item delimiters
			set text item delimiters to return
			set countItem to count of text items of theFolders
			repeat with x from 2 to countItem
				set thisFolder to (quoted form of (text item x of theFolders))
				set theResult to do shell script "find " & thisFolder & " -iname '*.wma'"
				if theResult ≠ "" then
					set posFile to (POSIX file ((text item x of theFolders & "/") as string))
					
					tell application "Finder" to set paFolder to (name of container of folder posFile)
					testFolder((wmaFolder & paFolder & "/"))
					do shell script "mv " & thisFolder & " " & (quoted form of (wmaFolder & paFolder & "/"))
				end if
			end repeat
			set text item delimiters to TextItemDel
		on error mer
			display dialog mer with icon 0
		end try
	end repeat
end open

on testFolder(thePath)
	try
		(POSIX file thePath) as alias
	on error
		do shell script "mkdir " & (quoted form of thePath)
	end try
end testFolder
:)
 
Bonjour , et merci à toi Zacromatafalgar de persévérer !

Je n'ai pas encore pris le temps de savoir utiliser les fonctions avancées du forum, a savoir citer les messages, voir citer des parties de messages, je vais donc y aller pas a pas, par la "méthode laborieuse".

A la question:
Citation:
Envoyé par Tocnay
J'ai fait l'essai avec 4 dossiers artistes
Quand les dossiers artistes contiennent des albums mp3 ET des albums wma, la il me les laisse de coté, et ne les transfert pas dans le "Dossier wma"
Les différents albums sont bien dans des dossiers séparés ?


Réponse:
Oui les albums sont des sous dossiers des dossiers artistes.


Question:
"Supposons que tu aies un dossier (EddyMitchell) contenant 4 dossiers (album-mp3, album-wma, album-mp3wma et album-m4a),"

Réponse:
Il n'y a qu'un type de format (mp3 OU m4a OU wma) par dossier album.
Mais il peut y avoir plusieurs albums par artiste, avec des formats différents pour chaque album.

Par exemple, J'ai 2 albums de formats différents pour Nina Simone (1 dossier wma, et 1 dossier mp3)

Dans ton premier script, cet artiste n'etait pas trié, donc pas déplacé dans le dossier "Dossier wma".
Avec le nouveau code le dossier Nina Simone est déplacé entièrement (les 2 albums, avec les deux types de formats, wma et mp3)


Question:
Citation: Envoyé par Tocnay
Enfin j'ai un message qui dit:
find: /Users/yanevana/desktop/Music a trier/Eddy Mitchel/Tout Eddy
Disc 1: No such file or directory
N'est-ce pas un dossier (Tout Eddy) qui contient des sous dossiers ?
Ceux-ci sont tout de même déplacés ?


Réponse:
Cet artiste est le seul dans mon test a n'avoir qu'un sous dossier album, et en format wma.
Je n'ai plus le message d'erreur sur le dossier Eddy Mitchel avec le nouveau code.


Donc pour rendre le code parfait, il faudrait, si c'est possible, déplacer seulement le dossier wma de l'artiste, mais en doublant le dossier artiste.
J'aurais donc un dossier restant: "Music a trier/Artiste XY/Album mp3/ fichiers.mp3"
et un dossier déplacé dans "Dossier wma/Artiste XY/Album wma/fichiers .wma"

Voilà, je ne sais pas si j'ai bien répondu à toutes tes questions, mais je trouve déjà génial que tu saches faire du code, et que tu m'en fasse profiter !
Merci encore pour ton aide.
 
Il n'y a qu'un type de format (mp3 OU m4a OU wma) par dossier album.
Mais il peut y avoir plusieurs albums par artiste, avec des formats différents pour chaque album.
Avec le nouveau code le dossier Nina Simone est déplacé entièrement (les 2 albums, avec les deux types de formats, wma et mp3)
Étonnant, chez moi seul le dossier contenant des wma (j'ai testé avec des .txt, je n'ai pas de wma mais le principe est le même) est déplacé… :nailbiting:
Je suis parvenu à reproduire ce comportement en déposant un dossier contenant les dossiers Artistes, il faut donc bien veiller à déposer les dossiers aux noms des artistes et non un dossier contenant les dossiers artistes…tu peux déposer plusieurs dossiers Artiste en même temps…

Donc pour rendre le code parfait, il faudrait, si c'est possible, déplacer seulement le dossier wma de l'artiste, mais en doublant le dossier artiste.
J'aurais donc un dossier restant: "Music a trier/Artiste XY/Album mp3/ fichiers.mp3"
et un dossier déplacé dans "Dossier wma/Artiste XY/Album wma/fichiers .wma"

C'est bien là le comportement prévu… ;)
 
Désolé, je n'avais pas appliqué ta consigne, a savoir,
mettre les dossiers artistes directement sur le script,
et non un dossier contenant les dossiers artistes.
Cela fonctionne donc parfaitement !!!
Je te remercie sincèrement pour ton aide.
Je vais essayer avec un plus large échantillon, et je te tiens au courant.

Si je peux abuser...
peut on effacer les dossiers vides dans le dossier "Musique à trier" ? (en fait tous les dossiers artistes qui n'ont que des dossiers albums .wma)
et là, je crois que le script sera parfait !

Dernière question (peut être stupide):
comment pourrais je "facilement" apprendre a faire des scripts simples ?
Si tu as une méthode, un bouquin...
Merci encore pour tout.
 
Désolé, je n'avais pas appliqué ta consigne, a savoir,
mettre les dossiers artistes directement sur le script,
et non un dossier contenant les dossiers artistes.
Cela fonctionne donc parfaitement !!!
Allez hop ! Pour toi aussi une série de quinze pompes, allez en place, je compte avec toi… :D

Je te remercie sincèrement pour ton aide.
Je vais essayer avec un plus large échantillon, et je te tiens au courant.
Pas de quoi ;)

Si je peux abuser...
peut on effacer les dossiers vides dans le dossier "Musique à trier" ? (en fait tous les dossiers artistes qui n'ont que des dossiers albums .wma)
et là, je crois que le script sera parfait !
Facilement, le code ci-dessous fait ça, je remet le code entier…

Bloc de code:
(*Droplet qui déplace les dossiers contenant des fichiers dont l'extension est spécifié dans la property theExt.
Ces dossiers sont déplacés dans un dossier créé sur le bureau dont le nom est de la forme : Dossier theExt *)


property theExt : "doc"


on open theDrop
	set pathToDesktop to (POSIX path of (path to desktop) as string)
	set extFolder to (pathToDesktop & "Dossier " & theExt & "/")
	repeat with anItem in theDrop
		try
			tell application "Finder" to set label index of (anItem as alias) to 2 --met les artistes traités en rouge	
			testFolder(extFolder)
			set theFolders to (do shell script "find  " & (quoted form of POSIX path of anItem) & " -type d -maxdepth 1| tr -s '/'")
			set TextItemDel to text item delimiters
			set text item delimiters to return
			set countItem to count of text items of theFolders
			repeat with x from 2 to countItem
				set thisFolder to (quoted form of (text item x of theFolders))
				set theResult to do shell script "find " & thisFolder & " -iname '*." & theExt & "'"
				if theResult ≠ "" then --si le dossier thisFolder contient au moins 1 fichier avec l'extension recherchée
					set paFolder to (do shell script "dirname " & thisFolder)
					set paFolderShell to (do shell script "basename " & (quoted form of paFolder))
					
					testFolder((extFolder & paFolderShell & "/"))
					do shell script "mv " & thisFolder & " " & (quoted form of (extFolder & paFolderShell & "/"))
				end if
			end repeat
			set text item delimiters to TextItemDel
			
			set itemsList to do shell script "ls " & (quoted form of POSIX path of anItem)
			if itemsList = "" then tell application "Finder" to move anItem to trash
			
		on error mer
			display dialog mer with icon 0
		end try
	end repeat
end open

on testFolder(thePath)
	try
		(POSIX file thePath) as alias
	on error
		do shell script "mkdir " & (quoted form of thePath)
	end try
end testFolder

Dernière question (peut être stupide):
comment pourrais je "facilement" apprendre a faire des scripts simples ?
Si tu as une méthode, un bouquin...
Merci encore pour tout.
Il existe plusieurs sites :
iScript.fr : très bon pour les débutants
trad.Applescript.fr : traduction de la documentation officielle
Apple
il y a également les forums… ;)
 
Ok !!!
Ca marche très bien.
(J'ai juste modifié le script, j'ai remplacé doc par wma) :D ch'ui trop fort !!!

j'ai bien mes dossiers bien séparés, et les vides à la corbeille.
Le seul truc, il me met les dossiers artistes restant (mp3, m4a) en rouge ?!
Pas vraiment gênant, juste surprenant.

Une autre question (la derniere... promis) non c'est pas vrai :siffle:

Le "Dossier wma" créé sera t'il dans le même répertoire que les dossiers artistes ?
car pour le test j'ai un dossier "Music a trier", le programme et le "Dossier wma" créé sur le bureau.


Voila, merci encore.
 
Autant pour moi, j'ai vu pourquoi les dossiers traités étaient en rouge.

Pour le dossier crée sur le bureau,
c'est cette ligne qu'il faudrait modifié ? et mettre le chemin du DD externe (qui ne contient QUE de la music et rien d'autre):
set extFolder to (pathToDesktop & "Dossier " & theExt & "/")
Merci encore.
 
Ok !!!
Ca marche très bien.
(J'ai juste modifié le script, j'ai remplacé doc par wma) :D ch'ui trop fort !!!
C'était pour voir si tu suivais. :siffle:
j'ai bien mes dossiers bien séparés, et les vides à la corbeille.
Le seul truc, il me met les dossiers artistes restant (mp3, m4a) en rouge ?!
Pas vraiment gênant, juste surprenant.
C'était juste pour voir si les artistes avaient bien été traités, c'est facilement désactivable :

soit tu supprimes la ligne
Bloc de code:
tell application "Finder" to set label index of (anItem as alias) to 2 --met les artistes traités en rouge
soit tu la désactive en mettant deux tirets (--) en début de ligne


Une autre question (la derniere... promis) non c'est pas vrai :siffle:

Le "Dossier wma" créé sera t'il dans le même répertoire que les dossiers artistes ?
car pour le test j'ai un dossier "Music a trier", le programme et le "Dossier wma" créé sur le bureau.


Voila, merci encore.
Non, il est créé sur le bureau… on peut rajouter un dialogue qui te permet de choisir la destination en début de traitement mais ça peut devenir c… si le script te la demande à chaque dépôt.

On peut demander la destination une première fois puis la mémoriser dans un fichier de préférence…
 
Autant pour moi, j'ai vu pourquoi les dossiers traités étaient en rouge.

Pour le dossier crée sur le bureau,
c'est cette ligne qu'il faudrait modifié ? et mettre le chemin du DD externe (qui ne contient QUE de la music et rien d'autre):
set extFolder to (pathToDesktop & "Dossier " & theExt & "/")
C'est bien cette ligne qu'il faut modifier ou celle du dessus si tu veux conserver le dossier intitulé Dossier wma.
La destination ne doit pas être le dossier contenant les artistes.

Merci encore.

C'est ta signature, non ? :D