diff --git a/lib/explore.mjs b/lib/explore.mjs index 62bbfb5..99d6eef 100644 --- a/lib/explore.mjs +++ b/lib/explore.mjs @@ -28,21 +28,22 @@ export const exploreVideos = async (videoId, onUpdate) => while (queue.length > 0) { const currentId = queue.shift(); - const config = await api.getPlayerConfig(currentId); - const meta = api.getVideoMeta(config); - videosNodes[currentId] = meta; - nextVideos[currentId] = new Set(); - - // Add links between this video and the linked ones - api.getEndScreenVideos(config) - .forEach(nextId => nextVideos[meta.videoId].add(nextId)); - api.getCardVideos(config) - .forEach(nextId => nextVideos[meta.videoId].add(nextId)); - - for (let nextId of nextVideos[meta.videoId]) + if (!(currentId in videosNodes)) { - if (!(nextId in videosNodes)) + const config = await api.getPlayerConfig(currentId); + const meta = api.getVideoMeta(config); + + videosNodes[currentId] = meta; + nextVideos[currentId] = new Set(); + + // Add links between this video and the linked ones + api.getEndScreenVideos(config) + .forEach(nextId => nextVideos[meta.videoId].add(nextId)); + api.getCardVideos(config) + .forEach(nextId => nextVideos[meta.videoId].add(nextId)); + + for (let nextId of nextVideos[meta.videoId]) { queue.push(nextId); }