**api 키를 발급 받지 않으셨다면, 이쪽을 참고하셔서 먼저 발급 받아주세요.**
https://healer4-13.tistory.com/12
Github 코드 : https://github.com/jeetkd/golang_youtube_api/
그 다음 유튜브 api를 사용하기 위해서 go get 해줘야 합니다.
현재 프로젝트로 이동하고, go get google.golang.org/api/youtube/v3 명령어로 패키지를 다운로드 해줍니다.
package main
import (
"context"
"flag"
"fmt"
"google.golang.org/api/option"
"google.golang.org/api/youtube/v3"
"log"
)
func main() {
//Set up API Key and playlistID(API 키와 playlistID 설정)
apiKey := flag.String("api-key", "Put your api key(자신의 api 키를 넣어주세요)", "YouTube API 키")
playlistID := flag.String("playlist-id", "Put playlist ID(플레이리스트 ID를 넣어주세요)", "재생목록 ID")
flag.Parse()
//Create Service(서비스 생성)
ctx := context.Background()
service, err := youtube.NewService(ctx, option.WithAPIKey(*apiKey))
reqPlaylist := service.PlaylistItems.List([]string{"snippet"}). // Set up snippet option
PlaylistId(*playlistID). //Set up playlistID
MaxResults(50) //Set up Max Result
// Do Excute "youtube.playlistItems.list"(PlaylistItemListResponse를 응답으로 받음)
resPlaylist, err := reqPlaylist.Do()
if err != nil {
log.Fatalf("Error fetching playlist items: %v", err.Error())
}
// Get playlist Items(재생 목록과 비디오 ID를 가져옴)
for _, playlistItem := range resPlaylist.Items {
title := playlistItem.Snippet.Title
videoId := playlistItem.Snippet.ResourceId.VideoId
fmt.Printf("%v, (%v)\r\n", title, videoId)
}
}
apiKey := flag.String 함수에 두번째 인자(Put your api key)에 자신의 api 키를 넣어주시면 됩니다.
playlistID := flag.String 함수에 두번째 인자(Put playlist ID)에 원하시는 재생목록의 ID를 넣어주세요.
빨간색 박스가 재생목록 ID 입니다.
이제 재생목록을 가져오기 위해서는 Service를 생성해야 하는데요
ctx := context.Background()
service, err := youtube.NewService(ctx, option.WithAPIKey(*apiKey))
youtube.NewService(ctx, option.WithAPIKey(*apiKey)) 함수를 사용해서 생성 합니다.
첫 번째 인자는 Context이고, 두 번째 인자는 구글 API 클라이언트에 대한 clientOption 입니다. WithAPIKey를 사용하여 apiKey에 대한 clientOption을 반환해 줍니다.
reqPlaylist := service.PlaylistItems.List([]string{"snippet"}). // Set up snippet option
PlaylistId(*playlistID). //Set up playlistID
MaxResults(50) //Set up Max Result
https://developers.google.com/youtube/v3/docs/playlists/list?hl=ko
**위 공식 문서 참조.**
반환된 Service를 통해서 List 메소드를 통해 API 응답 하위 속성("snippet")을 셋팅해 줍니다.
PlaylistId(*playlistID) : 재생목록의 리스트를 반환하는 재생목록의 ID를 설정
MaxResults(50) : 반환하는 항목의 수를 설정(0이상 50이하)
resPlaylist, err := reqPlaylist.Do()
reqPlaylist.Do() : "youtube.playlistItems.list"를 실행하고 PlaylistItemListResponse 구조체를 반환합니다.
PlaylistItemListResponse 구조체에 Items에 반환된 재생목록들의 정보가 있습니다.
for _, playlistItem := range resPlaylist.Items {
title := playlistItem.Snippet.Title
videoId := playlistItem.Snippet.ResourceId.VideoId
fmt.Printf("%v, (%v)\r\n", title, videoId)
}
resPlaylist.Items를 통해서 반환된 정보를 가져오고 Snippet에서 정보들을 가져옴.
제목과 비디오id를 출력 합니다.
'프로그래밍 > Go(golang) 프로그래밍' 카테고리의 다른 글
Go[golang] Youtube api를 사용하여 비공개 재생목록 가져오기 4편(OAuth2.0 인증 사용) (0) | 2023.07.15 |
---|---|
Go[golang] Youtube api를 사용하여 비공개 재생목록 가져오기 3편(OAuth 인증 준비) (0) | 2023.07.13 |
Go[golang] Youtube api를 사용하여 공개 재생목록 가져오기 1편(API 키 준비) (0) | 2023.07.11 |
Go[golang] 제네릭 tilde(~) (0) | 2022.12.22 |
Goland에서 *File.Close() 메소드를 찾지 못하는 문제 (0) | 2022.10.14 |