我正在编写一个从 YouTube 下载视频的程序,使用youtube-dl
.
我曾经用以下方式调用 youtube-dl subprocess
:
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 进行打印。
你能帮助我吗?