我想获取 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 密钥拥有控制台发出任何请求的完全权限。我不太清楚为什么会失败。
我猜它不适用于另一个 youtube 频道。如果 youtube 频道是你的,那么 youtube api 需要授权才能工作。不需要 oauth2 的 api 可以获取。