YouTube 频道
此包提供代理视频和短片的上传,评论,搜索,趋势,统计,播放列表管理和通过YouTube Data API的预定发布 googleapis. 持有该服务的代码也可以读取一批视频的状态(下级) (中文(简体) ).
安装
npm install @framers/agentos-ext-channel-youtube
同伴依赖 : @framers/agentos >=0.10.40。 。 。 .
使用量
import { AgentOS } from '@framers/agentos';
const agentos = await AgentOS.create({
extensionManifest: {
packs: [
{
package: '@framers/agentos-ext-channel-youtube',
options: { apiKey: process.env.YOUTUBE_API_KEY },
},
],
},
});
配置
| 选项 | 秘密编号 | 环境变量 | 需求 | 默认 |
|---|---|---|---|---|
apiKey | youtube.apiKey | 变量名称 apiKeyEnv,则 YOUTUBE_API_KEY,则 GOOGLE_API_KEY | 对 | 无 |
apiKeyEnv | 无 | 无 | 没有 | YOUTUBE_API_KEY |
oauth | 无 | 无 | 没有 | 全权证书如果填写完毕,则应予以解决,否则无 |
oauth.clientId | youtube.oauth.clientId | YOUTUBE_OAUTH_CLIENT_ID | 没有 | 无 |
oauth.clientSecret | youtube.oauth.clientSecret | YOUTUBE_OAUTH_CLIENT_SECRET | 没有 | 无 |
oauth.refreshToken | youtube.oauth.refreshToken | YOUTUBE_OAUTH_REFRESH_TOKEN | 没有 | 无 |
priority | 无 | 无 | 没有 | 50 |
secrets | youtube.apiKey, (中文(简体) ), youtube.oauth.clientId, (中文(简体) ), youtube.oauth.clientSecret, (中文(简体) ), youtube.oauth.refreshToken | 无 | 没有 | 无 |
API 密钥从选项中解析, 那么 options.secrets,然后是环境变量。 第一个环境检查用途 apiKeyEnv,默认为 YOUTUBE_API_KEY明确 oauth 对象覆盖 OAuth 秘密和环境分辨率。 否则,每个 OAuth 字段都会在其环境变量之前从秘密中解析出, OAuth 只有在全部字段解析后才能被启用. 这个 oauth 界面需要所有提供对象的字段.
工具
| 工具 | 它会做什么 |
|---|---|
youtubeUpload | 上传带有标题,描述,标签和隐私设置的视频. |
youtubeShort | 上传带有短字的短字 #Shorts 标签. |
youtubeComment | 张贴评论或对现有评论的答复. |
youtubeSearch | 按关键词搜索视频,频道或播放列表. |
youtubeTrending | 按地区和类别获取受欢迎的视频. |
youtubeAnalytics | 获取视频或频道性能衡量标准. |
youtubePlaylist | 创建、列出、添加视频或删除播放列表. |
youtubeSchedule | 上传一段私人录像,供预定公开出版. |
youtubeUpload
| 参数 | 类型 | 需求 | 说明 |
|---|---|---|---|
videoUrl | 字符串 | 对 | 要上传的视频文件的 URL |
title | 字符串 | 对 | 视频标题(最多) 100 字符数) |
description | 字符串 | 对 | 视频描述(最多) 5000 字符数) |
tags | 字符串 [] | 没有 | 可发现的视频标签 |
categoryId | 字符串 | 没有 | YouTube 分类 ID( 默认 ): 22、 人与博客) |
privacyStatus | 字符串 : public, (中文(简体) ), private, (中文(简体) ), unlisted | 没有 | 隐私状态( 默认 ): public(中文(简体) ) |
mimeType | 字符串 | 没有 | 视频 MIME 类型( 默认 ): video/mp4(中文(简体) ) |
youtubeShort
| 参数 | 类型 | 需求 | 说明 |
|---|---|---|---|
videoUrl | 字符串 | 对 | 短式视频文件的 URL |
title | 字符串 | 对 | 短标题(最多) 100 字符数) |
description | 字符串 | 没有 | 简短说明 |
tags | 字符串 [] | 没有 | 附加标记( 除此之外) #Shorts(中文(简体) ) |
privacyStatus | 字符串 : public, (中文(简体) ), private, (中文(简体) ), unlisted | 没有 | 隐私状态( 默认 ): public(中文(简体) ) |
youtubeComment
| 参数 | 类型 | 需求 | 说明 |
|---|---|---|---|
videoId | 字符串 | 对 | YouTube 视频标识 |
text | 字符串 | 对 | 注释文本 |
parentCommentId | 字符串 | 没有 | 回复注释的父注释 ID |
youtubeSearch
| 参数 | 类型 | 需求 | 说明 |
|---|---|---|---|
query | 字符串 | 对 | 搜索查询 |
type | 字符串 : video, (中文(简体) ), channel, (中文(简体) ), playlist | 没有 | 搜索类型( 默认 ): video(中文(简体) ) |
maxResults | 编号 | 没有 | 返回的最大结果( 默认值 : 10,最大值 : 50(中文(简体) ) |
order | 字符串 : relevance, (中文(简体) ), date, (中文(简体) ), rating, (中文(简体) ), viewCount, (中文(简体) ), title | 没有 | 排序顺序( 默认 ): relevance(中文(简体) ) |
regionCode | 字符串 | 没有 | ISO 3166-1α-2区域代码(例如, US, (中文(简体) ), GB(中文(简体) ) |
youtubeTrending
| 参数 | 类型 | 需求 | 说明 |
|---|---|---|---|
regionCode | 字符串 | 没有 | ISO 3166-1 α-2区域代码(默认: US(中文(简体) ) |
categoryId | 字符串 | 没有 | YouTube视频类ID(如:, 10 音乐, 17 体育部, 20 游戏) |
maxResults | 编号 | 没有 | 返回的最大结果( 默认值 : 20,最大值 : 50(中文(简体) ) |
youtubeAnalytics
| 参数 | 类型 | 需求 | 说明 |
|---|---|---|---|
type | 字符串 : video, (中文(简体) ), channel | 对 | 是否为视频或频道获取分析 |
videoId | 字符串 | 没有 | 视频 ID( 当需要时) type 实值 video(中文(简体) ) |
channelId | 字符串 | 没有 | 频道 ID( 可选 type channel,默认如果设置了 OAuth 频道) |
youtubePlaylist
| 参数 | 类型 | 需求 | 说明 |
|---|---|---|---|
action | 字符串 : create, (中文(简体) ), list, (中文(简体) ), listItems, (中文(简体) ), addVideo, (中文(简体) ), delete | 对 | 要执行的播放列表动作 |
title | 字符串 | 没有 | 播放列表标题( 创建需要) |
description | 字符串 | 没有 | 播放列表描述 |
privacyStatus | 字符串 : public, (中文(简体) ), private, (中文(简体) ), unlisted | 没有 | 隐私状态( 默认 ): public(中文(简体) ) |
playlistId | 字符串 | 没有 | 播放列表 ID( 需要 listItems, (中文(简体) ), addVideo, (中文(简体) ), delete(中文(简体) ) |
videoId | 字符串 | 没有 | 视频标识( 需要 addVideo(中文(简体) ) |
channelId | 字符串 | 没有 | 频道 ID( 列表可选, 默认为拥有频道) |
maxResults | 编号 | 没有 | 列表操作的最大结果 |
youtubeSchedule
| 参数 | 类型 | 需求 | 说明 |
|---|---|---|---|
videoUrl | 字符串 | 对 | 要上传的视频文件的 URL |
title | 字符串 | 对 | 视频标题(最多) 100 字符数) |
description | 字符串 | 对 | 视频描述(最多) 5000 字符数) |
publishAt | 字符串 | 对 | 预定公布时间的ISO 8601日期时间 |
tags | 字符串 [] | 没有 | 可发现的视频标签 |
categoryId | 字符串 | 没有 | YouTube 分类 ID( 默认 ): 22、 人与博客) |
mimeType | 字符串 | 没有 | 视频 MIME 类型( 默认 ): video/mp4(中文(简体) ) |
频道适配器
适配器注册平台 youtube. 激活初始化API服务,连接状态遵循其运行状态. 视频块触发 HTTPS URL 的上传;元数据来自 platformOptions.title, (中文(简体) ), platformOptions.tags, (中文(简体) ), platformOptions.categoryId 财务报告和审定财务报表 platformOptions.privacyStatus。标题回到视频字幕,然后 Untitled; 文本块在标题倒置前提供描述.
没有视频屏蔽, 发送评论使用 conversationId 作为视频标识和 replyToMessageId 作为可选父注释 ID。 空视频ID或评论文本抛出. 适配器存储事件处理器,但不会发出入境事件. 打字指标无用.
读取视频状态
YouTubeService.getVideosStatus(videoIds) 立即读取许多视频的状态并需要API密钥。 它召唤 videos.list 带部分 snippet, (中文(简体) ), status 财务报告和审定财务报表 contentDetails 每50个身份证一次,每个电话要一个配额单位,所以120个身份证要三个单位.
它为API返回的每段视频返回一行,顺序为所要求的ID. 两次被问到的id被读过一次,并有一行. 一个 ID API 返回什么也没有, 例如一个删除的或私有的视频, 没有行 。 一行人拿着录像 id 和这些字段,每个值如API给它,所以一个呼叫者检查一个值的类型本身:
| 编 | 字段 |
|---|---|
snippet | channelId, (中文(简体) ), channelTitle, (中文(简体) ), title, (中文(简体) ), description |
status | embeddable, (中文(简体) ), madeForKids, (中文(简体) ), privacyStatus |
contentDetails | caption, (中文(简体) ), duration, (中文(简体) ), contentRating |
排行中未包含 API 的字段 。 空列表不打电话。 一次失败的呼叫,其中被拒绝的配额,用API自己的错误拒绝,没有回行. 该方法存储什么也没有记录什么.
import { YouTubeService, type VideoStatusRow } from '@framers/agentos-ext-channel-youtube';
const youtube = new YouTubeService({ apiKey: process.env.YOUTUBE_API_KEY! });
await youtube.initialize();
const rows: VideoStatusRow[] = await youtube.getVideosStatus(['video-id-1', 'video-id-2']);
页:1
如果没有 API 密钥解析, 则创建包丢 。 上传,评论,播放列表创建,播放列表添加和播放列表删除需要OAuth认证,并在账户上更改内容. 列出账户自己的播放列表也需要OAuth. 通道分析需要 channelId 当OAuth不在的时候.
上传工具获取 HTTP 或 HTTPS 视频 URL 和对 API 的流响应 。 他们没有设置下载超时,检查没有HTTP响应状态,也没有执行方向处理. 服务默认上传到 public, (中文(简体) ), video/mp4 和博客类别 selfDeclaredMadeForKids 改为 false。 。 。 .
短片上传后添加 Shorts 转到标签和附件 #Shorts 在描述。 代码不验证持续时间或方向. 排程拒绝无效或过去的日期,然后上传到 private 隐私和 publishAt;它不使用本地出版计时器.
搜索、趋势和播放列表列名请求上限为 50 结果。 播放列表默认为 25 结果。 工具失败返回 success: false 和一个错误消息。 特定动作播放列表字段和视频分析ID在执行过程中被检查,尽管在他们的计划中是可选的.
释放
新版本发表于 架设层/剂-外延 由 GitHub Actions 通过 npm 信任的出版, 并附有出处声明 .
许可证
阿帕奇 - 2.0