python-在浏览器上启动媒体,然后退出

python-在浏览器上启动媒体,然后退出,python,ubuntu,epiphany,Python,Ubuntu,Epiphany,我有一个python cgi/html,它接受url并在epiphany浏览器上启动。 但是,在媒体/视频结束后,我需要终止浏览器。 在其他帖子上,似乎有一些方法可以通过vlc媒体和其他播放器实现这一点。但是我还没有找到一个有浏览器的 该命令的基本框架如下所示: msg = form.getvalue("msg", "(no msg)") ....... ## in-progress of msg = "sudo -u vnc " + msg + " " ....... from subpro

我有一个python cgi/html,它接受url并在epiphany浏览器上启动。 但是,在媒体/视频结束后,我需要终止浏览器。 在其他帖子上,似乎有一些方法可以通过vlc媒体和其他播放器实现这一点。但是我还没有找到一个有浏览器的

该命令的基本框架如下所示:

msg = form.getvalue("msg", "(no msg)")
.......
## in-progress of msg = "sudo -u vnc " + msg + " " 
.......
from subprocess import *
print Popen(msg, shell=True, stdin=PIPE, stdout=PIPE).communicate()[0]
如何实现在流媒体(youtube、cnn等)完成后关闭执行的命令(url)


谢谢。

最简单的方法是使用
pkill
。当您想要杀死操作系统Unix系列中的浏览器
epiphany
的一个实例时,您可以使用以下方法:

import os
os.system("pkill epiphany-browser")
import os
os.system("pkill -n epiphany-browser")
如果可执行文件的名称不是
epiphany browser
,请将
pkill
命令的第二部分更改为匹配

还要记住,这将杀死所有具有该名称的进程。要仅杀死最新的,您可以执行以下操作:

import os
os.system("pkill epiphany-browser")
import os
os.system("pkill -n epiphany-browser")
如果您想变得非常聪明,可以尝试在启动后绘制实际进程号:

import os
# launch stuff...
epiphanyPID=os.system("pgrep -n epiphany-browser")[2]
# do other stuff...
os.system("kill -9 " + epiphanyPID)
您可能还应该使用
webbrowser
对象,而不是使用
Popen
打开。据我从文档中了解,它缺少一个
close
,但对于打开会话,它是首选解决方案<代码>顿悟通过
Galeon
对象得到支持:


您需要知道视频的长度,然后终止进程,所以每次都要写一些获取长度(分、秒)的东西吗?老实说,这看起来不像是子进程的工作,浏览器无法告诉python文件已经完成,所以您无法通过子进程知道歌曲/视频等的时间。。已经完成。使用类似vlc的东西,你可以监控输出,从内存中,我认为当媒体结束时,它会自动终止。什么在浏览器中播放媒体?大部分时间是youtube。我想我可以通过VLC传输?老实说,我真的不知道最好的方法是什么。我所知道的是,使用子流程实现并不是件小事。谢谢你,但我仍然需要弄清楚它应该在什么时候调用你推荐的“pkill”?(与视频停止时一样?).FYI,
pkill
只是一个Linux shell实用程序,用于按名称终止进程。如果可以获得视频时间,可以将
pkill
计划为
cron
作业(通过类似的系统调用),或者使用
sleep
延迟命令。不过,很难把握好时间,因为用户总是可以暂停视频。如果没有来自视频托管服务的直接信号,你最好能做的就是做出有根据的猜测。好的,谢谢。我将让用户输入视频的长度或默认值。