Получить список загруженных видео на канале YouTube по дате публикации - PullRequest
0 голосов
/ 11 декабря 2018

Мне известны подобные вопросы, которые задавались ранее, но не этот, так что, пожалуйста, потерпите меня ...

Я хочу воспроизвести список загруженных видео на канале, поскольку онипоявляются на веб-странице YouTube (разбиты на страницы и отсортированы по дате публикации).

Для этого я пытаюсь получить список идентификаторов VideoID на канале YouTube, отсортированный по дате публикации (по YouTube, а не по моемукод, поскольку в плейлисте может быть 1000 видеороликов, а YouTube ограничивает до 50 результатов на запрос, которые можно добавить, когда я хочу показать пользователю только первые 25 записей).

Изначально я использовал этот YouTubeПоисковый запрос API данных v3:

https://www.googleapis.com/youtube/v3/search?key=[APIKey]&channelId=[ChannelID]&part=snippet,id&order=date&type=video&maxResults=25

Однако, как упоминалось в некоторых из предыдущих публикаций по стеку ( Поиск API API v3 YouTube не возвращает все видео ), этот метод не гарантирует возвратавсе видео и даже некоторые видео отсутствуют в результате, что затрудняет использование этого запроса.

Затем я увидел это видео Google в некоторых изosts:
https://www.youtube.com/watch?v=RjUlmco7v2M

В видео объясняется, что сначала вы должны получить плейлист 'uploads' для канала (я также получаю заголовок канала и миниатюру в этом запросе),который я делаю используя:

https://www.googleapis.com/youtube/v3/channels?key=[APIKEY]&part=snippet,contentDetails&id=[ChannelID]

И как только у меня есть идентификатор плейлиста 'uploads', я запрашиваю:

https://www.googleapis.com/youtube/v3/playlistItems?key=[APIKey]&playlistId=[PlaylistID]&part=snippet,id&order=date&type=video&maxResults=25

Однако возвращаемые записи не сортируютсядата публикации и в соответствии с документацией (https://developers.google.com/youtube/v3/docs/playlistItems/list), необязательный параметр "порядок", связанный с этим запросом.

Учитывая все эти проблемы, как получить первые 25записи плейлиста «uploads», отсортированные по дате публикации, без загрузки всего плейлиста, поэтому я могу точно воссоздать, как на сайте YouTube размещаются видео.

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

Я также использую идентификатор плейлиста, чтобы получить список видео, однако мое, похоже, отсортировано по дате от самого нового до самого старого.Обратите внимание, что Youtube возвращает маркер страницы, который вы можете использовать для получения следующих 25 (или в моем случае 50) видео.Я запрашиваю API следующим образом:

https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&pageToken= not_used_for_first_query&fields=nextPageToken,items(snippet(publishedAt,title,desc ription,thumbnails(default(url)),resourceId(videoId)))&playlistId=uploads_playlist_id&maxResults=50&order=date&key=your_api_key

Это возвращается в ответе JSON:

Заголовок видео
Дата публикации
Описание видео
Youtube URL для видео
Уникальный идентификатор видео
Миниатюра видео

Мой рабочий пример можно посмотреть по адресу https://www.scriptbarrel.com

0 голосов
/ 24 января 2019

После нескольких тестов и благодаря этому ответу (и следующим ответам тоже) Мне удалось получить необходимую информацию с помощью API данных YouTube v3, и вот какЯ сделал это:

Во-первых, в своем вопросе вы используете "search" API - так как я не знаю, какие критерии вы используете в поисковом запросе, я пропустилдля получения прямого получения идентификатора списка воспроизведения "upload" из заданного channel_id.


с использованием channel_id = UCT2rZIAL-zNqeK1OmLLUa6g (который принадлежит " Microsoft HoloLens"), я использую " каналы "API для получения uploads идентификатора списка воспроизведения.

Вот URL-запрос для получения" upload "идентификатора списка воспроизведения изchannel_id ранее упомянуто:

https://www.googleapis.com/youtube/v3/channels?part=id%2Csnippet%2CcontentDetails&fields=items(contentDetails%2FrelatedPlaylists%2Fuploads%2Csnippet%2Flocalized)&id=UCT2rZIAL-zNqeK1OmLLUa6g&key=<YOUR_API_KEY>

Объяснение:

  • часть : установите snippet и contentDetails детали для извлечения:
  • поля : из snippet часть: (localized, description и title) и из contentDetails части: (relatedPlayLists и uploads).
  • id : channel_id используется в этом запросе.

Вот результаты этого запроса:

{
 "items": [
  {
   "snippet": {
    "localized": {
     "title": "Microsoft HoloLens",
     "description": "The official YouTube channel of Microsoft HoloLens. Transform your world with holograms. Visit HoloLens.com for more info."
    }
   },
   "contentDetails": {
    "relatedPlaylists": {
     "uploads": "UUT2rZIAL-zNqeK1OmLLUa6g"
    }
   }
  }
 ]
}

Проверьте значение uploads свойство в разделе contentDetails.Это значение будет использовано в следующем запросе API.

Вы также можете проверить эти результаты в демонстрационной версии Google API Explorer , которую я подготовил для выполнения этого запроса.


После извлечения значения uploads (как указано в предыдущих строках) , теперь пришло время использовать "playlistItems" API для сборкиследующий URL:

https://www.googleapis.com/youtube/v3/playlistItems?part=snippet%2CcontentDetails&playlistId=UUT2rZIAL-zNqeK1OmLLUa6g&fields=items(contentDetails(videoId%2CvideoPublishedAt)%2Csnippet%2Ftitle%2Cstatus)&maxResults=25&key=<YOUR_API_KEY>

Объяснение:

  • часть : установите snippet и contentDetails частей для извлечения следующего:
  • поля : из snippet часть: (title и status) и от contentDetails части: (videoId и videoPublishedAt).
  • playlistId : playlistId используется в этом запросе - (то есть значение uploads) .
  • maxResults : установите на 25.

Вот результаты этого запроса:

{
 "items": [
  {
   "snippet": {
    "title": "Microsoft Windows Mixed Reality update | October 2018"
   },
   "contentDetails": {
    "videoId": "00vnln25HBg",
    "videoPublishedAt": "2019-01-04T17:43:47.000Z"
   }
  },
  {
   "snippet": {
    "title": "How to use Spectator View for mobile devices"
   },
   "contentDetails": {
    "videoId": "3fXlPw_FGLg",
    "videoPublishedAt": "2018-10-15T17:13:42.000Z"
   }
  },
  {
   "snippet": {
    "title": "Microsoft HoloLens: Visualizing the next mission to Mars."
   },
   "contentDetails": {
    "videoId": "XVBbJ4EtAQY",
    "videoPublishedAt": "2018-07-02T16:30:26.000Z"
   }
  },
  {
   "snippet": {
    "title": "Microsoft HoloLens: Making mixed reality plug and play."
   },
   "contentDetails": {
    "videoId": "QwXcSekZKWE",
    "videoPublishedAt": "2018-06-25T23:25:55.000Z"
   }
  },
  {
   "snippet": {
    "title": "Microsoft HoloLens | Windows Mixed Reality HMD Exerciser"
   },
   "contentDetails": {
    "videoId": "RU3OMjq_Yic",
    "videoPublishedAt": "2018-05-14T16:58:43.000Z"
   }
  }
 ]
}

Я проверяю oСортировка элементов и их сортировка по videoPublishedAt значению (от нового к старому) .

Вы также можете проверить эти результаты в попытке -it funcionality найдено в API данных YouTube v3 - официальная документация. 1


1 В этом случае я не смог использоватьGoogle API Explorer (как я использовал в первом запросе) , потому что я всегда получал «ошибку бэкэнда».

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "backendError",
    "message": "Backend Error"
   }
  ],
  "code": 500,
  "message": "Backend Error"
 }
}

Я думаю, это потому, что проводник Google API устарел.

Если кто-то захочет проверить его, вот демо .

...