다음 코드 샘플은 Go용 Google API 클라이언트 라이브러리를 사용하며 YouTube Data API에 사용할 수 있습니다. 이 코드 샘플들은 GitHub의 YouTube API 코드 샘플 리포지토리의 go
폴더에서 받으실 수 있습니다.
내 업로드 검색
아래의 코드 샘플은 API의 playlistItems.list
메소드를 호출하여 요청과 관련된 채널에 업로드된 동영상 목록을 검색합니다. 이 코드는 mine
매개변수를 true
로 설정하고 channels.list
메소드를 호출하여 채널에 업로드된 동영상을 식별하는 재생목록 ID도 검색할 수 있습니다.
package main import ( "flag" "fmt" "log" "google.golang.org/api/youtube/v3" ) func main() { flag.Parse() client, err := buildOAuthHTTPClient(youtube.YoutubeReadonlyScope) if err != nil { log.Fatalf("Error building OAuth client: %v", err) } service, err := youtube.New(client) if err != nil { log.Fatalf("Error creating YouTube client: %v", err) } // Start making YouTube API calls. // Call the channels.list method. Set the mine parameter to true to // retrieve the playlist ID for uploads to the authenticated user's // channel. call := service.Channels.List("contentDetails").Mine(true) response, err := call.Do() if err != nil { // The channels.list method call returned an error. log.Fatalf("Error making API call to list channels: %v", err.Error()) } for _, channel := range response.Items { playlistId := channel.ContentDetails.RelatedPlaylists.Uploads // Print the playlist ID for the list of uploaded videos. fmt.Printf("Videos in list %s\r\n", playlistId) nextPageToken := "" for { // Call the playlistItems.list method to retrieve the // list of uploaded videos. Each request retrieves 50 // videos until all videos have been retrieved. playlistCall := service.PlaylistItems.List("snippet"). PlaylistId(playlistId). MaxResults(50). PageToken(nextPageToken) playlistResponse, err := playlistCall.Do() if err != nil { // The playlistItems.list method call returned an error. log.Fatalf("Error fetching playlist items: %v", err.Error()) } for _, playlistItem := range playlistResponse.Items { title := playlistItem.Snippet.Title videoId := playlistItem.Snippet.ResourceId.VideoId fmt.Printf("%v, (%v)\r\n", title, videoId) } // Set the token to retrieve the next page of results // or exit the loop if all results have been retrieved. nextPageToken = playlistResponse.NextPageToken if nextPageToken == "" { break } fmt.Println() } } }