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 $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]
$albums2NamesFoldersArray = _FileListToArray($mainMusicFoldersArray[$i] & "\" & $artistsNamesFoldersArray[$j],"*",2)
If IsArray($albums2NamesFoldersArray) Then
For $l = 1 To $albums2NamesFoldersArray[0]
$anneeNamesFoldersArray = _FileListToArray($mainMusicFoldersArray[$i] & "\" & $artistsNamesFoldersArray[$j],"*",2)
If IsArray($anneeNamesFoldersArray) Then
For $m = 1 To $anneeNamesFoldersArray[0]
$musicNamesFoldersArray = _FileListToArray($mainMusicFoldersArray[$i] & "\" & $artistsNamesFoldersArray[$j] & "\" & $albumsNamesFoldersArray[$k],"*.wav",1)
If IsArray($musicNamesFoldersArray) Then
For $n = 1 To $musicNamesFoldersArray[0]
$trackNamesFoldersArray = _FileListToArray($mainMusicFoldersArray[$i] & "\" & $artistsNamesFoldersArray[$j] & "\" & $albumsNamesFoldersArray[$k],"*.wav",1)
If IsArray($trackNamesFoldersArray) Then
For $o = 1 To $trackNamesFoldersArray[0]
$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)
$anneeNamesFoldersArray[$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
$anneeNamesFoldersArray[$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($musicsArray[$e])", 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($musicsArray[$e])", $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]", "left", 1)
;Clic sur le bouton I agree
;Tag&Rename EST OUVERT !!!
_TaggAlb ()
Next
EndIf
Next
EndIf
Next
EndIf
Next
EndIf
Next
EndIf
Next
EndIf
Next
EndIf
Next
EndFunc
Func _TaggAlb()
ControlClick ( "Tag&Rename 3.8.1", "", "[CLASS:TComboEdit; INSTANCE:1]", "left", 1, 466, 301)
;Clic dans le champ pour spécifier le chemin d'un dossier
Sleep (2000)
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
Sleep (2000)
ControlClick ( "Tag&Rename 3.8.1", "", "[CLASS:TMusicFilesList; INSTANCE:1]", "left", 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).
Sleep (2000)
ControlSend ( "Tag&Rename 3.8.1", "", "[CLASS:TMusicFilesList; INSTANCE:1]", "{UP}")
;Touche flèche du haut, sélection du tout premier morceau
Sleep (2000)
_TaggMorc ()
;On appelle la fonction qui permet de tagger un morceau, on a donc sélectionner le premier morceau et on l'a taggé.
Sleep (2000)
If Not $counter3=$musicsArray[0] Then
ControlSend ( "Tag&Rename 3.8.1", "", "[CLASS:TMusicFilesList; INSTANCE:1]", "{DOWN}")
;Touche flèche du bas, sélection du morceau situé en dessous
Sleep (2000)
_TaggMorc ()
Sleep (2000)
$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 !
Sleep (2000)
ControlClick ( "Tag Editor", "", "[CLASS:TEdit; INSTANCE:11]", "left", 1, 592, 329)
;Clic Champ Title
Sleep (2000)
ControlSend ( "Tag Editor", "", "[CLASS:TEdit; INSTANCE:11]", "$musicNamesFoldersArray[$n]")
;On écrit la valeur de la variable $musicNamesFoldersArray
Sleep (2000)
ControlClick ( "Tag Editor", "", "[CLASS:TEdit; INSTANCE:10]", "left", 1, 522, 354)
;Clic Champ Artist
Sleep (2000)
ControlSend ( "Tag Editor", "", "[CLASS:TEdit; INSTANCE:10]", "$artistsNamesFoldersArray[$j]")
;On écrit la valeur de la variable $artistsNamesFoldersArray
Sleep (2000)
ControlClick ( "Tag Editor", "", "[CLASS:TEdit; INSTANCE:9]", "left", 1, 252, 378)
;Clic Champ Album
Sleep (2000)
ControlSend ( "Tag Editor", "", "[CLASS:TEdit; INSTANCE:9]", "$albums2NamesFoldersArray[$l]")
;On écrit la valeur de la variable $albums2NamesFoldersArray
Sleep (2000)
ControlClick ( "Tag Editor", "", "[CLASS:TEdit; INSTANCE:8]", "left", 1, 143, 402)
;Clic Champ Année
Sleep (2000)
ControlSend ( "Tag Editor", "", "[CLASS:TEdit; INSTANCE:8]", "$anneeNamesFoldersArray[$m]")
;On écrit la valeur de la variable $anneeNamesFoldersArray
Sleep (2000)
ControlClick ( "Tag Editor", "", "[CLASS:Edit; INSTANCE:2]", "left", 1, 1333, 328)
;Clic Champ Track Number
Sleep (2000)
ControlSend ( "Tag Editor", "", "[CLASS:Edit; INSTANCE:2]", "$trackNamesFoldersArray[$o]")
;On écrit la valeur de la variable $trackNamesFoldersArray
Sleep (2000)
ControlClick ( "Tag Editor", "", "[CLASS:TButton; INSTANCE:12]", "left", 1, 1446, 507)
;Clic Boutton Add (ajouter une cover)
Sleep (2000)
ControlClick ( "Find art file.", "", "[CLASS:DirectUIHWND; INSTANCE:2]", "left", 1, 227, 173)
;Clic Sur la cover
Sleep (2000)
ControlClick ( "Find art file.", "", "[CLASS:Button; INSTANCE:1]", "left", 1, 623, 472)
;Clic sur Ouvrir la cover
Sleep (2000)
ControlClick ( "Tag Editor", "", "[CLASS:TButton; INSTANCE:4]", "left", 1, 1225,620)
;Clic sur Save
Sleep (2000)
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