我目前正在开发一个小型项目,它将接受一个语音命令,就像你在Raspberry Pi上的YouTube回应用于spotify一样。基本上我叫出歌曲或艺术家,脚本将运行第一个结果(现在)。
我用来将Youtube视频流式传输回音频的库是mps-Youtube,我为它完成了bash自动化,看起来像这样:
(echo -e "$1"; echo -e "1") | mpsyt
第一个参数是歌曲的查询,第二个参数是选择第一个结果。
我遇到的问题是,到目前为止,我可以使用subprocess
模块在Python中运行它,到目前为止看起来像这样(在python shell中测试):
cmd = "/home/pi/bash/play_youtube_song.sh 'tears for fears'" ps = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT) output = ps.communicate()[0] print output
但是,脚本只打印返回代码0
,程序似乎没有完全执行。
我能做些什么来确保python能够完全运行脚本吗?
我尝试使用bash中的&
在后台运行它,但它似乎也不起作用,歌曲无法播放。
提前致谢。
答案 0 :(得分:0)
解决了!
因此,默认情况下,子进程使用/ bin / sh,因此有一个参数允许您将可执行文件更改为/ bin / bash。
我在sh
中运行bash时发现了这一点,并没有将所有参数都反映到mps-youtube中,而在gnome-terminal中它实现了这一点。
信用:https://www.saltycrane.com/blog/2011/04/how-use-bash-shell-python-subprocess-instead-binsh/