Загрузите видео в Vimeo, используя их API и curl (POST/PATCH)

Как я понимаю, можно использовать curl для выполнения запросов POST и PATCH;

POST: https://gist.github.com/subfuzion/08c5d85437d5d4f00e58

PATCH: Как использовать глагол PATCH с curl

И API Vimeo поддерживает запросы 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}" }}'

Я подозреваю, что это полно ошибок, и это также не показывает, как загрузить видео с запросами PATCH.

Как будут выглядеть правильные команды curl?

1 ответ

Решение

Для загрузки tus с использованием API Vimeo это многошаговый процесс:

  1. Создайте видеообъект на Vimeo
  2. Загрузить данные видео файла
  3. Убедитесь, что Vimeo получил ваш видеофайл

Шаг 1 - это запрос POST для /me/videos, Если все сделано правильно, вы получите полный видеоответ с "upload" объект, содержащий "upload_link", Использовать upload_link значение для шага 2.

(Обратите внимание, что upload_link должен быть на поддомене Vimeo "Tus", как files.tus.vimeo.com, Если вы получите upload_link на другом поддомене Vimeo с вашим запросом что-то пошло не так, и API по умолчанию использует другой подход к загрузке. Вы также можете проверить, что вы получаете Tus upload_link вернулся, проверив approach значение, вложенное в upload объект, он должен вернуть "тус".)

Из вашего примера --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"}}'

Шаг 2, фактическая загрузка файла, является патчем для upload_link возвращается с шага 1, причем тело запроса содержит необработанные двоичные данные вашего видеофайла:

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

Шаг 3 - это запрос HEAD к тому же upload_linkбез данных файла:

curl --request HEAD upload_link \
  -H 'Accept: application/vnd.vimeo.*+json;version=3.4' \
  -H 'Tus-Resumable: 1.0.0' \

В зависимости от upload-length а также upload-offset возвращенные заголовки, возможно, вам придется повторить шаг 2, возобновив загрузку с последнего байта на серверах Vimeo.

Документация по реализации загрузки Vimeo tus находится здесь: https://developer.vimeo.com/api/upload/videos

Надеюсь, что это указывает вам в правильном направлении!

Другие вопросы по тегам