Python 正在清除vlc媒体的媒体列表\u列表\u播放机赢得&\x27;不允许重新启动媒体播放器

Python 正在清除vlc媒体的媒体列表\u列表\u播放机赢得&\x27;不允许重新启动媒体播放器,python,raspberry-pi,python-vlc,Python,Raspberry Pi,Python Vlc,我正在制作一个树莓皮4B,我正在制作一个音乐播放器来代替自动点唱机的内部。我正在尝试使用组合键将音乐输入VLC。在这种情况下,选择“A1”将转到作为“/media/usb1”安装到“A1”文件夹的U盘,将找到的任何媒体添加到由媒体列表播放器播放的播放列表中。这是设计好的 当我试图清除媒体列表重新开始时,我的问题就出现了。我需要使用相同的媒体列表播放器名称,但创建新媒体列表后,无法重新启动播放器 以下是我的代码片段: #!/usr/bin/env python3 # import os, sys,

我正在制作一个树莓皮4B,我正在制作一个音乐播放器来代替自动点唱机的内部。我正在尝试使用组合键将音乐输入VLC。在这种情况下,选择“A1”将转到作为“/media/usb1”安装到“A1”文件夹的U盘,将找到的任何媒体添加到由媒体列表播放器播放的播放列表中。这是设计好的

当我试图清除媒体列表重新开始时,我的问题就出现了。我需要使用相同的媒体列表播放器名称,但创建新媒体列表后,无法重新启动播放器

以下是我的代码片段:

#!/usr/bin/env python3
#
import os, sys, csv, vlc, time, serial, configparser, termios, tty, subprocess
#
# Get Defaults
#
SoundBeforeSong = None
SoundAfterSong = None
TrackDelay = None
PlayHistory = None
USBDrive =  "/media/usb1/"
#
# Get keyboard input
#
def getch():  # getchar(), getc(stdin)  #PYCHOK flake
    fd = sys.stdin.fileno()
    old = termios.tcgetattr(fd)
    try:
        tty.setraw(fd)
        ch = sys.stdin.read(1)
    finally:
        termios.tcsetattr(fd, termios.TCSADRAIN, old)
    return ch
#
# Adding to playlist - Returns directory contents and adds to playlist
#
def addplaylist(track):
    list = None
    if os.path.isdir(os.path.join(USBDrive, track)):
        files = [f for f in os.listdir(os.path.join(USBDrive, track)) if os.path.isfile(os.path.join(USBDrive, track, f))]
        for f in files:
            if list is None:
                if SoundBeforeSong:
                    list = SoundBeforeSong + ";" + os.path.join(USBDrive, track, f)
                else:
                    list = os.path.join(USBDrive, track, f)
                if SoundAfterSong:
                    list = list + ";" + SoundAfterSong  
            else:
                if SoundBeforeSong:
                    list = list + ";" + SoundBeforeSong + ";" + os.path.join(USBDrive, track, f)
                else:
                    list = list + ";" + os.path.join(USBDrive, track, f)
                if SoundAfterSong:
                    list = list + ";" + SoundAfterSong
    else:
        print ("Error(3) - Selection folder not present")
    if list is None:
        print ("Error(4) - Selection has no media")
    else:
        if ";" in list:
            list = list.split(";")
            for song in list:
                media_list.add_media(song)
        else:
            media_list.add_media(list)
        print("add media play")
        if not media_player.is_playing():
            media_player.play() 
    return
#
# Define keyboard actions
#
def Jukebox():
    global Action, Bluetooth
    Sel_char = None
    while True:
        key = getch()
        try:
            Sel_char = int(key)
        except:
            try:
                Sel_char = key.upper()
            except:
                Sel_char = None
        if Sel_char == "Z":
            return False
        elif Sel_char == "W":
            if not media_player.is_playing():
                media_player.play()
            if media_player.is_playing():   
                media_player.stop()
                media_list = player.media_list_new()  # creating a new media list
                media_player.set_media_list(media_list)  # setting media list to the media player
        elif type(Sel_char) == str:
            Action = Sel_char
        elif type(Sel_char) == int:
            Action = Action + str(Sel_char)
            addplaylist(Action)
        else:
            pass
#
# Setting Up Media Player
#
# creating Instance class object
player = vlc.Instance('--no-xlib --quiet ') # no-xlib for linux and quiet don't complain
media_player = vlc.MediaListPlayer()  # creating a media player object
media_list = player.media_list_new()  # creating a new media list
media_player.set_media_list(media_list)  # setting media list to the media player
new = player.media_player_new()  # new media player instance
media_player.set_media_player(new)  # setting media player to it
media_events = new.event_manager()  # setting event handler
#
# Read keyboard input
#
print("Ready...")
Jukebox()
#
# Program is shutting down
#
sys.exit()
对我来说,我按了“A1”,音乐就如预期的那样开始了。我按了“W”,它按预期停止。在幕后,我还通过创建一个新的空白列表来清除媒体列表。当我清除列表时,再次点击“W”没有任何作用,所以这是有意义的。我按了“A1”并期望再次听到音乐,但我没有。我看到“添加媒体播放”,但没有声音。如何重新启动媒体列表播放器?或者更合适的问题是,如何清除媒体列表(通过创建新媒体或从列表中删除媒体),并允许使用相同的引用来使用媒体播放器