Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

comment creer une playlist pour vlc

+2 votes

j'ai déclaré une liste de fichiers mp3, mais je ne sais pas créer le fichier .xspf correspondant à cette playlist.
Grâce a un filtre (fichiers commençant par la lettre S), je chercher a en faire une playlist comprensible pour vlc et l' exporter au format xspf.

Voici ce que j' ai commencé à taper:

import os
import vlc

files = [f for f in os.listdir('.') if os.path.isfile(f)]

speaklist = []

prefix = "S"

for f in files:
    if f.startswith(prefix):
        speaklist.append(f)


speaklist.sort()
print(speaklist)


Instance = vlc.Instance('--input-repeat=-1', '--fullscreen', '--mouse-hide-timeout=0')

MediaList = Instance.media_list_new()


for f in speaklist:
    MediaList.add_media(Instance.media_new(f))

list_player = Instance.media_list_player_new()
list_player.set_media_list(MediaList)
demandé 29-Jun par buffalo974 (2,690 points)

1 Réponse

+1 vote

Si tu veux simplement créer un fichier XSPF compatible pour VLC :

import os.path

def main(path=".", prefix="S"):
    xspf = """<?xml version="1.0" encoding="UTF-8"?>
<playlist version="1" xmlns="http://xspf.org/ns/0/">
  <trackList>
    {}
  </trackList>
</playlist>
"""
    song_fmt = "<track><location>file://{}</location></track>"

    _, _, files = next(os.walk(path))
    song_list = sorted([os.path.join(path, f)
                        for f in files if f.startswith(prefix)])

    tracks = []
    for song in song_list:
        path = song_fmt.format(os.path.realpath(song))
        tracks.append(path)

    with open("playlist.xspf", "w") as f:
        f.write(xspf.format("\n".join(tracks)))

J'arrive à faire fonctionner avec ce code :

import os
import time

import vlc


def main(path=".", prefix="S"):
    # Construction de la liste de lecture
    _, _, files = next(os.walk(path))
    song_list = sorted([os.path.join(path, f)
                        for f in files if f.startswith(prefix)])

    instance = vlc.Instance('--input-repeat=-1',
                            '--fullscreen',
                            '--mouse-hide-timeout=0')
    for song in song_list:
        player = instance.media_player_new()
        media = instance.media_new(song)
        media.parse()

        player.set_media(media)
        player.play()
        time.sleep(1)
        while player.is_playing():
            time.sleep(1)


if __name__ == "__main__":
    main()

J'ai pas mal tatonné mais le principal du code vient de cette réponse SO.

répondu 9-Jul par Tiger-222 (870 points)
edité 12-Jul par Tiger-222

ça me lit en boucle le premier mp3 par ordre alphabetique, et ça ne créer pas non plus de fichier xspf (playlist vlc).

OK, j'ai mis à jour la réponse pour générer le fichier demandé.

chez moi ça marche toujours pas, ça boucle toujours en lecture sur le premier mp3, et pas de génération de xspf.

pour exemple ma liste de fichiers est la suivante :

['S00-TITLE.mp3', 'S01.mp3', 'S02.mp3', 'S03.mp3', 'S04.mp3', 'S05.mp3', 'S06.mp3', 'S07.mp3', 'S08.mp3', 'S09.mp3', 'S10.mp3', 'S11.mp3', 'S12.mp3', 'S13.mp3']

les fichiers suivants ont été filtrés et exclus, ce qui est correcte:

N68.mp3
T01.mp3
...