VLC 模块在 if 语句中不播放歌曲

VLC module not playing song while in if statement

我尝试编写代码询问用户用户想要播放什么歌曲(在显示的选项列表中),但问题是 vlc 模块不想播放歌曲。但是,我在没有 if 语句的情况下尝试过它并且它有效。这是我第一次编码,如果代码看起来乱七八糟,我很抱歉:

from tinytag import TinyTag as chimera
import vlc

def choice():
    try:
        print('music1')
        print('music2')
        print('music3')
        music = int(input('choose the song you like\n'))
        info(music)
        musical(music)
    except ValueError:
        choice()

def info(music):
    try:
        if music == 1:
            tag = chimera.get('C:/Users/user/music/music1.ogg')
            print('song name %s' % tag.title )
            print('Duration %f' % tag.duration)
        elif music == 2:
            tag = chimera.get('C:/Users/user/music/music2.m4a')
            print('song name %s' % tag.title)
            print('Duration %f' % tag.duration)
        elif music == 3:
            tag = chimera.get('C:/Users/user/music3.m4a')
            print('song name %s' % tag.title)
            print('Duration %f' % tag.duration)
        else:
            print('invalid input')
            choice()
    except SyntaxError:
      pass

def musical(music):
    playing = input('do you want to play the music?\n')
    if music == 1 and playing == 'yes':
        player1 = vlc.MediaPlayer('C:/Users/user/music/music1.ogg')
        player1.play()
    elif music == 2 and playing == 'yes':
        player2 = vlc.MediaPlayer('C:/Users/user/music/music2.m4a')
        player2.play()
    elif music == 3 and playing == 'yes':
        player3 = vlc.MediaPlayer('C:/Users/user/music/music3.m4a')
        player3.play()
choice()

vlc 处于活动状态时,您需要保留程序 运行。
我对您的代码做了一些修改,出于我的目的,我删除了 tinytag 引用。

import vlc
import time

def choice():
    try:
        print('music1')
        print('music2')
        print('music3')
        music = int(input('choose the song you like( 1-3 )\n'))
        if music < 1 or music > 3:
            raise ValueError
        musical(music)
    except ValueError:
        print("Input error\n")
        choice()

def musical(music):
    if music == 1:
        player = vlc.MediaPlayer('C:/Users/user/music/music1.ogg')
    elif music == 2:
        player = vlc.MediaPlayer('C:/Users/user/music/music2.ogg')
    elif music == 3:
        player = vlc.MediaPlayer('C:/Users/user/music/music3.ogg')
    player.play()
    playing = set([1,2,3,4])
    time.sleep(0.1)
    while True:
        state = player.get_state()
        if state not in playing:
            break
        time.sleep(1)

choice()

请注意 vlc 播放器 state 值为:

0: 'NothingSpecial',
1: 'Opening',
2: 'Buffering',
3: 'Playing',
4: 'Paused',
5: 'Stopped',
6: 'Ended',
7: 'Error',