Python Youtube-dl - держать окно терминала / tkinter открытым после выполнения

Я использую tkinter и youtube-dl под python

def dl(lk,fl): # link / file location
    opts=['-o', fl+'/%(title)s-%(id)s.%(ext)s', '--playlist-end', '20', '--extract-audio', '--audio-   format', 'mp3', '--audio-quality', '9', '--write-thumbnail', lk]
    youtube_dl.main(opts)
    return "Successful download"

Это основная функция, которая использует библиотеку, ничего необычного.

Я звоню из tkinter, поэтому, когда я запускаю его, загрузка начинается и заканчивается. После этого он закрывает мои окна tkinter.

Здесь функция, которая вызывает первую функцию в классе tkinter.

def dlv(self):
    self.url = self.iurl.get()
    if not self.url:
        self.msg = "Error : no url"
    elif not urlregex.match(self.url):
        self.msg = "Error : invalid url"
    else:
        self.msg = dl(self.url,filel)
    self.Com()

Я пытаюсь остановиться, вызывая некоторые функции в качестве ввода или необработанного ввода. Я также искал вариант из библиотеки YouTube YouTube.

Ничто не работает хорошо.

Спасибо

1 ответ

Решение

Я не знаком с youtube_dl, но я думаю, что это вызывает sys.exit в конце. Попробуйте subprocess.Popen вместо.

Что-то вроде,

import subprocess

def dl(lk, fl):
    opts = ['-o', fl + '/%(title)s-%(id)s.%(ext)s', '--playlist-end', '20',
            '--extract-audio', '--audio-   format', 'mp3', '--audio-quality',
            '9', '--write-thumbnail', lk]

    args = ['python', '-m', 'youtube_dl']
    args.extend(opts)

    p = subprocess.Popen(args) # You can use subprocess.PIPE to redirect stdout & stderr. Read the doc for more info.
    p.communicate() # Wait for process to terminate.

    if p.returncode == 0: # You might wanna check for correct successful return code.
        return 'Successful download'
    else:
        return 'Download Failed'

Обратите внимание, что я не тестировал этот код. Кроме того, это приведет к зависанию основного окна tkinter. Вы можете вызвать это в отдельном потоке / процессе.

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