Générer un fichier html à partir d'un dossier
Bonjour à tous, et merci déjà de me lire.
Je sais que c'est assez mal vu de demander sans poster son mauvais petit bout de code , mais j’essaie quand même,
y a plein de gens bien sur ce forum.
Le projet:
J' ai dans un répertoire quelques mp3 : ce sont des pistes audio séparées de chanson drum, guitar,etc... (une vingtaine max)
j'ai également un page html qui me lit ces mp3 sous forme de multipiste dans une table de mixage en streaming.
je souhaiterai générer automatiquement cette page html pour chacun de mes dossiers mp3, sachant que uniquement le nom des mp3 et leur lien va changer d'un titre à un autre
car en fait, je suis obligé actuellement d'éditer ce fichier html pour remplacer manuellement les noms et leur liens
Donc dans l'ordre:
1. il écrit le head du html (chaine de caractères qui ne change jamais) jusqu'au chapitre où les mp3 sont appelés
<!DOCTYPE html>
Blablabla....
2 . le script, programme , macro, ou .bat placé dans le dossier du morceau scanne les mp3 présents de ce dossier:
exemple: drum.mp3, guitar.mp3, bass.mp3 etc...
3. il génère à la suite pour chacun des mp3 ce bout de code:
{
"title":"drum",
"url": monsite/starlight/drum.mp3, (ce topic n'est accepté que sans liens visibles donc j'ai supprimé de cette ligne les guillemets )
"gain": 1,
"muted": false,
"hidden": false
},
légende pour cet exemple:
en orange pour le "title": le nom du mp3 sans l'extension
en bleu le dossier des mp3 dans lequel nous sommes
et en vert le mp3 en question
PS: quand le tout denier mp3 est ajouté, ne pas mettre la dernière virgule
4.il rajoute à la suite le foot de la page html ( chaine de caractères qui ne change jamais)
],
"master": {
"pan": 0,
"gain": 1,
"muted": false
}
}
}
}
})
</script>
</body>
</html>
5. il sauvegarde le tout dans le même répertoire en un fichier .html dont le nom est le nom du dossier
Si quelqu'un veut bien m'aider, ça serait top.
Merci d'avance
bonjour,
voici une canevas de code ...
Sub aargh()
monsite = "monsite"
'choix du répertoire contenant les musiques
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
.Title = "choisr le répertoire contenant les répertoires MP3"
If .Show = True Then
repertoire = .SelectedItems(1)
Else
MsgBox "pas de répertoire sélectionné"
Exit Sub
End If
End With
'on génère la liste des sous-répertoires (les musiques)
rep = Dir(repertoire & "\", vbDirectory)
Do While rep <> ""
If InStr(rep, ".") = 0 Then
listerep = listerep & rep & ","
End If
rep = Dir
Loop
'transforme la liste en tableau
listerep = Split(listerep, ",")
' on génère les fichiers HTML pour chaque sous-répertoire (musqiue)
For i = LBound(listerep) To UBound(listerep) - 1
'ouvrir fichier html en écriture (on écrase s'il existe déja)
Open repertoire & "\" & listerep(i) & ".html" For Output As #1
'html initial
Print #1, "<!DOCTYPE html>"
Print #1, "blabla blabla "
mp3 = Dir(repertoire & "\" & listerep(i) & "\*.mp3")
ctr = 0 'ctr nombre de mp3 déjà dans le fichier
'pour chaque mp3 trouvé dans le sous-répertoire (musique)
Do While mp3 <> ""
ctr = ctr + 1
'html pour mp3
If ctr > 1 Then Print #1, "," 'on ajoute une virgule si encore des mp3
Print #1, "{"
Print #1, """title"":""" & Replace(mp3, ".mp3", "") & ""","
Print #1, """url"":""" & monsite & "/" & listerep(i) & "/" & mp3 & ""","
Print #1, """gain"": 1,"
Print #1, """muted"": false,"
Print #1, """hidden"":false"
Print #1, "}";
mp3 = Dir
Loop
'html final
Print #1, ""
Print #1, "],"
Print #1, """master"": {"
Print #1, """pan"": 0,"
Print #1, """gain"": 1,"
Print #1, """muted"": false"
Print #1, "}"
Print #1, "}"
Print #1, "}"
Print #1, "})"
Print #1, "</script>"
Print #1, "</body>"
Print #1, "</html>"
Close #1
Next i
End SubBonjour et Merci pour votre aide
mais il ne se passe rien après avoir chois le dossier des mp3
sans doute du fait qu'il n'y ai aucun sous répertoire?
en fait pour chaque chanson, j'ai un seul dossier avec les mp3 dedans.
donc jamais de sous répertoire.
le fichier html à générer doit atterrir dans ce dossier si possible avec pour nom le nom du dossier.
bonjour,
je suis parti de l'hypothèse suivante concernant l'organisation des répertoires :
| répertoire contenant les musiques | sous-répertoire musique | fichier mp3 |
| mp3 | music1 | drum.mp3 |
| guitar.mp3 | ||
| piano.mp3 | ||
| music2 | softdrim.mp3 | |
| softguitar.mp3 | ||
| softpiano.mp3 | ||
| va générer | ||
| music1.html | ||
| music2.html |
le répertoire à sélectionner est mp3, la macro génèrera un fichier html par sous-répertoire musique trouvé dans mp3
je vais sans doute paraitre pénible
votre bout de code pourrait me servir dans le cas ou j'ai plusieurs sous dossiers de multipiste .mp3
mais en simplifiant?
-ne considérer que le dossier choisi ex "starlight" qui contient "X" mp3
et attribuer au fichier html créé le nom de ce dossier ?
style starlight.html
Ps: milles fois merci de m'aider, c'est pas tous les jours que l'on rencontre des personnes serviables.
re-bonjour,
voici
Sub aargh()
monsite = "monsite"
'choix du répertoire contenant une musique
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
.Title = "choisir le répertoire contenant les fichiers MP3"
If .Show = True Then
repertoire = .SelectedItems(1)
Else
MsgBox "pas de répertoire sélectionné"
Exit Sub
End If
End With
' on génère le fichier HTML pour cette musique dans ce répertoire
musique = Mid(repertoire, InStrRev(repertoire, "\") + 1)
'ouvrir fichier html en écriture (on écrase s'il existe déja)
Open repertoire & "\" & musique & ".html" For Output As #1
'html initial
Print #1, "<!DOCTYPE html>"
Print #1, "blabla blabla "
mp3 = Dir(repertoire & "\*.mp3")
ctr = 0 'ctr nombre de mp3 déjà dans le fichier
'pour chaque mp3 trouvé dans le sous-répertoire (musique)
Do While mp3 <> ""
ctr = ctr + 1
'html pour mp3
If ctr > 1 Then Print #1, "," 'on ajoute une virgule si encore des mp3
Print #1, "{"
Print #1, """title"":""" & Replace(mp3, ".mp3", "") & ""","
Print #1, """url"":""" & monsite & "/" & musique & "/" & mp3 & ""","
Print #1, """gain"": 1,"
Print #1, """muted"": false,"
Print #1, """hidden"":false"
Print #1, "}";
mp3 = Dir
Loop
'html final
Print #1, ""
Print #1, "],"
Print #1, """master"": {"
Print #1, """pan"": 0,"
Print #1, """gain"": 1,"
Print #1, """muted"": false"
Print #1, "}"
Print #1, "}"
Print #1, "}"
Print #1, "})"
Print #1, "</script>"
Print #1, "</body>"
Print #1, "</html>"
Close #1
End SubGénial.
ça fonctionne nickel, vous êtes trop fort. !
une dernière chose si vous permettez
à la place de blablabla, j'ai des lignes comme celle ci:
<link rel="stylesheet" type="text/css" href="https://unpkg*com/vue-audio-mixer/dist/vue-audio-mixer.min.css">
j'ai vu que vous rajoutiez des guillemets mais quelle est la formule en fait?
si j'ai 3 fois des guillemets je mets 3 guillemets au début et à la fin et 2 partout?
si vous pouviez me montrer ce que va devenir cette ligne avec le print#1, je pourrai mieux comprendre peut être
Ps: n'y a t'il pas un moyen de copier coller tout un bout de code html par hasard?
d'une cellule vers le code par exemple ...
bonjour,
en vba, une chaine de caractères commence et se termine par un ". pour mettre un " dans une chaîne de caractères, on le double.
quelques exemples non testés :
pour avoir "" mettre """"""
pour avoir "d" mettre """d"""
pour avoir d"d"d mettre "d""d""d"
<link rel="stylesheet" type="text/css" href="https://unpkg*com/vue-audio-mixer/dist/vue-audio-mixer.min.css">
print #1,"<link rel=""stylesheet"" type=""text/css"" href=""https://unpkg*com/vue-audio-mixer/dist/vue-audio-mixer.min.css"">"pour le copier-coller manuel, pour adapter le code, c'est possible à condition de faire la correction des ".
on peut aussi prévoir un copier coller à partir de cellules excel, plutôt que du texte en "dur" dans le programme.
Très bien,tout cela fonctionne !
j'ai pu terminer la macro avec vos exemples et instructions.
alors un grand bravo et surtout un très grand merci !