Сортировка Youtube API получается из списка воспроизведения
Я сейчас борюсь с API Youtube v3, и я не могу заставить его работать так, как я хочу. Моя цель - загрузить последние видео из выбранного списка воспроизведения на мой сайт. Проблема в том, что я только самые старые видео в своем ответе.
Чтобы загрузить список воспроизведения, я запрашиваю следующий URI API:
https://www.googleapis.com/youtube/v3/playlistItems
Вот пример запроса (просто нажмите выполнить):
http://developers.google.com/apis-explorer/#p/youtube/v3/youtube.playlistItems.list?part=id%252Csnippet%252CcontentDetails%252Cstatus&playlistId=PLOU2XLYxmsIKGo-dgliIJQNZ6L3G8UV4b&_h=1&
Как сортировать результат и получать последние видео? Я не могу найти что-либо в документах, и я без искажений искал. Нет никакого смысла в этом API, если вы не можете отсортировать результат. Единственный способ - загрузить все видео, продолжая загружать следующую страницу с помощью токена, но это просто безумие.
Любая идея? Звучит как основная проблема, но я не могу найти решение...
Ответы
Ответ 1
В текущем API отсутствует опция сортировки для перечисления элементов списка воспроизведения, но если вы вставляете элементы программно, вы можете указать значение position
при вставке для создания новых видео в верхней части списка.
Если кто-то еще добавляет видео, вам придется получать все страницы. Поскольку списки воспроизведения ограничены 200 элементами, для этого требуется не более 4 запросов. Не идеально, но теперь это единственный вариант.
Ответ 2
В настоящее время это похоже на ограничение API YouTube и кажется его недальновидным создателями.
Это не решит вашу точную проблему, но для других, имеющих аналогичную проблему, я обнаружил, что с помощью запроса поиска вы можете в определенной степени заказать.
Это помогло мне заказать запрос плейлиста (не playlistItems), пытаясь найти списки воспроизведения, а не запрашивать список плейлистов. Таким образом, мой запрос:
https://www.googleapis.com/youtube/v3/playlists?part=snippet&maxResults=20&channelId={channelID}&key={API_KEY}
стали:
https://www.googleapis.com/youtube/v3/search?part=snippet&type=video&order=date&safeSearch=none&maxResults=20&channelId={channelID}&key={API_KEY}
Вы также можете искать видео и условия запроса и несколько других параметров, поэтому, возможно, вы сможете получить результаты, которые вы хотите таким образом.
Ответ 3
В запросе вы должны указать как playlistID, так и channelID следующим образом:
https://www.googleapis.com/youtube/v3/search?part=snippet&type=video&order=date&maxResults=20&playlistId={playlistID}&channelId={channelID}&key={API_KEY}
Ответ 4
Это единственный доступный вариант. Вместо того, чтобы пытаться отсортировать список видео из URL-адреса Http-запроса, вы можете отсортировать порядок в настройке списка воспроизведения учетной записи YouTube.
В настройках списка воспроизведения вы можете либо вручную перетащить и изменить список, либо есть возможность изменить порядок. Youtube Data API будет выводить данные в виде списка воспроизведения, который показывает данные.
Сводка: измените порядок воспроизведения в учетной записи YouTube, вместо этого пытаясь отфильтровать данные с помощью http-запросов.
К вашему сведению: настройки плейлиста могут быть изменены только учетной записью пользователя. Надеюсь, это поможет.
Ответ 5
У меня возникла та же проблема... вместо того, чтобы сначала использовать API для получения самого нового (кажется, нет способа сделать это), почему бы вам сначала не отсортировать видео внутри своего плейлиста, а затем использовать API который вернет их в порядке их появления в списке воспроизведения.
Примерно так: https://community.tubepress.com/topic/5624-how-to-customize-sort-order-of-youtube-playlists/