Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Un lecteur MP3 | |
| | Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Un lecteur MP3 Jeu 14 Juil 2016 - 16:28 | |
| Encore un, assez simple, sans ressources externes. Pour ceux qui ne sont pas encore partis en vacances (c'est un peu le désert ces jours-ci...). On présuppose un répertoire principal réservé aux fichiers mp3 (à préciser, ici C:\MP3\), avec éventuellement des sous-répertoires par catégorie. Le programme affiche la liste des mp3 dans le répertoire choisi. On clique dans la liste ceux qu'on veut écouter (ou tout), et on lance la lecture. Il est possible à tout moment d'interrompre l'écoute en cours, définitivement, ou pour passer au suivant. (perso j'en ai fait un exécutable qui est sur le bureau: ). - Code:
-
' == LECTEUR MP3 == LABEL Fin,Listf,Chr,Chf,Seldes,Jouer,Plusun,Arret DIM rtmp$,r$,rc$,f$,q$,d%,i%,j%,k%,r%,m%,s%,a$,pr$,stp%,bs$ q$ = CHR$(34) bs$ = CHR$(92): ' sinon, backslash bouffé par le forum ! rtmp$ = "C:\TEMP"+bs$: ' répertoire de travail (fichiers temporaires) r$ = "C:\MP3"+bs$: ' <=================== Répertoire principal des MP3 rc$ = r$
WIDTH 0,760: HEIGHT 0,840: BORDER_SMALL 0: FONT_NAME 0,"Arial": FONT_SIZE 0,10 COLOR 0,90,90,90 MEMO 100: WIDTH 100,600: HIDE 100 LIST 1: TOP 1,25: WIDTH 1,180: HEIGHT 1,HEIGHT(0)-140: FONT_BOLD 1 LIST 4: TOP 4,TOP(1): LEFT 4,LEFT(1)+WIDTH(1)+3: WIDTH 4,15: HEIGHT 4,HEIGHT(1) FONT_BOLD 4 LIST 3: TOP 3,TOP(1): LEFT 3,LEFT(4)+WIDTH(4)+1: WIDTH 3,58: HEIGHT 3,HEIGHT(1) LIST 2: TOP 2,TOP(1): LEFT 2,LEFT(3)+WIDTH(3)+1: WIDTH 2,480: HEIGHT 2,HEIGHT(1) ON_CLICK 1,Chr: ON_CLICK 2,Chf: ON_CLICK 4,Chf ALPHA 10: TOP 10,5: LEFT 10,5: CAPTION 10,"Répertoire: "+r$ ALPHA 11: TOP 11,TOP(10): LEFT 11,LEFT(3)+10: CAPTION 11,"Durée:" ALPHA 12: TOP 12,TOP(10): LEFT 12,LEFT(2)+10: CAPTION 12,"Répertoire : "+r$ ALPHA 13: TOP 13,HEIGHT(0)-60: LEFT 13,10 CAPTION 13,"Clic un ou plusieurs morceau(x) pour sélection." FOR i% = 10 TO 13: FONT_BOLD i%: FONT_COLOR i%,255,255,255: NEXT i%
EDIT 19: TOP 19,TOP(1)+HEIGHT(1)+2: LEFT 19,WIDTH(0)/2-300: WIDTH 19,600 FONT_BOLD 19: FONT_COLOR 19,0,0,255 PROGRESS_BAR 20: TOP 20,TOP(1)+HEIGHT(1)+30: WIDTH 20,WIDTH(0)-70 EDIT 21: TOP 21,TOP(20)-4: LEFT 21,WIDTH(20)+3: WIDTH 21,45: FONT_BOLD 21 COLOR 21,255,255,0 BUTTON 35: TOP 35,HEIGHT(0)-60: LEFT 35,WIDTH(0)-420: CAPTION 35,"Sélect.Tout" FONT_BOLD 35: ON_CLICK 35,Seldes BUTTON 36: TOP 36,TOP(35): LEFT 36,LEFT(35)+80: CAPTION 36,"Désel.Tout" FONT_BOLD 36: ON_CLICK 36,Seldes BUTTON 40: TOP 40,TOP(35): WIDTH 40,48: LEFT 40,LEFT(36)+80: CAPTION 40,"Jouer" ON_CLICK 40,Jouer BUTTON 41: TOP 41,TOP(35): WIDTH 41,48: LEFT 41,LEFT(40)+53: CAPTION 41,"+1" ON_CLICK 41,Plusun BUTTON 42: TOP 42,TOP(35): WIDTH 42,48: LEFT 42,LEFT(41)+52: CAPTION 42,"Stop" ON_CLICK 42,Arret BUTTON 50: TOP 50,TOP(35): WIDTH 50,55: LEFT 50,WIDTH(0)-76: CAPTION 50,"Quitter" ON_CLICK 50,Fin FONT_BOLD 40: FONT_BOLD 42: FONT_BOLD 50 SOUND 80
EXECUTE_WAIT "cmd.exe /c DIR /A:D /B "+q$+r$+q$+" | clip" CLEAR 100: CLIPBOARD_PASTE 100 ITEM_ADD 1,r$: ' répertoire principal des MP3 FOR i% = 1 TO COUNT(100) ITEM_ADD 1,ITEM_READ$(100,i%) NEXT i% GOSUB Listf ' ============================================================================== END: ' ========================================================================= ' ============================================================================== Fin: TERMINATE ' ============================================================================== Listf: ' Liste des mp3 du répertoire choisi CAPTION 12,"Répertoire : "+rc$ EXECUTE_WAIT "cmd.exe /c DIR /B "+q$+rc$+"*.mp3"+q$+" | clip" CLEAR 100: CLIPBOARD_PASTE 100: CLEAR 2: CLEAR 3: CLEAR 4 IF COUNT(100) > 0 FOR i% = 1 TO COUNT(100) a$ = ITEM_READ$(100,i%) ITEM_ADD 2,a$: ITEM_ADD 4," " f$ = rc$+a$: DureeMp3(f$): ITEM_ADD 3,CLIPBOARD_STRING_PASTE$ NEXT i% END_IF RETURN ' ============================================================================== Chr: ' Choix d'un répertoire IF ITEM_INDEX(1) = 1 rc$ = r$: ' répertoire principal ELSE rc$ = r$+ITEM_INDEX$(1)+bs$: ' sous-répertoire END_IF GOSUB Listf RETURN ' ============================================================================== Chf: ' Choix d'un fichier (morceau mp3) j% = NUMBER_CLICK: i% = ITEM_INDEX(j%) a$ = ITEM_READ$(4,i%) IF a$ <> "X" ITEM_DELETE 4,i%: ITEM_INSERT 4,i%,"X" ELSE ITEM_DELETE 4,i%: ITEM_INSERT 4,i%," " END_IF a$ = ITEM_READ$(4,i%) RETURN ' ============================================================================== Seldes: ' Sélection ou désélection d'un fichier, en bascule j% = NUMBER_CLICK FOR i% = 1 TO COUNT(4) ITEM_DELETE 4,i% IF j% = 35 ITEM_INSERT 4,i%,"X" ELSE ITEM_INSERT 4,i%," " END_IF NEXT i% RETURN ' ============================================================================== Jouer: stp% = 0 FOR i% = 1 TO COUNT(2) IF ITEM_READ$(4,i%) = "X" a$ = ITEM_READ$(4,i%) f$ = rc$+ITEM_READ$(2,i%): TEXT 19,ITEM_READ$(2,i%) FILE_LOAD 80,f$: PLAY 80 a$ = TRIM$(ITEM_READ$(3,i%)) d%=VAL(RIGHT$(a$,2))+60*VAL(MID$(a$,4,2))+3600*VAL(LEFT$(a$,2)): ' durée, secondes MIN 20,0: MAX 20,d%: POSITION 20,0 k% = NUMBER_TICKS: j% = k%+d%*1000: r% = k% WHILE k%<j% PAUSE 1000 k% = NUMBER_TICKS: d% = INT((k%-r%)/1000): ' écoulé, en secondes POSITION 20,d% m% = INT(d%/60): s% = d%-60*m% TEXT 21,RIGHT$("0"+STR$(m%),2)+":"+RIGHT$("0"+STR$(s%),2) IF stp% > 0 THEN EXIT_WHILE: ' =1: arrêt, =2: suivant END_WHILE IF stp% = 1 THEN EXIT_FOR stp% = 0 END_IF NEXT i% TEXT 19,"": TEXT 21,"": POSITION 20,0 IF stp% = 0 THEN GOSUB Arret stp% = 0 RETURN ' ============================================================================== Plusun: ' Interruption de l'actuel, passage au suivant DELETE 80: SOUND 80 stp% = 2 RETURN ' ============================================================================== Arret: ' Arrêt total DELETE 80: SOUND 80: ' pour stopper la lecture en cours stp% = 1 RETURN ' ============================================================================== SUB DureeMp3(f$) ' durée du fichier mp3 f$, rendue dans le presse-papier DIM_LOCAL q$,scr$ q$ = CHR$(34) scr$ = rtmp$+"Duree.vbs": ' fichier script vbs, temporaire FILE_OPEN_WRITE 9,scr$ FILE_WRITELN 9, "FileName = wscript.arguments (0)" FILE_WRITELN 9, "with CreateObject("+q$+"Scripting.FileSystemObject"+q$+").GetFile(FileName)" FILE_WRITELN 9, " Foldername = .ParentFolder" FILE_WRITELN 9, " FileName = .Name" FILE_WRITELN 9, "End With" FILE_WRITELN 9, "with CreateObject("+q$+"Shell.Application"+q$+").Namespace(Foldername)" FILE_WRITELN 9, " wsh.echo .GetDetailsOf(.Parsename(FileName), 27)" FILE_WRITELN 9, "end with" FILE_CLOSE 9 EXECUTE_WAIT "cmd.exe /c cscript.exe "+scr$+" "+q$+f$+q$+" | clip" FILE_DELETE scr$ END_SUB ' ============================================================================== 21h12 édité, à cause du backslash bouffé par le forum !
Dernière édition par JL35 le Jeu 14 Juil 2016 - 22:38, édité 2 fois | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Un lecteur MP3 Jeu 14 Juil 2016 - 17:58 | |
| Bonsoir JL35 !
J'ai voulu testé ton programme mais malheureusement, je n'ai aucun fichier qui apparaît.
Après avoir préalablement choisi les dossiers 'temp' et 'mp3' je lance le programme. J'ai bien tous mes albums (dossiers) sur la partie de gauche, mais lorsque je clique sur un des dossiers je vois très furtivement une fenêtre DOS indiquant fichier introuvable et elle disparaît immédiatement ! Et aucun fichier n'est visible à droite.
Pas de bugs mais pas de musique non plus. Dommage ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Un lecteur MP3 Jeu 14 Juil 2016 - 18:24 | |
| Bonjour Minibug, ça c'est curieux, ce sont bien des fichiers mp3 (unique format supporté) ? Chez moi j'ai quelques fichiers mp3 dans le répertoire C:\MP3\, et des sous-répertoires qui contiennent également des mp3 classés par catégories... Le programme affiche d'entrée ceux qui sont dans le répertoire principal, et la liste des sous-répertoires: | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Un lecteur MP3 Jeu 14 Juil 2016 - 19:24 | |
| | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Un lecteur MP3 Jeu 14 Juil 2016 - 19:36 | |
| Tout de même, ça m'intrigue... Tu devrais mettre un MESSAGE rc$ après la ligne 80 (juste avant le gosub Listf) pour voir si tu as bien le nom complet du répertoire cliqué... La liste des fichier c'est un simple 'DIR' msdos. J'y pense, j'espère que le reroutage du DIR vers 'clip' fonctionne chez toi (pas avant Windows 7 je crois), sinon il faudrait envoyer le résultat dans un fichier temporaire au lieu du clipboard, ce qui est très simple à faire. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Un lecteur MP3 Jeu 14 Juil 2016 - 20:23 | |
| @JL35 Pour la mille et unième fois tu t’es tombé dans le piège ! Tu sais parfaitement que le forum est avide du caractère back slash (\). Il te l’a bouffé en ligne 79. Chez moi, c’est le même constat que celui de Minibug. Le caption indique : Répertoire : C:\MP3 et non … C :\MP3\ comme chez toi. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Un lecteur MP3 Jeu 14 Juil 2016 - 20:39 | |
| Bonsoir papydall ! Même en rajoutant le "\" manquant en ligne 79 cela ne change rien. Aucun fichier MP3 ne s'affiche sur la droite.
@JL35 : J'ai mis le message en ligne 80 et j'ai bien le chemin complet avec "\" à la fin. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Un lecteur MP3 Jeu 14 Juil 2016 - 21:06 | |
| @papydall Enfer et Damnation ! tu as raison, il m'a encore bouffé le backslash ce saligaud ! Et pas seulement ligne 79, lignes 5 et 6 également ! et je me fais toujours avoir, zut alors, je proteste avec la dernière énergie, le forum n'a pas à intervenir entre les balises code !!! Bon, je remets une version avec le backslash codé -> variable bs$ = CHR$(92). @Minibug Tu as bien le backslash à la fin, mais tu l'as bien au milieu aussi ? parce que tel qu'était le code pris sur le forum ça ne marchait pas... Ce que tu pourrais vérifier: - mettre dans le s/p Listf juste après l'Execute_Wait de la ligne 64 - Code:
-
MESSAGE "cmd.exe /c DIR /B "+q$+rc$+"*.mp3"+q$+" | clip" pour voir si les paramètres étaient corrects. - pendant l'affichage du Message, lancer le Notepad et y faire un coller, pour voir s'il y a bien la résultat du DIR dans le presse-papier. Je précise, il y a un premier 'DIR' ligne 48 qui donne une fois pour toutes la liste des sous-répertoires qui sera affichée à gauche: EXECUTE_WAIT "cmd.exe /c DIR /A:D /B "+q$+r$+q$+" | clip"->>>> il est probable qu'ici tu n'avais pas le backslash à la fin de r$ ! <<<<<<<<< Dans un premier temps, n'est affichée à droite que la liste des mp3 qui sont directement sous le répertoire principal. Il faudra cliquer ensuite dans la liste des sous-répertoire pour afficher leur contenu. et on appelle ensuite le s/p Listf pour avoir la liste des mp3 du répertoire principal ( C:\MP3\ ). | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Un lecteur MP3 Jeu 14 Juil 2016 - 22:34 | |
| Bon, il y a de l'amélioration mais j'ai une erreur en ligne 155 dès qu'il lit le 1er fichier du dossier. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Un lecteur MP3 Jeu 14 Juil 2016 - 22:42 | |
| Tu as pris la dernière version ? l'erreur est dans le nom du fichier script, c'est comme si tu n'avais pas l'antislash dans le nom du répertoire de travail rtmp$ = C:\TEMP\ , qui était bien escamoté également par le forum. Le script vbs doit s'appeler C:\TEMP\Duree.vbs (et non C:\TEMPDuree.vbs) Au fait, tu as bien un répertoire C:\TEMP\ ? sinon il faut le créer, ou quelque chose d'équivalent en adaptant la variable rtmp$. Bonne nuit ! | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Un lecteur MP3 Jeu 14 Juil 2016 - 23:28 | |
| Ça avance... mais maintenant j'ai un autre problème. Au lieu d'indiquer la durée j'ai 'Microsoft' Et à l'appui de la touche 'Jouer' un message apparaît : (29) Not correct arithmetic expression : Error in funtion. Line 118 La lecture démarre malgré tout. et dès que je ferme le message d'erreur tout s’arrête bien sûr. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Un lecteur MP3 Ven 15 Juil 2016 - 2:53 | |
| Maintenant tout est OK - Spoiler:
Quand on a que l'amour « le back-slash » A s’offrir en partage A jour du grand voyage Qu'est notre grand amour « back-slash » ...
| |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Un lecteur MP3 Ven 15 Juil 2016 - 10:12 | |
| Bonjour à tous ! @papydall évidemment, si on n'a que le backslash à se partager, on n'est pas très riches... @Minibug, Manifestement tu as un problème avec la récupération de la durée du mp3, que tu devrais récupérer dans le List 3 sous la forme ascii 'hh ss', et toi à la place tu as 'Microsoft' ??? (la ligne 118 lit la valeur Ascii pour chaque fichier dans le List 3 et la convertit en valeur numérique: nombre de secondes. Et dans ton cas, évidemment, avec la valeur lue ça part en erreur). C'est la sub DureeMp3() qui calcule la durée avec un script vbs et la renvoie dans le presse-papier sous la forme d'une chaîne hh ss, c'est là-dedans qu'il faudrait regarder, mais sans connaître ta configuration c'est pas facile. Manifestement, dans ton cas ça te renvoie 'Microsoft' ... Première chose, vérifier que le paramètre envoyé à la sub est bien un nom de fichier correct (path complet). La durée est une donnée essentielle dans le programme, pour enchaîner les morceaux, gérer le progress-bar etc. Il y a d'autres moyens pour obtenir la durée, mais externes (ffmpeg entre autres), c'est pour ça que j'ai privilégié celui-ci. J'ai essayé de récupérer la durée en lisant directement dans le fichier, mais elle n'est en clair nulle part, il faut la calculer à partir d'autres données plutôt compliquées. Vérifie déjà que le nom du fichier est correct. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Un lecteur MP3 Ven 15 Juil 2016 - 22:37 | |
| Merci JL35, je crois que je vais en rester là. Tant pis pour la musique, je continuerai d'utiliser Winamp. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Un lecteur MP3 Ven 15 Juil 2016 - 23:50 | |
| C'est dommage quand même de ne pas avoir le fin mot de l'affaire ! mais bon, il faut un minimum de motivation, et si tu as une alternative qui te convient mieux... | |
| | | Contenu sponsorisé
| Sujet: Re: Un lecteur MP3 | |
| |
| | | | Un lecteur MP3 | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |