скрыть окно youtube-dl с исполняемым файлом - PullRequest
0 голосов
/ 28 июня 2018

Мой упрощенный код в Python 3.5:

...    
command = 'youtube-dl -f bestaudio MYURL &'
outfile = open('test.txt','w')
call(command.split(), stdout=outfile, stderr=outfile)
...

Я запускаю его из графического интерфейса tkinter. Он отлично работает из Sublime Text, но когда я делаю свой скрипт исполняемым (через cx_freeze), youtube-dl показывает пустое черное окно в течение нескольких секунд.

Идет отлично, но окно раздражает. Есть ли способ это скрыть?

1 Ответ

0 голосов
/ 28 июня 2018

stdout не работает в приложении с графическим интерфейсом, вам нужно установить правильные флаги через win32api, чтобы скрыть окна подпроцесса. Использование call() не будет работать, так как не поддерживает хелпер STARTUPINFO , вместо этого вы можете использовать Popen()

Нечто подобное должно сработать:

from subprocess import Popen, STARTUPINFO, STARTF_USESHOWWINDOW, SW_HIDE, PIPE

si = STARTUPINFO()
si.dwFlags |= STARTF_USESHOWWINDOW
si.wShowWindow = SW_HIDE

proc = Popen(['youtube-dl', '-f', 'bestaudio', MYURL], stdin=PIPE, 
                                                       stdout=stdout_file, 
                                                       stderr=PIPE, 
                                                       shell=False, 
                                                       startupinfo=si)
ret_code = process.wait()
stdout_file.flush()
...