Après plusieurs heures , j'ai réussi a écrire un script pour tagger mes morceaux de musiques à l'aide du logiciel tagg&rename.
J'aimerai avoir un volontaire pour regarder mon code et me dire si il est bon
Donc quelques précisions :
Mes morceaux sont rangés de cette manière :
WavDatabase / [Artiste] / [Album] ([Année)] / [N° que le morceau occupe dans l'album] - [NomMorceau]
exemple :
WavDatabase/Nightcore/Dreamworld (2013)/01 - Monster (DotEXE Remix)
Le code :
► Afficher le texte
Code : Tout sélectionner
#include <File.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
; INCLUDES
Opt("WinTitleMatchMode", 2)
;Fonction a mettre en tête de script, sinon ça détruit tous les Title des Control !!!
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Music Tagger", 342, 233, 192, 124)
Global $Input1 = GUICtrlCreateInput("", 96, 32, 121, 21)
Global $Button2 = GUICtrlCreateButton("Parcourir", 224, 32, 68, 25)
Global $Label1 = GUICtrlCreateLabel("WavDatabase", 15, 35, 80, 20)
Global $Button1 = GUICtrlCreateButton("Tagg All !", 128, 160, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
; GUI
Global $artistsNamesFoldersArray, $albumsNamesFoldersArray, $albums2NamesFoldersArray, $anneeNamesFoldersArray, $musicNamesFoldersArray, $trackNamesFoldersArray
Global $musicsArray, $temp, $i, $j, $k, $e, $l, $m, $n, $o
Global $counter1=0
Global $counter2=3
Global $NbrMorc=
; A COMPLETER !!! NbrMorc = le nombre de fichiers (morceaux) dans le dossier album!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Global $counter3=1
;DECLARATION VARIABLES
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button2
_Parcourir ()
Case $Button1
_Tagg ()
MsgBox(0, "Info Script", "Fini ! ;p ", " fichier ")
EndSwitch
WEnd
Func _Parcourir()
Global $mainMusicFoldersArray[2] = [1, FileSelectFolder("Sélectionne ta WavDatabase", "")]
GUICtrlSetData($Input1, $mainMusicFoldersArray[1])
EndFunc
;COEUR SCRIPT
Func _Tagg()
For $i = 1 To $mainMusicFoldersArray[0]
$artistsNamesFoldersArray = _FileListToArray($mainMusicFoldersArray[$i],"*",2)
If IsArray($artistsNamesFoldersArray) Then
For $j = 1 To $artistsNamesFoldersArray[0]
$albumsNamesFoldersArray = _FileListToArray($mainMusicFoldersArray[$i] & "\" & $artistsNamesFoldersArray[$j],"*",2)
If IsArray($albumsNamesFoldersArray) Then
For $k = 1 To $albumsNamesFoldersArray[0]
$musicsArray = _FileListToArray($mainMusicFoldersArray[$i] & "\" & $artistsNamesFoldersArray[$j] & "\" & $albumsNamesFoldersArray[$k],"*.wav",1)
If IsArray($musicsArray) Then
For $e = 1 To $musicsArray[0]
; On mets tous/toutes les artistes , albums , musiques dans un tableau
$albums2NamesFoldersArray[$l] = Stringtrimright ( "$albumsNamesFoldersArray[$k]", 7)
; On sépare le nom de l'album de l'année de l'album (nom de base étant : [NomAlbum] ([Année]) --> On ne prends que le NOM DE L ALBUM. 7 (4 chiffres, 2 parenthèses, 1 espace)
$anneeFoldersArray[$m] = StringTrimRight ( "$albumsNamesFoldersArray[$k]", 1)
; On sépare le nom de l'album de l'année de l'album (nom de base étant : [NomAlbum] ([Année]) --> On ne prends que l'ANNEE DE L ALBUM
; On vient de supprimer la parenthèse située tout à droite de l'année, ce qui nous donne : [NomAlbum] ([Année] <-- parenthèse manquante
If Not StringIsDigit ( "$anneeNamesFoldersArray[$m]" ) Then
$anneeFoldersArray[$m] = StringTrimLeft ( "$albumsNamesFoldersArray[$k]", $counter1)
$counter1 += 1
EndIf
;Si la chaîne de caractère n'est pas que des chiffres, alors on supprime un caractère de plus
;Donc a partir d'ici, on a : Artiste , Album , Année
$counter1=0
;On remet au compteur 1 sa valeur d'origine.
$musicNamesFoldersArray[$n] = StringTrimLeft ( "_GetMusicName($file)", 5)
;On supprime les 5 caractères les plus a gauche à savoir : [N°] - Donc on se retrouve juste avec le nom de la musique sans le numéro de track
$trackNamesFoldersArray[$o] = StringTrimRight ( "_GetMusicName($file)", $counter2)
If Not StringIsDigit ( "$trackNamesFoldersArray[$o]" ) Then
$counter2 += 1
EndIf
;Si la chaine de caractère n'est pas que des chiffres, alors on supprime un caractère de plus. Le compteur commence à 3 car il faut supprimer au minimum " - "
;Voilà, on a donc maintenant le numéro (track) et le nom exacte de la musique, avec le numéro de track enlevé
$counter2=3
;On remet au compteur 2 sa valeur d'origine
ShellExecute ( "C:\Program Files (x86)\TagRename\TagRename.exe")
Sleep (10000)
ControlClick ( "Tag&Rename 3.8.1", "", "[CLASS:TButton; TEXT:I agree; INSTANCE:4]")
;Clic sur le bouton I agree
;Tag&Rename EST OUVERT !!!
_TaggAlb ()
Next
EndIf
Next
EndIf
Next
EndIf
Next
EndFunc
; $artistsNamesFoldersArray[$j] $albumsNamesFoldersArray[$k] _GetMusicName($musicsArray[$e]) Ne pas prêter attention , ce sont des petites notes
Func _TaggAlb
ControlClick ( "Tag&Rename 3.8.1", "", "[CLASS:TComboEdit; INSTANCE:1]", button = "left" [, clicks = 1 [, 466 [, 301]]]] )
;Clic dans le champ pour spécifier le chemin d'un dossier
ControlSend ( "Tag&Rename 3.8.1", "", "[CLASS:TComboEdit; INSTANCE:1]", "C:\Users\LALALA\Desktop\$mainMusicFoldersArray[$i] & "\" & $artistsNamesFoldersArray[$j] & "\" & $albumsNamesFoldersArray[$k] & ")
;On donne le chemin du premier dossier
ControlClick ( "Tag&Rename 3.8.1", "", "[CLASS:TMusicFilesList; INSTANCE:1]", button = "left" [, clicks = 1 [, 1554 [, 374]]]] )
;On clic tout a droite du champ du premier morceau, si on clik dessus directement, ça le renomme... En gros : on désélectionne la sélection de base faite par Tag = (tous les .wav).
ControlSend ( "Tag&Rename 3.8.1", "", "[CLASS:TMusicFilesList; INSTANCE:1]", "{UP}")
;Touche flèche du haut, sélection du tout premier morceau
_TaggMorc ()
;On appelle la fonction qui permet de tagger un morceau, on a donc sélectionner le premier morceau et on l'a taggé.
If Not $counter3=$NbrMorc Then
ControlSend ( "Tag&Rename 3.8.1", "", "[CLASS:TMusicFilesList; INSTANCE:1]", "{DOWN}")
;Touche flèche du bas, sélection du morceau situé en dessous
_TaggMorc ()
$counter3+=1
EndIf
;Si le compteur n'a pas la valeur du nombre de morceau de l'album alors on sélectionne le morceau suivant, on le tagg et on ajoute 1 au compteur
;Ca permet donc tagger tous les morceaux de l'albums sans tagger dans le vide ou ne pas en tagger
$counter3=1
;On remet au compteur 3 sa valeur d'origine
EndFunc
Func _TaggMorc
ControlSend ( "Tag&Rename 3.8.1", "", "[CLASS:TMusicFilesList; INSTANCE:1]", "{ENTER}")
;TOUCHE ENTREE !
ControlClick ( "Tag Editor", "", "[CLASS:TEdit; INSTANCE:11]", button = "left" [, clicks = 1 [, 592 [, 329]]]] )
;Clic Champ Title
ControlSend ( "Tag Editor", "", "[CLASS:TEdit; INSTANCE:11]", "$musicNamesFoldersArray[$n]")
;On écrit la valeur de la variable $musicNamesFoldersArray
ControlClick ( "Tag Editor", "", "[CLASS:TEdit; INSTANCE:10]", button = "left" [, clicks = 1 [, 522 [, 354]]]] )
;Clic Champ Artist
ControlSend ( "Tag Editor", "", "[CLASS:TEdit; INSTANCE:10]", "$artistsNamesFoldersArray[$j]")
;On écrit la valeur de la variable $artistsNamesFoldersArray
ControlClick ( "Tag Editor", "", "[CLASS:TEdit; INSTANCE:9]", button = "left" [, clicks = 1 [, 252 [, 378]]]] )
;Clic Champ Album
ControlSend ( "Tag Editor", "", "[CLASS:TEdit; INSTANCE:9]", "$albums2NamesFoldersArray[$l]")
;On écrit la valeur de la variable $albums2NamesFoldersArray
ControlClick ( "Tag Editor", "", "[CLASS:TEdit; INSTANCE:8]", button = "left" [, clicks = 1 [, 143 [, 402]]]] )
;Clic Champ Année
ControlSend ( "Tag Editor", "", "[CLASS:TEdit; INSTANCE:8]", "$anneeNamesFoldersArray[$m]")
;On écrit la valeur de la variable $anneeNamesFoldersArray
ControlClick ( "Tag Editor", "", "[CLASS:Edit; INSTANCE:2]", button = "left" [, clicks = & [, 1333 {, 328]]]] )
;Clic Champ Track Number
ControlSend ( "Tag Editor", "", "[CLASS:Edit; INSTANCE:2]", "$trackNamesFoldersArray[$o]")
;On écrit la valeur de la variable $trackNamesFoldersArray
ControlClick ( "Tag Editor", "", "[CLASS:TButton; INSTANCE:12]", button = "left" [, clicks = 1 [, 1446 [, 507]]]] )
;Clic Boutton Add (ajouter une cover)
ControlClick ( "Find art file.", "", "[CLASS:DirectUIHWND; INSTANCE:2]", button = "left" [, clicks = 1 [, 227 [, 173]]]] )
;Clic Sur la cover
ControlClick ( "Find art file.", "", "[CLASS:Button; INSTANCE:1]", button = "left" [, clicks = 1 [, 623 [, 472]]]] )
;Clic sur Ouvrir la cover
ControlClick ( "Tag Editor", "", "[CLASS:TButton; INSTANCE:4]", button = "left" [, clicks = 1 [, 1225 [,620]]]] )
;Clic sur Save
EndFunc
Func _GetMusicName($file)
Local $tempArray, $c, $name
$tempArray = StringSplit($file,".")
If IsArray($tempArray) Then
For $c = 1 To $tempArray[0]-1
$name &= $tempArray[$c]
Next
Return $name
EndIf
Return $file
EndFunc




