GoでYoutube Data APIを使ってみる

2023.09.02
2024.03.24
プログラミング
GoYouTube Data API

本ページはAmazonアフィリエイトのリンクを含みます。

はじめに

Go で YouTube Data API を使ってみます。

YouTube Data API

YouTube Data API を使うと、YouTube に関する様々な操作が可能です。

可能な操作は下記になります。動画の検索やチャンネルの取得、動画のコメントやプレイリストの取得など様々なことが可能です。

API Reference  |  YouTube Data API  |  Google for Developers

API Reference  |  YouTube Data API  |  Google for Developers

準備

まずは、YouTube Data API を使うための事前準備をします。GCP のプロジェクトがあることを前提としています。

API ライブラリから"YouTube Data API v3"を検索します。

"有効にする"をクリックして、API を有効化します。

API を呼び出すための API キーを作成します。

作成した API キーを YouTube Data API のみ制限しておきます。

Go で YouTube Data API

次に、Go で YouTube Data API を使っていきます。

Go では下記のパッケージが用意されています。

youtube package - google.golang.org/api/youtube/v3 - Go Packages

まずは作成した API キーを.envに追加しておきます。

1API_KEY="xxxxxxxxxxxxxxxxxxxxxxxxx"

下記が YouTube Data API を使って、動画を検索し、そのヒット数を出力するサンプルです。

1package main
2
3import (
4	"context"
5	"fmt"
6	"log"
7	"os"
8
9	"github.com/joho/godotenv"
10
11	"google.golang.org/api/option"
12	"google.golang.org/api/youtube/v3"
13)
14
15// .envからAPIキーの取得
16func getApiKey() string {
17	err := godotenv.Load()
18	if err != nil {
19		log.Fatalf("Unable to read env file: %v", err)
20	}
21
22	apiKey := os.Getenv("API_KEY")
23	return apiKey
24}
25
26func handleError(err error, message string) {
27	if message == "" {
28		message = "Error making API call"
29	}
30	if err != nil {
31		log.Fatalf(message + ": %v", err.Error())
32	}
33}
34
35// queryを使って動画の検索
36// 検索結果のヒット数を出力
37func searchByKeyword(service *youtube.Service, part string, query string) {
38	call := service.Search.List([]string{part}). // 検索
39					Q(query). // 検索クエリ
40					Type("video"). // 検索対象の種類
41					Order("viewCount"). // 検索結果を閲覧数でソート
42					MaxResults(5) // 取得する検索結果の動画数の最大
43	response, err := call.Do()
44
45	handleError(err, "")
46
47	fmt.Printf("%s: %d\n", query, response.PageInfo.TotalResults)
48}
49
50func main() {
51	ctx := context.Background()
52	apiKey := getApiKey()
53
54	// APIキーを使ってクライアントの作成
55	service, err := youtube.NewService(ctx, option.WithAPIKey(apiKey))
56
57	handleError(err, "Error creating YouTube client")
58
59	queries := [...] string{
60		`"HHKB Professional HYBRID Type-S"`,
61		`"NuPhy Air75"`,
62		`"MX Keys Mini"`,
63	}
64
65	for _, query := range queries {
66		searchByKeyword(service, "snippet", query)
67	}
68}

設定できるパラメータは下記で確認できます。

Search: list  |  YouTube Data API  |  Google for Developers

Search: list  |  YouTube Data API  |  Google for Developers

検索 API のレスポンスは下記で確認できます。

Search: list  |  YouTube Data API  |  Google for Developers

Search: list  |  YouTube Data API  |  Google for Developers

参考

Support

\ この記事が役に立ったと思ったら、サポートお願いします! /

buy me a coffee
Share

Profile

author

Masa

都内のIT企業で働くエンジニア
自分が学んだことをブログでわかりやすく発信していきながらスキルアップを目指していきます!

buy me a coffee