【发布时间】:2016-02-01 16:55:09
【问题描述】:
我有一个运行 youtube-dl 的脚本。我使用 system() 通过一个 php 文件运行它,如下所示:
$output = system(getenv("YOUTUBEDL_EXE") . " --no-color -f \"mp4\" \"5uR4JucaZ5I\" -o \"/tmp/%(id)s-%(format)s.%(ext)s\"", $retVal);
视频的 id 不正确(故意),当我在终端(linux)上运行它时得到的输出是这样的:
[youtube] 5uR4JucaZ5I: Downloading webpage
[youtube] 5uR4JucaZ5I: Downloading video info webpage
ERROR: 5uR4JucaZ5I: YouTube said: This video does not exist.
但是,当我通过系统运行它时,$output 变量返回第二行,而不是最后一行
[youtube] 5uR4JucaZ5I: Downloading video info webpage
我仍然得到正确的退出代码(它没有成功完成),但无法获得带有 ERROR: 标记的最后一行,因此我可以解析错误。不幸的是,这是获取错误的唯一方法,因为它只会在任何错误类型上返回 1。
(youtube-dl 是用 python 编写的,它的可执行文件以 :
开头#!/usr/bin/env python
和一个 zip 头(PK ....))
非常欢迎任何有关如何获得最后一行的指针!
谢谢
【问题讨论】:
-
嗯,这是一个错误,我不确定是否会到达
STDOUT。可能直接去STDERR。 -
非常感谢!!在我的命令末尾添加了一个 2>&1 来重定向 STDERR,它就像一个魅力!
-
当然!再次感谢
标签: php python exec system youtube-dl