我在python下使用tkinter和youtube-dl
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类中的第一个函数的函数。
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 dl图书馆寻找选择。
一切都很顺利。
谢谢
发布于 2014-12-23 01:39:40
我对youtube_dl不熟悉。但是,我想它叫sys.exit at end.Try 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'注意,我没有测试这个code.also --这将挂起主tkinter window.you可能希望在单独的线程/进程中调用它。
https://stackoverflow.com/questions/27612283
复制相似问题