youtube apiでできることを調べてみた

最近、youtubeのコメントデータを使って何かおもしろいことができないかなと考えており、まずそもそものyoutube APIでできること、できないことを調べてみようと思いました。

今回は、postmanを使用してyoutubeAPIにリクエストを送ってレスポンスを見ることでどういうデータを取得することができるかをまとめてみました。

ちなみに、youtube APIには無料利用枠があります。無料利用枠について知りたい方は、こちらの記事を参照してください。

postmanでyoutube apiの仕様を調査してみた。

それでは早速postmanを使ってyoutubeAPIを触ってみます。

動画を取得する(videoリソース)

まずは、動画を取得するリソースについてです。動画を取得する場合、videoリソースを使用します。

// API
https://www.googleapis.com/youtube/v3/videos
// params key: "自身のyoutubeAPI key" part:"snippet" chart: "mostPopular"

上記APIで帰ってきたレスポンスは以下になります。

{
    "kind": "youtube#videoListResponse",
    "etag": "Kb4_zdmUwJC5l_PSOmLdh9V6lvI",
    "items": [
        {
            "kind": "youtube#video",
            "etag": "tLox62Uu9y6LKSL6cX67FGfaoII",
            "id": "7_hVt4Eq0qw",
            "snippet": {
                "publishedAt": "2023-07-01T15:00:04Z",
                "channelId": "UCnmGIkw-KdI0W5siakKPKog",
                "title": "I Survived On €0.01 For 1 Week",
                "description": "1 penny. 1 week. 1 mission.\ndonate here - https://give.water.org/f/penny/",
                "thumbnails": {
                    "default": {
                        "url": "https://i.ytimg.com/vi/7_hVt4Eq0qw/default.jpg",
                        "width": 120,
                        "height": 90
                    },
                    "medium": {
                        "url": "https://i.ytimg.com/vi/7_hVt4Eq0qw/mqdefault.jpg",
                        "width": 320,
                        "height": 180
                    },
                    "high": {
                        "url": "https://i.ytimg.com/vi/7_hVt4Eq0qw/hqdefault.jpg",
                        "width": 480,
                        "height": 360
                    },
                    "standard": {
                        "url": "https://i.ytimg.com/vi/7_hVt4Eq0qw/sddefault.jpg",
                        "width": 640,
                        "height": 480
                    },
                    "maxres": {
                        "url": "https://i.ytimg.com/vi/7_hVt4Eq0qw/maxresdefault.jpg",
                        "width": 1280,
                        "height": 720
                    }
                },
                "channelTitle": "Ryan Trahan",
                "tags": [
                    "Ryan",
                    "Trahan",
                    "penny",
                    "challenge",
                    "europe",
                    "euro",
                    "I survived"
                ],
                "categoryId": "24",
                "liveBroadcastContent": "none",
                "localized": {
                    "title": "I Survived On €0.01 For 1 Week",
                    "description": "1 penny. 1 week. 1 mission.\ndonate here - https://give.water.org/f/penny/"
                },
                "defaultAudioLanguage": "en"
            }
        }...... (2つ目以降の動画情報)

階層を簡単に表示すると(簡単ではないですが…)、

  • kind: レスポンスの種類を示す識別子。
  • etag: リソースのETag(キャッシュのための識別子)。
  • items: ビデオのリスト。各ビデオには以下の情報が含まれています。
    • kind: リソースの種類を示す識別子。
    • etag: リソースのETag。
    • id: ビデオのID。
    • snippet: ビデオの基本情報を含むオブジェクト。
      • publishedAt: ビデオの公開日時。
      • channelId: ビデオが所属するチャンネルのID。
      • title: ビデオのタイトル。
      • description: ビデオの説明。
      • thumbnails: ビデオのサムネイル画像のオブジェクト。
      • channelTitle: ビデオが所属するチャンネルのタイトル。
      • tags: ビデオに関連付けられたタグのリスト。
      • categoryId: ビデオのカテゴリID。
      • liveBroadcastContent: ビデオのライブ配信コンテンツの状態。
      • localized: ローカライズされたビデオのタイトルと説明のオブジェクト。
      • defaultAudioLanguage: ビデオのデフォルトのオーディオ言語。

動画のコメントを取得する(commentThreadsリソース)

今回取得したい、youtubeのコメントリストを取得するリソースについて調査します。

// API
https://www.googleapis.com/youtube/v3/commentThreads
//params key: "自身のyoutubeAPI key" part:"snippet" videoId:"コメントを取得したい動画ID"

上記リクエストを送って、帰ってきたレスポンスが以下になります。

"items": [
        {
            "kind": "youtube#commentThread",
            "etag": "46mZjha1ClJf_VoBsNk5_E0yNgA",
            "id": "UgytAgLhdyvykF75Tix4AaABAg",
            "snippet": {
                "videoId": "wRulC6-vk5w",
                "topLevelComment": {
                    "kind": "youtube#comment",
                    "etag": "yvZdYAkaM6GQfmoVnsAnlmxjF_M",
                    "id": "UgytAgLhdyvykF75Tix4AaABAg",
                    "snippet": {
                        "videoId": "wRulC6-vk5w",
                        "textDisplay": "コメント",
                        "textOriginal": "コメント",
                        "authorDisplayName": "ユーザー名",
                        "authorProfileImageUrl": "https://yt3.ggpht.com/ytc/AGIKgqN47ekuUw244aCVOt8cv9sN90JvojTRgW1yBRZ0=s48-c-k-c0x00ffffff-no-rj",
                        "authorChannelUrl": "http://www.youtube.com/channel/"youtubeチャンネル名",
                        "authorChannelId": {
                            "value": "youtubeチャンネル名"
                        },
                        "canRate": true,
                        "viewerRating": "none",
                        "likeCount": 0,
                        "publishedAt": "2023-07-02T07:40:58Z",
                        "updatedAt": "2023-07-02T07:40:58Z"
                    }
                },
                "canReply": true,
                "totalReplyCount": 0,
                "isPublic": true
            }
        },
  • kind: リソースの種類を示す識別子。
  • etag: リソースのバージョンを表すタグ。
  • id: コメントスレッドのID。
  • snippet: コメントスレッドの詳細情報を含むオブジェクト。
    • videoId: コメントスレッドが関連付けられている動画のID。
    • topLevelComment: コメントスレッド内のトップレベルのコメントを表すオブジェクト。
      • kind: コメントの種類を示す識別子。
      • etag: コメントのバージョンを表すタグ。
      • id: コメントのID。
      • snippet: コメントの詳細情報を含むオブジェクト。
        • videoId: コメントが関連付けられている動画のID。
        • textDisplay: 表示用のコメントテキスト。
        • textOriginal: 元のコメントテキスト。
        • authorDisplayName: コメントの投稿者の表示名。
        • authorProfileImageUrl: コメントの投稿者のプロフィール画像のURL。
        • authorChannelUrl: コメントの投稿者のチャンネルURL。
        • authorChannelId: コメントの投稿者のチャンネルIDを含むオブジェクト。
          • value: チャンネルIDの値。
        • canRate: ユーザーがコメントに評価を付けることができるかどうかを示すブール値。
        • viewerRating: ユーザーがコメントに付けた評価。
        • likeCount: コメントの「いいね」の数。
        • publishedAt: コメントの投稿日時。
        • updatedAt: コメントの最終更新日時。
    • canReply: ユーザーがコメントスレッドに返信できるかどうかを示すブール値。
    • totalReplyCount: コメントスレッドに対する全体の返信数。
    • isPublic: コメントが公開されているかどうかを示すブール値。

特にコメントで使いそうなのはこの辺りかなって思います。

・コメントの中身を表示する

snippet.topLevelComment.snippet.textDisplay

・コメント投稿者ID

snippet.topLevelComment.snippet.authorChannelId.value

・コメントのいいね数

snippet.topLevelComment.likeCount

youtubeAPIで実装したいこと

下記が現在youtubeAPIを使って実装して見たいけど、未だ調査していない項目になります。

・ある動画のコメントを、いいねが多い順に抽出

・日本の全動画の中から1番いいねをもらったコメントを抽出

・ユーザーIDからそのユーザーのコメントを抽出

上記の内容も分かり次第記事に追加していこうと思います。

youtubeAPIのまとめ

今回、ポストマンで、youtubeAPIの中身を簡単にみてみました。

今後、railsでアプリを作成しようと思っているので今後はrailsアプリでのyoutubeAPIの試用方法についてもまとめていこうと思います!

コメント

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