导入
上传视频
学习如何使用 YouTube Data API 上传视频并设置缩略图。
`videos` 资源用于对 YouTube 视频执行多种操作。在本课程中,我们将学习 `videos` 资源的两个重要端点。此外,我们还将学习如何使用 YouTube Data API 上传视频以及为视频添加缩略图。
...
代码示例
1https://www.googleapis.com/upload/youtube/v3/videos
| 参数名 | 类型 | 分类 | 描述 |
|---|---|---|---|
| part | 字符串 | 必需 | 此参数有两个作用:指定用户将设置的属性,以及指定 API 响应中包含的属性,包括 contentDetails、fileDetails、id、liveStreamingDetails、localizations、player、processingDetails、recordingDetails、snippet、statistics、status、suggestions 和 topicDetails。 |
| notifySubscribers | 布尔值 | 可选 | 允许 YouTube 向频道订阅者发送通知。 |
| onBehalfOfContentOwner | 字符串 | 可选 | 用于标识用户正在代表内容所有者进行更改。 |
1import fetch from 'node-fetch'; 2import fs from 'fs'; 3 4const endpointUrl = new URL('https://www.googleapis.com/upload/youtube/v3/videos'); 5 6// 定义请求头参数 7const headerParameters = { 8 Authorization: 'Bearer {{ACCESS_TOKEN}}', 9 Accept: 'application/octet-stream', 10}; 11 12// 定义请求体参数 13const videoPath = fs.readFileSync('welcome.mp4'); 14 15const options = { 16 method: 'POST', 17 headers: headerParameters, 18 body: videoPath, 19}; 20 21// 发送 API 请求的函数 22async function uploadVideo() { 23 try { 24 const response = await fetch(endpointUrl, options); 25 printResponse(response); 26 } catch (error) { 27 printError(error); 28 } 29} 30 31uploadVideo();
| 字段名 | 类型 | 描述 |
|---|---|---|
| kind | 字符串 | 反映 API 调用的资源类型。 |
| etag | ETag | 包含资源的 ETag 标识。 |
| id | 字符串 | 包含分配给视频的唯一视频 ID。 |
| snippet | 对象 | 包含视频详情,如标题、描述、标签、分类等。 |
代码示例
1https://www.googleapis.com/upload/youtube/v3/thumbnails/set
| 参数名 | 类型 | 分类 | 描述 |
|---|---|---|---|
| videoId | 字符串 | 必需 | 表示要更新缩略图的视频 ID。 |
| onBehalfOfContentOwner | 字符串 | 可选 | 用于标识用户正在代表内容所有者进行更改。 |
1import fetch from 'node-fetch'; 2import fs from 'fs'; 3 4const endpointUrl = new URL('https://www.googleapis.com/upload/youtube/v3/thumbnails/set'); 5 6// 定义请求头参数 7const headerParameters = { 8 Authorization: 'Bearer {{ACCESS_TOKEN}}', 9 Accept: 'application/octet-stream', 10}; 11 12const queryParameters = new URLSearchParams({ 13 videoId: '{{VIDEO_ID}}', 14}); 15 16const thumbnailPath = fs.readFileSync('thumbnail.png'); 17 18const options = { 19 method: 'POST', 20 headers: headerParameters, 21 body: thumbnailPath, 22}; 23 24// 上传视频封面的函数 25async function uploadVideoBanner() { 26 try { 27 endpointUrl.search = queryParameters; 28 const response = await fetch(endpointUrl, options); 29 printResponse(response); 30 } catch (error) { 31 printError(error); 32 } 33} 34 35uploadVideoBanner();
| 字段名 | 类型 | 描述 |
|---|---|---|
| url | 字符串 | 包含缩略图的 URL 地址。 |
| width | 整数 | 包含图片的宽度。 |
| height | 整数 | 包含图片的高度。 |