我正在编写一个从YouTube下载视频的程序,使用youtube-dl
。
我过去是用subprocess
调用youtube-dl:
import subprocess
p = subprocess.Popen([command], \
stdout=subprocess.PIPE, \
stderr=subprocess.STDOUT, \
universal_newlines = True)
然后,我可以通过调用以下命令来读取进程的输出:
for line in iter(p.stdout.readline, ""):
hide_some_stuff_using_regex()
show_some_stuff_using_regex()
然而,我更喜欢将youtube-dl
作为Python类来使用。因此,现在我正在这样做:
from youtube_dl import YoutubeDL as youtube_dl
options = {"restrictfilenames": True, \
"progress_with_newline": True}
ydl = youtube_dl(options)
ydl.download([url])
代码可以运行,但我很难找到如何管道传输
youtube-dl
的输出。请注意,我想要使用youtube-dl输出的部分来实时打印,因此将sys.stdout
重定向到自定义输出流将不起作用,因为我仍然需要sys.stdout打印。你能帮我吗?
youtube_dl
是什么? - user1907906