Python Subprocess - mps-Youtube

时间:2017-06-19 19:57:22

标签: python bash shell youtube subprocess

我目前正在开发一个小型项目,它将接受一个语音命令,就像你在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中的&在后​​台运行它,但它似乎也不起作用,歌曲无法播放。

提前致谢。

1 个答案:

答案 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/