YouTube 동영상에 댓글 달기 in Golang
Requirements
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 설정에서 채널을 만들어야 합니다.
절차
1. 코드 다운로드
$ git clone https://github.com/Doarakko/api-challenge
$ cd api-challenge/youtube-data-api
2. CLIENT_ID 및 CLIENT_SECRET 입력
미리 Google Cloud Console에서 만든 자격 증명을 입력합니다.
$ 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", "おもしろい!")
}
Video ID는 동영상 URL의 다음 위치입니다.
4. 빌드
$ go build -o main
5. 실행
$ ./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
)를 건네주어야합니다.중첩되어 있어 이해하기 어렵지만, 문서 보면서 에디터의 보완 기능과 정의 점프 사용하면 간단합니다.
덤
이어 코멘트에 대한 회신도 해보겠습니다.
코멘트와 회신에서 사용하는 메소드가 다르므로 주의해 주세요.
아래에서는 좋아하는 사람의 수가 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 Client 작성 코드는 공식 샘플을 그대로 사용했습니다.
작성한 토큰을 로컬에 저장하고 두 번째 이후에는 로컬을 참조합니다.
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 Data API 관련으로 기사를 쓰고 있으므로 참고해 보세요.
결론
테스트에서 댓글을 달 때 수동으로 삭제하는 것이 번거롭기 때문에 대상 동영상에서 자신의 댓글을 완전히 삭제하는 함수를 작성하는 것이 좋았습니다.
Reference
Reference
이 문제에 관하여(YouTube 동영상에 댓글 달기 in Golang), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Doarakko/items/2abc70df1a6b5533f07d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)