使用 API 和curl (POST/PATCH) 将视频上传到 Vimeo

Roe*_*aar 2 curl vimeo vimeo-api

据我了解,可以使用curl来发出POST和PATCH请求;

帖子:https ://gist.github.com/subfuzion/08c5d85437d5d4f00e58

PATCH:如何将 PATCH 动词与 curl 一起使用

Vimeo API 支持 POST 和 PATCH 请求上传视频;

https://developer.vimeo.com/api/upload/videos

到目前为止,这是我对如何编写的最佳猜测;

curl --request --url https://api.vimeo.com/me/videos \
--header 'Authorization: bearer {access_token}' \
--header 'Content-Type: application/json' \
--header 'Accept: application/vnd.vimeo.*+json;version=3.4' \
--data '{ "upload": { "approach": "tus", "size": "{size}" }}'
Run Code Online (Sandbox Code Playgroud)

我怀疑这充满了错误,而且它也没有显示如何使用 PATCH 请求上传视频。

正确的curl 命令是什么样的?

Tom*_*ner 6

对于使用 Vimeo API 进行上传,这是一个多步骤的过程:

  1. 在 Vimeo 上创建视频对象
  2. 上传视频文件数据
  3. 验证 Vimeo 是否已收到您的视频文件

步骤 1 是对 的 POST 请求/me/videos。如果操作正确,您将收到完整的视频响应,其中"upload"包含一个包含"upload_link". 使用upload_link步骤 2 的值。

(请注意,upload_link应该位于 Vimeo“tus” 子域上,例如files.tus.vimeo.com。如果您在不同的 Vimeo 子域上获得upload_link,则表明您的请求出现问题,并且 API 默认采用另一种上传方法。您还可以验证您是否upload_link通过检查对象approach中嵌套的值来获取 tus返回upload,它应该返回“tus”。)

从你的例子来看,--request缺少POST动词/动作。第 1 步应如下所示(另请注意-request-header、 、 和分别与、、 和-data互换):-X-H-d

curl -X POST https://api.vimeo.com/me/videos \
  -H 'Accept: application/vnd.vimeo.*+json;version=3.4' \
  -H 'Authorization: bearer XXXXXXXXX' \
  -H 'Content-Type: application/json' \
  -d '{"upload":{"approach":"tus","size":"999999"}}'
Run Code Online (Sandbox Code Playgroud)

步骤 2,实际的文件上传,是步骤 1 返回的 PATCH upload_link,请求正文包含视频文件的原始二进制数据:

curl --request PATCH upload_link \
  -H 'Accept: application/vnd.vimeo.*+json;version=3.4' \
  -H 'Content-Type: application/offset+octet-stream' \
  -H 'Tus-Resumable: 1.0.0' \
  -H 'Upload-Offset: 0' \
  --data-binary /path/to/file.ext
Run Code Online (Sandbox Code Playgroud)

步骤 3 是对相同的 HEAD 请求upload_link,不带文件数据:

curl --request HEAD upload_link \
  -H 'Accept: application/vnd.vimeo.*+json;version=3.4' \
  -H 'Tus-Resumable: 1.0.0' \
Run Code Online (Sandbox Code Playgroud)

根据返回的upload-lengthupload-offset标头,您可能需要重复步骤 2,从 Vimeo 服务器上的最后一个字节恢复上传。

Vimeo 的 tus 上传实现文档可在此处找到:https ://developer.vimeo.com/api/upload/videos#resumable-approach

希望这能为您指明正确的方向!