python - VLC模块在if语句中不播放歌曲
问题描述
我尝试编写代码来询问用户想要播放的歌曲(在显示的选项列表中),但问题是 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',
推荐阅读
- python - Django 400:错误请求 此字段为必填项
- hibernate - 查询字符串中出现意外的“来自” - JAva 休眠
- spring-boot - Application.properties 和 r2dbc
- python - Pygame 随机移动敌人
- gulp - 如何运行 gulp 的本地版本和任何节点可执行文件的本地版本?即,不是全局安装的版本
- java - 为什么即使我的代码正确,我的代码在“Gdx.graphics.getWidth()/2”下也会出现红色下划线错误?
- swift - 如何对采用类型的 swift 协议设置约束?
- python-3.x - 从列表中创建一个具有名称的变量
- flutter - Flutter TextFormField 不会取消关注前一个
- angular - 带有ngrx / store的角度分页表