Извлечение YouTube видео из нескольких каналов - PullRequest
0 голосов
/ 11 января 2020

Я хотел бы получить информацию о 5 последних видео, которые приходят с выбранных каналов YouTube. Я написал функцию, которая позволяет мне это делать, но у нее довольно много API-вызовов. Могу ли я сделать это лучше?

const { google } = require("googleapis");

const youtube = google.youtube({
  version: "v3",
  auth: "my API key"
});

const fetchVideos = async () => {
  const channels = await youtube.channels.list({
    part: "contentDetails",
    id: "channel_1_id, channel_2_id, channel_3_id"
  });

  const playlistIds = channels.data.items.map(
    channel => channel.contentDetails.relatedPlaylists.uploads
  );

  const playlistItemsPromiseArray = playlistIds.map(id =>
    youtube.playlistItems.list({
      part: "snippet",
      playlistId: id
    })
  );

  const playlistItems = await Promise.all(playlistItemsPromiseArray);

  const videos = playlistItems
    .reduce((prev, curr) => [...prev, ...curr.data.items], [])
    .sort(
      (a, b) =>
        new Date(b.snippet.publishedAt) - new Date(a.snippet.publishedAt)
    )
    .slice(0, 5);

   return videos;
}
...