Загрузите видео в 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 это многошаговый процесс:
- Создайте видеообъект на Vimeo
- Загрузить данные видео файла
- Убедитесь, что 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
Надеюсь, что это указывает вам в правильном направлении!