Twitch API v5 を利用して人気のゲーム情報を取得する

Twitch API v5を利用して人気のゲーム情報を取得することができる。New Twitch APIでも可能だが、取得できるのは、現在の視聴数順にソートされたゲーム情報だけになる。v5はすでにdeprecatedなAPIとしてアナウンスされているが、ゲーム情報に加え、視聴数や配信チャンネル数も取得することができるため、New Twitch APIよりも利用価値が高い。

下記は、v5を利用して人気のゲーム情報を取得するコードの例。


class TwitchApi_v5_Client
{
  private $endpoint = 'https://api.twitch.tv/kraken/';

  private $oauthClientIdHeader;

  public function __construct($CLIENT_ID, $ACCESS_TOKEN = "")
  {
    $this->oauthClientIdHeader = "Client-ID: $CLIENT_ID";
  }

  public function get($resource, array $queryParams)
  {
    $url = $this->endpoint . $resource;

    if (!empty($queryParams))
      $url .= '?' . http_build_query($queryParams);

    $response = $this->execCurlGET($url);
    sleep(1);

    return json_decode($response, true);
  }

  private function execCurlGET($url)
  {
    $cmd = 'curl' .
           " -H 'Accept: application/vnd.twitchtv.v5+json'" .
           " -H '{$this->oauthClientIdHeader}'" .
           " -X GET '$url'";

    echo "# $cmd\n";

    return exec($cmd);
  }
}


$CLIENT_ID = '_CLIENT_ID_';
$client = new TwitchApi_v5_Client($CLIENT_ID);

$params = [
  //'limit' => 100,
  //'offset' => 0,
];

$response = $client->get('games/top', $params);
var_dump($response);

v5で人気のゲーム情報を取得するには、下記のURLに対してGETリクエストを送信すれば良い。

https://api.twitch.tv/kraken/games/top

リクエスト時のクエリパラメータとして、limit パラメータを指定すると、APIレスポンスに含める結果の件数を変更することができる。デフォルトは 10 で10件のゲーム情報がレスポンスとして返される。最大値は 100 までとなる。

また、offset パラメータを指定することにより、レスポンスデータのページネーションを行うことができる。デフォルトでは、0 が設定され、1ページ目の結果がレスポンスとして返される。2ページ目以降の結果を取得するには、この値をインクリメントしていけば良い。

APIリクエスト実行後、レスポンスデータの top フィールドにゲーム情報(game オブジェクト)が含まれている。viewers プロパティがそのゲームの現在の視聴数、channels プロパティが現在配信しているチャンネル数を表す。現在の視聴数とチャンネル数は、New Twitch APIではレスポンスデータに含まれないため、これらのデータを取得したい場合は、v5を利用する必要がある。