在 Golang 中评论 YouTube 视频
使用YouTube数据API,在Golang中对视频进行评论(回复)。
需求
-
- Golang
github.com/joho/godotenv
google.golang.org/api/googleapi/transport
google.golang.org/api/youtube/v3
Google OAuth Client ID
Google Cloud Console から作成してください
Application type は Other
做好预备工作
1. 库的安装
$ go get github.com/joho/godotenv
$ go get google.golang.org/api/googleapi/transport
$ go get google.golang.org/api/youtube/v3
2. 创建频道
如果您直接使用Google帐号登录YouTube,则无论是否生成了OAuth Client ID,都无法通过验证。
您需要在YouTube的设置中创建频道。

操作步骤 xù)
1. 下载代码 -mǎ)
$ git clone https://github.com/Doarakko/api-challenge
$ cd api-challenge/youtube-data-api
输入 CLIENT_ID 和 CLIENT_SECRET
在使用谷歌云控制台之前,需要填写在谷歌云控制台上创建的认证信息。
$ mv .env.example .env
CLIENT_ID = ghijk.apps.googleusercontent.com
CLIENT_SECRET = lmnopqr
在直接编写代码时,它也可以正常运行,但如果错误地上传到 GitHub 上会很麻烦,因此我们使用 .env 文件。
3. main.go 被修正
func main() {
err := godotenv.Load("./.env")
if err != nil {
log.Fatal("Error loading .env file")
}
comment("enter video id", "おもしろい!")
}
视频ID是视频URL中的以下部分。

4. 建造
$ go build -o main
执行
$ ./main

解说
- comment.go
func comment(videoID string, message string) {
service := newYoutubeService(newOAuthClient())
commentThread := &youtube.CommentThread{
Snippet: &youtube.CommentThreadSnippet{
VideoId: videoID,
TopLevelComment: &youtube.Comment{
Snippet: &youtube.CommentSnippet{
TextOriginal: message,
},
},
},
}
call := service.CommentThreads.Insert("id,snippet", commentThread)
_, err := call.Do()
if err != nil {
log.Fatalf("%v", err)
}
log.Printf("Comment to %v\n", videoID)
}
在进行评论时,需要传递评论结构体(commentThread)。
嵌套的结构可能有点难懂,但是在查看文档的同时使用编辑器的自动补全和定义跳转功能,就会变得简单。
给你的额外好处
我顺便试着回复一下评论。
请注意,评论和回复使用的方法是不同的。
-
- コメント
CommentThreads: insert
返信
Comments: insert
对于点赞数超过100的评论,我们会回复”哈哈哈”。
1. 修复main.go。
func main() {
err := godotenv.Load("./.env")
if err != nil {
log.Fatal("Error loading .env file")
}
for _, item := range getComments("enter video id") {
likeCnt := item.Snippet.TopLevelComment.Snippet.LikeCount
if likeCnt >= 100 {
commentID := item.Snippet.TopLevelComment.Id
reply(commentID, "わろた")
log.Printf("Reply to %v\n", item.Snippet.TopLevelComment.Snippet.TextDisplay)
}
}
}
使用 getComments 函数获取视频评论的参数,并对点赞数大于 100 的评论执行 reply 函数。
请在回复时指定要回复的评论 ID。
2. 建立
$ go build -o main
3. 进行
$ ./main

提示
我直接使用了官方示例代码来创建OAuth客户端。
将创建的令牌保存在本地,并在第二次及以后的使用中参考本地。
cacheFile := tokenCacheFile(config)
token, err := tokenFromFile(cacheFile)
if err != nil {
token = tokenFromWeb(ctx, config)
saveToken(cacheFile, token)
} else {
log.Printf("Using cached token %#v from %q", token, cacheFile)
}
请参考我关于Golang和YouTube数据API的其他相关文章。
最后
因为在考试中手动删除评论很麻烦,所以我应该在目标视频中编写一个能够完全删除自己评论的函数。
参考资料
- Youtube のコメントを取得する in Golang