**api 키를 발급 받지 않으셨다면, 이쪽을 참고하셔서 먼저 발급 받아주세요.**

https://healer4-13.tistory.com/12

 

Go[golang] Youtube api를 사용하여 플레이리스트 가져오기 1편(API 키 준비)

Youtube api를 사용하기 위해서는 먼저 구글 클라우드 플랫폼에서 프로젝트를 생성해줘야 합니다. https://console.cloud.google.com/getting-started 링크로 들어가셔서 구글로 로그인 해주세요. 1. 프로젝트 선

healer4-13.tistory.com

 

Github 코드 : https://github.com/jeetkd/golang_youtube_api/

 

GitHub - jeetkd/golang_youtube_api: golang youtube api use

golang youtube api use. Contribute to jeetkd/golang_youtube_api development by creating an account on GitHub.

github.com

그 다음 유튜브 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

빨간색 박스가 재생목록 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 

 

Playlists: list  |  YouTube Data API  |  Google for Developers

Playlists: list 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. API 요청 매개변수와 일치하는 재생목록의 모음을 반환합니다. 예를 들어 인증된 사용자가 보유

developers.google.com

**위 공식 문서 참조.**

반환된 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를 출력 합니다.

 

결과 화면

 

+ Recent posts