[..] Script : Tagger.

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Avatar du membre
MisterP
Niveau 4
Niveau 4
Messages : 86
Enregistré le : lun. 14 juil. 2014 23:47
Status : Hors ligne

Re: [..] Script : Tagger.

#21

Message par MisterP »

orax a écrit :T'as réessayé ? Car il me semble que mikell avait laissé un " de trop à la fin de son code (...$albumsNamesFoldersArray[$k]"), mais là il n'y est plus donc ça doit marcher.
Exact , ça marche ... Je suis désolé ... :roll: :oops: :oops: :oops:

Il me reste plus qu'a compléter mon $NbrMorc ;)
Pour ce qui concerne le nombre de fichiers, je fais des array.
Si oui, je pense qu'il me faut utiliser $tempsArray ? (a la toute fin du code, dans la fonction _GetMusicName($file)
Je dois déclarer en Global et pas Local mes valeurs et je prends $tempArray[0] ensuite je met $NbrMorc = $tempArray[0], c'est censé marcher ?
En plus, dans mon Renamer, le script ne renomme que mes .wav donc même pas besoin de faire -1 :D
Une confirmation de ça ? :mrgreen:
Et après on est bon !!! :D :D
WARNING ! : THE ROOKY IS IN THE PLACE ! :P
Avatar du membre
MisterP
Niveau 4
Niveau 4
Messages : 86
Enregistré le : lun. 14 juil. 2014 23:47
Status : Hors ligne

Re: [..] Script : Tagger.

#22

Message par MisterP »

Personne pour me confirmer ça ? :cry:
WARNING ! : THE ROOKY IS IN THE PLACE ! :P
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Script : Tagger.

#23

Message par orax »

À chaque fois que le script va scanner un dossier album, $musicsArray[0] va contenir le nombre des fichiers *.wav du dossier album. C'est à cette ligne que ça se fait :

Code : Tout sélectionner

$musicsArray = _FileListToArray($mainMusicFoldersArray[$i] & "\" & $artistsNamesFoldersArray[$j] & "\" & $albumsNamesFoldersArray[$k], "*.wav", 1)
$musicsArray[0] ne contiendra donc pas le nombre total de fichiers *.wav, mais juste du nombre de *.wav dans le dossier album en cours de traitement.
En tout cas, je ne vois pas l'intérêt de $NbrMorc. À mon avis, il n'est pas nécessaire de connaître le nombre total de fichiers.

J'ai eu du mal de comprendre à quoi correspondait certains commentaires. Normalement le commentaire se met avant le code. Comme par exemple :

Code : Tout sélectionner

; Ce message s'autodétruira dans 5 secondes...
MsgBox(777777, 'Bond', 'James Bond', 5)
Il est déconseillé de déclarer une variable globale dans une fonction.

Code : Tout sélectionner

Func _Parcourir()
    Global $mainMusicFoldersArray[2]
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
MisterP
Niveau 4
Niveau 4
Messages : 86
Enregistré le : lun. 14 juil. 2014 23:47
Status : Hors ligne

Re: [..] Script : Tagger.

#24

Message par MisterP »

$musicsArray[0] ne contiendra donc pas le nombre total de fichiers *.wav, mais juste du nombre de *.wav dans le dossier album en cours de traitement.
C'est exactement ce que je souhaite avoir ! :D
Il va me servir (ce nombre) à savoir combien de fois je dois répéter ma fonction tagg (faut pas que j'oublie de tagger des morceaux et faut pas non plus que je tagg dans le vide ... ;) )

Ah bah oui ! :lol: Je met mes commentaires après ma ligne de code ... Donc oui , c'est clair que t'as pas du tout comprendre :oops:
Et des fois je commente la ligne d'au dessus et ensuite je refais un commentaire pour expliquer le bloc d'un certain nombre de ligne au dessus ;)
Il est déconseillé de déclarer une variable globale dans une fonction.
Je suis du même avis, sauf que je réutilise mes variables dans plusieurs fonctions ... donc je peux pas vraiment faire autrement , non ? :?



EDIT :
>"C:\Program Files (x86)\AutoIt3\SciTE\..\au3check.exe" -q "C:\Users\LALALA\Desktop\Tagger Presque fini.au3"
>Exit code: 0 Time: 0.4086
BRAAAAAAAAAAAAAA ! :lol: :mrgreen: Let's go !!! je test sur un dossier factice ;)


EDIT 2 : Ne jamais se réjouir trop vite ... :
J'exécute sur mon dossier factice et on a évidemment des erreurs ^^" ..
Line 73 (File "C:\Users\LALALA\Desktop\Tagger Presque fini.au3")

$albums2NamesFoldersArray[$l] = Stringtrimright (
"$albumsNamesFoldersArray[$k]", 7)
$albums2NamesFoldersArray^ERROR

Error : Subscript used on non-accessible variable.

Le truc c'est que je vois pas ce qui est pas bon ... Je rentre la valeur : tableau passée dans une fonction qui supprime 7 caractères de chaque chaîne de caractères, et on stocke ça, dans une autre variable ...
WARNING ! : THE ROOKY IS IN THE PLACE ! :P
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Script : Tagger.

#25

Message par orax »

MisterP a écrit :Je suis du même avis, sauf que je réutilise mes variables dans plusieurs fonctions ... donc je peux pas vraiment faire autrement , non ? :?
La déclaration se fera au début comme pour les autres variables globales.

Code : Tout sélectionner

...
Global $counter3 = 1
Global $mainMusicFoldersArray[2]

...

Func _Parcourir()
    $mainMusicFoldersArray[2] = [1, FileSelectFolder("Sélectionne ta WavDatabase", "")]
Dans $albums2NamesFoldersArray[$l]... → $l n'a aucune valeur. C'est pas plutôt $e qu'il faudrait mettre ? Mais même avec $e ou $banane il y aura également une erreur puisque $albums2NamesFoldersArray n'est pas un tableau.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
MisterP
Niveau 4
Niveau 4
Messages : 86
Enregistré le : lun. 14 juil. 2014 23:47
Status : Hors ligne

Re: [..] Script : Tagger.

#26

Message par MisterP »

Ah oui !! Merci ! je vois ce qui cloche, j'en ai pour une petite demi-heure de boulot (EDIT: demi heure qui s'est transformée en 2 heures, mais quand on aime , on ne compte pas :mrgreen: ), je rédite mon post et je met le code quand j'ai fini.
Je dois faire la même chose pour 3 autres Arrays ;)

EDIT :
Alors déjà, j'ai commencé par supprimer $NbrMorc, étant donné que c'est égal à $musicsArray[0], je vais pas me compliquer la vie déjà que je suis limite sur certain points de ce script ...

Ensuite pour $albums2NamesFoldersArray c'est $k plutôt non ? (la même que pour $albumsNamesFoldersArray)
le $e c'est pour les musiques ;) ($musicsArray)
Mais on est d'accord que du coup ce ne sont pas les mêmes tableaux, ils sont différents ?
Si j'en modifie un , l'autre ne sera pas affecté ?
En fait j'ai fait la même chose pour $l que pour $k , donc je suis sur que ce ne sont pas les mêmes tableaux :)

Correction de : _GetMusicName($musicsArray[$e]) avant je donnais pas ce qu'il fallait comme nom de musique ... ca risquait de mal tagger ...)

J'ai modifié comme ça me semblait logique ...
Tu pourrais me vérifier ça stp ? :)

Avec ce que j'ai fait , normalement mes anciennes variables qui n'était pas des tableaux :
-prennent la forme et les valeurs d'un tableau avec le bon nombre de lignes/colonnes (valeurs qui ne sont pas bonnes, tant que pas changées telles que ci-dessous)
-puis deviennent égale à la valeur d'un autre tableau (au passage celui auquel il est égal au début), moins quelques caractères a chaque valeurs de tableaux.
C'est bien ce que ça fait ?


Par contre j'aimerai avoir une manip pour remettre tous les sauts de ligne/espace comme il faut , parce que avec tous les If etc.. que j'ai mis , c'est devenu le bazard ... Quelqu'un sait comment faire ?
Parce que la j'ai des erreurs de synthaxe comme quoi j'ai pas mis des EndIf et des Next alors qu'ils y sont mais je pense que c'est a cause du non alignement qu'il me les accepte pas ... (j'ai vérifié plusieurs fois qu'ils y soient bien tous ...)


► Afficher le texte
Merci beaucoup d'avance !!! :D
WARNING ! : THE ROOKY IS IN THE PLACE ! :P
overflow
Niveau 5
Niveau 5
Messages : 138
Enregistré le : sam. 05 déc. 2009 23:49
Status : Hors ligne

Re: [..] Script : Tagger.

#27

Message par overflow »

le compilo ne prend pas en compte tes saut de ligne ou espace
il y a bien des erreurs
quand tu essai de compiler ou de d’exécuter tu a une fenêtre qui t'affiche les erreurs et les warning
utilise les infos afficher pour debuguer ton code

si c'est toi qui le fait tu comprendra mieux tes erreurs
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Script : Tagger.

#28

Message par orax »

En effet, ce sont bien des tableaux maintenant.
MisterP a écrit :Par contre j'aimerai avoir une manip pour remettre tous les sauts de ligne/espace comme il faut
Image
orax http://www.autoitscript.fr/forum/posting.php?mode=quote&f=3&p=88102#pr88102 a écrit :Et aussi, ton code est mal indenté donc ce n'est pas étonnant que tu te perdes. Il y a un EndFunc tout en bas qui ne sert à rien. CTRT CTRL+T pour remettre ça en place.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
MisterP
Niveau 4
Niveau 4
Messages : 86
Enregistré le : lun. 14 juil. 2014 23:47
Status : Hors ligne

Re: [..] Script : Tagger.

#29

Message par MisterP »

overflow a écrit :le compilo ne prend pas en compte tes saut de ligne ou espace
il y a bien des erreurs
quand tu essai de compiler ou de d’exécuter tu a une fenêtre qui t'affiche les erreurs et les warning
utilise les infos afficher pour debuguer ton code
En effet j'ai bien recompté au calme ce matin , il me manquait 2 Next et 1 EndIf
D'accord ! Merci ! :)
Et aussi, ton code est mal indenté donc ce n'est pas étonnant que tu te perdes. Il y a un EndFunc tout en bas qui ne sert à rien. CTRT CTRL+T pour remettre ça en place.
CTRL+T me met ma ligne "au dessus" il me remonte d'une ligne la ligne de code sur laquelle je suis ...
Et si il y avait déjà une ligne de code , alors il descend celle qui était au dessus et il monte celle que sur laquelle j'ai mon curseur d'écriture :?


Je n'ai re-plus d'erreur avec F5.
J'essai de lancer (en compilant, aucune erreur :D ) le script ;)
Test 1 :
--> Problème :P
J'ai oublié de mettre des Pause entre les controlclick donc déjà, c'est pas bon :roll: ...
Hop hop hop ! J'ai mis des pauses de 2 sec après chaque Controlclic/controlsend ;) (oui je pourrais réduire un peu le temps et ça pourrait tagger plus rapidement, mais je préfère que le script ne bugg pas a cause d'un lag de logiciel) = Script prêt pour le test 2.

Premier vrai problème constaté :
Le script m'a ouvert plusieurs fois le logiciel tagg&rename , toutes les 10 sec ...
Alors qu'il est censé l'ouvrir une fois puis exécuter des commandes dedans et après s'arrêter et non redémarrer le logiciel ...
Chose que je ne comprends pas parce que mon script est bien de la forme :
Func ()
...
...
...
Shellexecute
Sleep
...
...
...
EndFunc
Je n'ai donc bien pas de boucle ni même le fait que j'appelle plusieurs fois la fonction ... :| :?:

Test 2 :
Après avoir mis mes pauses , mon script me redémarre tagg&rename plusieurs fois mais avec un délai plus long (Sans doute a cause des pauses ...)
J'essai de trouver le problème mais j'avoue que la ... Je ne vois pas comment et pourquoi ça fait ca ...
C'est comme si ca ignorais les ControlClick/Send .. et que le code était de la forme :
Func ()
_Func()
Shellexecute
Sleep ()
Go to line 3
EndFunc
... C'est assez frustrant ...


Voici le nouveau code pour ceux qui aimerait jeter un coup d'oeil :) :
► Afficher le texte
WARNING ! : THE ROOKY IS IN THE PLACE ! :P
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Script : Tagger.

#30

Message par orax »

MisterP a écrit :CTRL+T me met ma ligne "au dessus" il me remonte d'une ligne la ligne de code sur laquelle je suis ...
Eh oui, j'avais aussi le problème mais je pensais être le seul et que c'était lié à ma disposition des touches du clavier. Dans le menu Tools/Outils > Tidy AutoIt Source, c'est bien marqué Ctrl+T mais si le raccourci ne marche pas alors passe par le menu. Après le code sera déjà un peu plus clair.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
MisterP
Niveau 4
Niveau 4
Messages : 86
Enregistré le : lun. 14 juil. 2014 23:47
Status : Hors ligne

Re: [..] Script : Tagger.

#31

Message par MisterP »

Je n'ai pas cette option dans mon menu outil ...
Ce qui pourrait ressembler c'est : changer de cadre (Ctrl+F6)
Et j'ai cherché dans tous les menus le Ctrl+T je ne le trouve pas ...
WARNING ! : THE ROOKY IS IN THE PLACE ! :P
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Script : Tagger.

#32

Message par orax »

Image
Mais tu utilises quoi comme logiciel ? SciTE4AutoIt ou juste SciTE ?
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
overflow
Niveau 5
Niveau 5
Messages : 138
Enregistré le : sam. 05 déc. 2009 23:49
Status : Hors ligne

Re: [..] Script : Tagger.

#33

Message par overflow »

regarde dans l'aide d autoit a quoi sert les for/next et tu comprendras pourquoi ton tag&rename agis comme ca ......
Avatar du membre
MisterP
Niveau 4
Niveau 4
Messages : 86
Enregistré le : lun. 14 juil. 2014 23:47
Status : Hors ligne

Re: [..] Script : Tagger.

#34

Message par MisterP »

orax a écrit :Image
Mais tu utilises quoi comme logiciel ? SciTE4AutoIt ou juste SciTE ?
Scite4+AutoIt , enfin je pense :
Image

regarde dans l'aide d autoit a quoi sert les for/next et tu comprendras pourquoi ton tag&rename agis comme ca ......
J'ai essayé de comprendre, mais j'ai vraiment , absolument rien compris ... :oops:
WARNING ! : THE ROOKY IS IN THE PLACE ! :P
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Script : Tagger.

#35

Message par orax »

Je vois écrit SciTE-Lite.
Avec SciTE du pack FR, tu devrais avoir : http://bayimg.com/oaPgDAAfP
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
MisterP
Niveau 4
Niveau 4
Messages : 86
Enregistré le : lun. 14 juil. 2014 23:47
Status : Hors ligne

Re: [..] Script : Tagger.

#36

Message par MisterP »

En effet , pourtant il me semblait avoir installé avec ce pack ...
Je viens de désinstaller et je réinstalle avec le pack que tu m'as donné en lien ;)
Ouah ! C'est sûr que j'ai plus d'outils la :lol:
overflow a écrit :regarde dans l'aide d autoit a quoi sert les for/next et tu comprendras pourquoi ton tag&rename agis comme ca ......
Et si je met ma fonction en dehors de mon For... Next ? :D


En tout cas je viens de mettre un coup de Tidy ! :) , c'est lisible !!! Magie magie ... :mrgreen:
WARNING ! : THE ROOKY IS IN THE PLACE ! :P
overflow
Niveau 5
Niveau 5
Messages : 138
Enregistré le : sam. 05 déc. 2009 23:49
Status : Hors ligne

Re: [..] Script : Tagger.

#37

Message par overflow »

MisterP a écrit :
Et si je met ma fonction en dehors de mon For... Next ? :D
Apprend plutôt sont utilité
Avatar du membre
MisterP
Niveau 4
Niveau 4
Messages : 86
Enregistré le : lun. 14 juil. 2014 23:47
Status : Hors ligne

Re: [..] Script : Tagger.

#38

Message par MisterP »

Le '' truc '' c'est que je sais ce que fait une boucle for.. . Next
Mais dans le cas suivant, il y a plusieurs boucles en même temps..
Je pense que tag rename sera exécuté en boucle du moment que $X à X, soit à l'infini (ou presque)
Et ça voudrait dire qu'il me faut mettre mes lignes de codes ou j'exécute tagrename hors de mes boucles ?
WARNING ! : THE ROOKY IS IN THE PLACE ! :P
Avatar du membre
MisterP
Niveau 4
Niveau 4
Messages : 86
Enregistré le : lun. 14 juil. 2014 23:47
Status : Hors ligne

Re: [..] Script : Tagger.

#39

Message par MisterP »

Je suis désolé , je n'ai pas été très actif ces 2-3 derniers jours, j'ai le pc qui a bien déconné ... :?
Réinstallation de windows complète et tout le bordel ...

Bref , du coup j'ai repris mon script, et la je viens de voir que je n'ai pas le même chemin d'accès que celui mis dans le script.
Du coup j'ai décidé de voir le projet en un peu plus grand :D , c'est à dire que je vais agrandir ma GUI , et je vais rajouter de spécifier le chemin d'accès pour "aller jusqu'au" logiciel, ainsi que des cases a compléter, dans lesquelles il faudra mettre ses coordonnées pour les clics sur les différents bouton, et si on met 0 partout, alors, il essayera sans les coordonnées, soit juste avec les CLASS et TEXT des boutons ! :) )

Ce qui permettra , a toute personne voulant tagger ses morceaux, de le faire avec ce script ! :wink:

C'est partit ! Au boulot ! :mrgreen:

EDIT: Petite question :mrgreen: : J'aurai besoin de savoir comment faire en sorte que les champs de ma GUI soient a "mémoire".
En gros , qu'ils se rappellent de la dernière valeur que l'utilisateur a mise.

EDIT2 et 5 : Une instance ne pouvant pas être une variable, ça veux dire que les instances sont fixes ? ou on peu mettre des variables, mais la colorisation de SciTe ne les prends pas pour des variables ?
L'instance reste toujours la même , c'est TagRename 3.8.1 qui s'amuse a échanger de place les boutons... :shock:
Je vais donc enlever l'instance pour le bouton I Agree, vous pensez que le controlclick marche avec si peu d'info ? :
ControlClick("Tag&Rename 3.8.1", "", "[CLASS:TButton; TEXT:I agree;]", "left", 1)

EDIT3 : Je viens de me rendre compte de quelque chose , avec ces lignes de code par exemple :

Code : Tout sélectionner

If Not StringIsDigit ( "$trackNamesFoldersArray[$o]" ) Then
$trackNamesFoldersArray[$o] = StringTrimRight ( "_GetMusicName($musicsArray[$e])", $counter2)
$counter2 += 1
EndIf
Le script va supprimer, 3 caractères (counter2 vaux 3 de base) , puis si c'est pas bon , 4 puis 5..6... etc..
Sauf que par exemple ca va faire : pour le morceau : 01 - Almost Home
01 - Almost H
Puis :
01 - Almo
Puis :
01 -
Puis plus rien , il va essayer de supprimer 6 caractères...
Donc ça fait pas ce que je veux... Je dois donc supprimer mes compteurs et laisser supprimer caractère par caractère , sinon, ça le fait pas, si ? :|

J'ai gardé une copie du script avant d'enlever mes compteurs.

EDIT4 : Etant en train de tout reprendre de A à Z , j'aimerai une confirmation, lors d'un :
If Not ... Then
EndIf
Si If Not $i = 1 Then
...
EndIf
Dans ce cas si $i = 1 , alors on ne fait pas la boucle et le script passe directement au "EndIf" ?

EDIT6 : Pour les coordonnées dans les ControlClick , je remplace juste mes 3 chiffres par : $z (par exemple) ?
Ou j'ai quelque chose d'autre à mettre pour faire comprendre au script que cette variable est égale à la coordonnée en question ?

EDIT7 : De même pour le ShellExecute
WARNING ! : THE ROOKY IS IN THE PLACE ! :P
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Script : Tagger.

#40

Message par orax »

T'auras peu de chances d'avoir le nom de la musique avec ton code.

Code : Tout sélectionner

$counter2=3
$resultat = StringTrimRight ( "_GetMusicName($musicsArray[$e])", $counter2)
ConsoleWrite($resultat & @CRLF)

; Sera affiché :
; _GetMusicName($musicsArray[
 
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Répondre