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 Sub

Bonjour 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 musiquessous-répertoire musiquefichier mp3
mp3music1drum.mp3
guitar.mp3
piano.mp3
music2softdrim.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 Sub

Gé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 !

Rechercher des sujets similaires à "generer fichier html partir dossier"