【发布时间】:2017-11-22 03:52:22
【问题描述】:
我目前正在做一个小型项目,该项目将接收语音命令,就像您在 Amazon echo 中使用 Raspberry Pi 上的 YouTube 一样。本质上,我调用歌曲或艺术家,脚本将运行第一个结果(现在)。
我用于将 Youtube 视频流式传输回音频的库是 mps-Youtube,我为它完成了 bash 自动化,如下所示:
(echo -e "$1"; echo -e "1") | mpsyt
第一个参数是歌曲查询,第二个参数是选择第一个结果。
我遇到的问题是,到目前为止,我可以使用subprocess 模块在 Python 中运行它,到目前为止看起来像这样(在 python shell 中测试):
cmd = "/home/pi/bash/play_youtube_song.sh '为恐惧流泪'" ps = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT) 输出 = ps.communicate()[0] 打印输出
然而,脚本只是打印了返回码0,而且程序似乎没有完全执行。
我能做些什么来确保 python 完全运行脚本吗?
我尝试在 bash 中使用 & 在后台运行它,但它似乎也不起作用,歌曲无法播放。
提前致谢。
【问题讨论】:
-
尝试在
sh中运行它,我得到了同样的结果,这可能取决于子进程如何使用 shell 命令 -
谢谢!它打开 mpsyt 并运行该命令,但随后它似乎立即退出它。你是如何克服这个问题的?
-
我认为有些歌曲无法播放的原因我想不通!
标签: python bash shell youtube subprocess