【问题标题】:youtube api v3 search through bash and curlyoutube api v3 通过 bash 和 curl 搜索
【发布时间】:2016-04-02 10:41:07
【问题描述】:

我在使用 YouTube API 时遇到问题。我正在尝试制作一个 bash 应用程序,它可以让在 Linux 的命令行上轻松观看 YouTube 视频。我正在尝试通过 cURL 获取一些视频搜索结果,但它返回错误:curl: (16) HTTP/2 stream 1 was not closed cleanly: error_code = 1

我使用的 cURL 命令是:

curl "https://ww.googleapis.com/youtube/v3/search" -d part="snippet" -d q="kde" -d key="~~~~~~~~~~~~~~~~"

当然,我将我的 YouTube 数据 API 密钥添加到 ~~~~~~~~ 所在的位置。
我究竟做错了什么?

我怎样才能让它工作并返回搜索属性?

【问题讨论】:

  • 欢迎来到 Stack Overflow。如果您不理解答案,请随时向发布它的人提出更多问题。在您理解它并且它正在工作之前,您不必接受答案。

标签: linux bash curl youtube


【解决方案1】:

我可以看到您的请求中有两处不正确:

首先,您打错了“www”并说“ww”。这不是一个有效的网址

那么,curl 的“-d”选项仅适用于 POSTing,而不适用于 GETting,至少默认情况下不会。你有两个选择:

  1. 将 -G 开关添加到 url,让 curl 将 -d 选项重新解释为查询选项:

curl -G https://www.googleapis.com/youtube/v3/search -d part="snippet" -d q="kde" -d key="xxxx"

  1. 将您的 url 修改为典型的 GET 请求:

curl "https://www.googleapis.com/youtube/v3/search?part=snippet&q=kde&key=XX"

作为提示,使用 bash 解释生成的 json 可能不是最好的方法。您可能想研究使用 python、javascript 等来运行您的查询并解释生成的 json。

【讨论】:

  • 天啊,我不知道我的 URL 输入错误了!非常感谢你!我的新命令是curl -G "https://www.googleapis.com/youtube/v3/search" -d part="snippet" -d q="kde" -d key="XXXXXXX"。顺便说一句,我将削减其余的 json 语法并只保留名称。这才是我真正需要的。
  • 您可能需要查看 jq 以从命令行解析出您的 json。
  • 'sed' 做得很好,所以不需要任何 json 解析器。不过还是谢谢你,下次我会用json做的。
猜你喜欢
  • 2020-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-02
  • 1970-01-01
相关资源
最近更新 更多