Vimeo API - получение категорий и кредитов

Я делаю сценарий, который берет идентификатор видео из Vimeo, вызывает API и заполняет базу данных всеми необходимыми данными.

Я могу получить все поля, и все работает нормально, используя этот URL: https://api.vimeo.com/videos/ {video_id}.

Я также могу использовать запрос? Fields = name и т. Д. Чтобы получить только те поля, которые мне нужны.

Но когда я делаю этот запрос к API (даже когда я использую запрос полей), массив категорий пуст, а кредиты возвращаются следующим образом:

"credits": {
    "uri": "/videos/{video_id}/credits",
    "options": [
        "GET",
        "POST"
    ],
    "total": 1
}

Если я сделаю еще один запрос, на этот URL:
https://api.vimeo.com/videos/ {video_id} / кредиты
https://api.vimeo.com/videos/ {video_id} / категории

Я получаю всю необходимую информацию о кредитах и ​​категориях.

Проблема в том, что я не хочу делать 3 запроса к API, чтобы получить все, что мне нужно. Почему кредиты и категории не включены в исходный запрос видео? Есть ли способ сделать это одним звонком?


person Cryptomothy    schedule 20.09.2018    source источник


Ответы (1)


Что касается категорий, видео не может быть отнесено к категории ни владельцем видео, ни куратором Vimeo. Если видео не было категоризировано, массив категорий будет пустым.

Например, это тестовое видео не возвращает категорий:

curl -X GET 
  'https://api.vimeo.com/videos/76979871?fields=uri,categories' 
  -H 'Accept: application/vnd.vimeo.*+json;version=3.4' 
  -H 'Authorization: bearer [token]' 

В этом видео, выбранном персоналом, есть несколько категорий и подкатегорий:

curl -X GET 
  'https://api.vimeo.com/videos/274849065?fields=uri,categories.uri,categories.uri,categories.name,categories.top_level' 
  -H 'Accept: application/vnd.vimeo.*+json;version=3.4' 
  -H 'Authorization: bearer [token]' 

Что касается кредитов, у видео всегда будет как минимум один кредит (владелец видео). Я предлагаю добавить некоторую логику, чтобы, если metadata.connections.credits.total больше 1, затем сделать дополнительный запрос, чтобы получить этих других кредитных пользователей.

Например, это же видео, выбранное персоналом, возвращает metadata.connections.credits.total = 2, поэтому, чтобы получить дополнительного пользователя, которому были предоставлены кредиты, вам необходимо сделать запрос в конечную точку кредитов видео.

curl -X GET 
  'https://api.vimeo.com/videos/274849065?fields=uri,metadata.connections.credits' 
  -H 'Accept: application/vnd.vimeo.*+json;version=3.4' 
  -H 'Authorization: bearer [token]' 

Причина для отдельной конечной точки для кредитов заключается в том, что каждый пользовательский объект может содержать много метаданных - если видео кредитует много пользователей, видеоответ (который и так уже довольно велик) может быть еще больше, если параметр fields не используется .

Я надеюсь, что эта информация поможет!

person Tommy Penner    schedule 20.09.2018
comment
Спасибо за уделенное время! На самом деле, как я уже сказал, у видео есть категории, и я могу получить к ним доступ, используя api.vimeo.com/ видео {video_id} / категории. Исходный запрос просто возвращает пустой массив по какой-то причине, которую я пока игнорирую. Кроме того, вы правы относительно логики кредитов, я не думаю, что смогу сделать это без второго запроса, но самый минимум, такой как имя и роль, будет полезен для входа в первичный запрос. - person Cryptomothy; 20.09.2018
comment
@cryptomothy Если видео было отнесено к категории, но не возвращаются эти метаданные, это может быть ошибкой с этим конкретным видео. Я предлагаю обратиться к Vimeo и сослаться на эту ветку Stack Overflow: help.vimeo.com - person Tommy Penner; 20.09.2018