YoutubuAPIでチャンネルの情報を取得する
YoutubeAPIでチャンネルの情報を取得してみる
とりあえずブログネタにとYoutubeAPIの使い方がわかっている部分だけでも記事にしてみようかと
まずはチャンネルの情報を取得するということで、取得するためにはチャンネルのIDか、ユーザ名が必要になります
チャンネルとユーザIDに関しては、YoutubeのチャンネルのURLから取得できます
上の記事に場所を書いてるのでそこから取ってきてもらえれば
ユーザ名の場合も同じ箇所にあります
UCから始まってたらチャンネル
それ以外ならユーザ名と考えて多分大丈夫です
リクエストの送信先URL
YoutubeAPIは言ってしまえば指定されたURLに指定されたパラメータを送ると、Json形式で値が返ってくるというものです
REST APIになるんですかね?
まあともかく、チャンネルの情報を取得するためのURLはこちら
https://www.googleapis.com/youtube/v3/channels
で、このURLを叩けばそれだけでチャンネル情報が送られるわけではなく、要はどのチャンネルの情報が欲しいかを指定しないといけないわけです
なので欲しいチャンネルまたはユーザ名をGETパラメータに指定する必要があります
パラメータ名はチャンネルの場合はid
ユーザ名の場合はforUsernameになります
それに加えて、チャンネルのどの情報が欲しいか、というのも指定します
パラメータ名はpart
指定できる値は複数あるのですが、とりあえず使用したものだけ書き出すとsnippet、contentDetails,statisticsの3つです
これに関しては後で補足しますが、どれがなんの情報かわからない場合は、一つずつ指定して一度中身を見てみて、どの値を使用したときにどんな値が返ってきているかを確認してみるといいです
値自体は複数指定できるので、試してはいませんが、使用できる値すべてを指定してリクエストを送信すれば、取得できるパラメータすべてが返ってくるかと思います
じゃあとりあえず全部指定すればいいんじゃないか?と思うかもしれませんが、YoutubeAPIでは一日に取得できる情報量に限りがあるため、常にすべての情報を取得し続けると制限にかかる可能性がでてくるかもしれません
※ちなみにバイト数ではなくクエリーという単位での制限なので、例えば説明文がものすごく長いチャンネルの情報を取得してくるのと、ほとんど何も登録されていないチャンネルの情報を取得するのは等価なはずです
最期に一つ、YoutubeAPIにアクセスするためのキーをパラメータにセットする必要があります
パラメータ名はkey
セットするキーはGoogle Developers Consoleから取得する必要があります
以上のパラメータを設定したURLにリクエストを送信すると、Json形式でチャンネルの情報が返ってきます
一応、例としてURLを書いておきます
チャンネル用
https://www.googleapis.com/youtube/v3/channels?part=snippet&id=チャンネルID&key=APIキー
ユーザ用
https://www.googleapis.com/youtube/v3/channels?part=snippet&forUsername=ユーザ名&key=APIキー
partを複数指定する場合はカンマ区切り
https://www.googleapis.com/youtube/v3/channels?part=snippet,contentDetails,statistics&id=チャンネルID&key=APIキー
リクエスト結果
返ってきた情報を載せようと思ったら量が多かったので抜粋します
例えば上記の結果にはチャンネルのサムネイル画像のURLが記載されています
サイトのチャンネルの画像はここから取得しているわけです
上記2つの結果は、それぞれpartで指定したcontentDetailsとstatisticsの情報ですね
statisticsの方で取得できるのは動画の再生数や動画数などです
contentDetailsのほうは使用したのはuploadsの部分だけです
これがチャンネルの動画を取得するために必要になってくるので、保持しておく必要性があります
まとめ
とりあえずチャンネルの情報を取得する方法を書いてみました
APIって聞くとなんだか難しいように思えるかもしれませんが、URL叩いてるだけだと書くと簡単に思えるんじゃないでしょうか
取得したJsonデータの使用法は言語によって変わるので、お使いの言語に合わせた使用方法で中の値を取得しましょう
phpを使用するのであれば、返ってきたjson文字列をjson_decode関数に突っ込めば、オブジェクトで返ってくるのでアクセスも簡単です
次やるときはプレイリストから動画情報を取得する流れをやります
基本チャンネル情報取得するのと処理は変わらないです。要はURLを叩くだけですね、はい