GoでYoutube Data APIを使ってみる
はじめに
Go で YouTube Data API を使ってみます。
YouTube Data API
YouTube Data API を使うと、YouTube に関する様々な操作が可能です。
可能な操作は下記になります。動画の検索やチャンネルの取得、動画のコメントやプレイリストの取得など様々なことが可能です。
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
検索 API のレスポンスは下記で確認できます。
Search: list | YouTube Data API | Google for Developers
参考
- YouTube Data API | Google for Developers
- API Reference | YouTube Data API | Google for Developers
- Go クイックスタート | YouTube Data API | Google for Developers
- Search: list | YouTube Data API | Google for Developers
- youtube package - google.golang.org/api/youtube/v3 - Go Packages