python - запустить медиа в браузере и выйти

У меня есть Python CGI / HTML, который принимает URL-адрес и запускается на обозрение обозрение. Однако, после того, как медиа / видео закончилось, мне нужно, чтобы браузер завершил работу. В других сообщениях, кажется, есть способы сделать это с vlc-media и другими игроками. Но я не нашел один с браузером.

Базовая структура вокруг команды выглядит так:

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]

Как реализовать так, чтобы выполняемая команда (url) отключалась после завершения потоковой передачи (youtube, cnn и т. Д.)?

Благодарю.

1 ответ

Решение

Самый простой способ сделать это - использовать pkill, Как вы собираетесь убить экземпляр epiphany браузер в семействе операционных систем Unix, вы бы использовали что-то вроде:

import os
os.system("pkill epiphany-browser")

Если ваш исполняемый файл имеет имя, отличное от epiphany-browser изменить вторую часть pkill Команда, чтобы соответствовать.

Также имейте в виду, что это убьет все процессы с таким именем. Чтобы убить только самых новых, вы можете сделать что-то вроде:

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 насколько я понимаю из документации, но для открытия сессии это предпочтительное решение. Epiphany поддерживается через Galeon объект:

20,1. webbrowser - удобный контроллер веб-браузера

Другие вопросы по тегам