是否可以使用Javascript获取YouTube频道的所有视频的文字记录

问题描述 投票:0回答:1

我想获取 YouTube 频道上所有视频的所有文字记录。这是我的代码。

async function getVideoTranscripts(videoId) {
  try {
    const response = await axios.get(
      `https://www.googleapis.com/youtube/v3/captions?part=snippet&videoId=${videoId}&key=${process.env.YOUTUBE_API_KEY}`
    );

    const captionIds = response.data.items.map((item) => item.id);

    // Step 2: Fetch transcripts for each caption
    const transcriptPromises = captionIds.map(async (captionId) => {
      try {
        const transcriptResponse = await axios.get(
          `https://www.googleapis.com/youtube/v3/captions/${captionId}&key=${process.env.YOUTUBE_API_KEY}`,
          {
            headers: {
              Authorization: `Bearer ${accessToken}`,
            },
          }
        );
        return transcriptResponse.data.body;
      } catch (error) {
        console.error(
          `Error fetching transcript for caption ${captionId}:`,
          error
        );
        return null;
      }
    });

    const transcripts = await Promise.all(transcriptPromises);
    return transcripts.filter((transcript) => transcript !== null);
  } catch (error) {
    console.error(`Error fetching transcripts for video ${videoId}:`, error);
    return [];
  }
}

但是,我不断收到此错误:

AxiosError {message: 'Request failed with status code 401', name: 'AxiosError', code: 'ERR_BAD_REQUEST', config: {…}, request: XMLHttpRequest, …}

我的 API 密钥拥有控制台发出任何请求的完全权限。我不太清楚为什么会失败。

next.js youtube-api
1个回答
0
投票

我猜它不适用于另一个 youtube 频道。如果 youtube 频道是你的,那么 youtube api 需要授权才能工作。不需要 oauth2 的 api 可以获取。

© www.soinside.com 2019 - 2024. All rights reserved.