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
Package youtube provides access to the YouTube Data API v3.

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

API_KEY="xxxxxxxxxxxxxxxxxxxxxxxxx"

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

package main

import (
    "context"
    "fmt"
    "log"
    "os"

    "github.com/joho/godotenv"

    "google.golang.org/api/option"
    "google.golang.org/api/youtube/v3"
)

// .envからAPIキーの取得
func getApiKey() string {
    err := godotenv.Load()
    if err != nil {
        log.Fatalf("Unable to read env file: %v", err)
    }

    apiKey := os.Getenv("API_KEY")
    return apiKey
}

func handleError(err error, message string) {
    if message == "" {
        message = "Error making API call"
    }
    if err != nil {
        log.Fatalf(message + ": %v", err.Error())
    }
}

// queryを使って動画の検索
// 検索結果のヒット数を出力
func searchByKeyword(service *youtube.Service, part string, query string) {
    call := service.Search.List([]string{part}). // 検索
                    Q(query). // 検索クエリ
                    Type("video"). // 検索対象の種類
                    Order("viewCount"). // 検索結果を閲覧数でソート
                    MaxResults(5) // 取得する検索結果の動画数の最大
    response, err := call.Do()

    handleError(err, "")

    fmt.Printf("%s: %d\n", query, response.PageInfo.TotalResults)
}

func main() {
    ctx := context.Background()
    apiKey := getApiKey()

    // APIキーを使ってクライアントの作成
    service, err := youtube.NewService(ctx, option.WithAPIKey(apiKey))

    handleError(err, "Error creating YouTube client")

    queries := [...] string{
        `"HHKB Professional HYBRID Type-S"`,
        `"NuPhy Air75"`,
        `"MX Keys Mini"`,
    }

    for _, query := range queries {
        searchByKeyword(service, "snippet", query)
    }
}

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

Search: list  |  YouTube Data API  |  Google for Developers

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

Search: list  |  YouTube Data API  |  Google for Developers

参考

タイトルとURLをコピーしました