実装: 動画

次の例は、YouTube Data API(v3)を使用して動画に関連する関数を実行する方法を示しています。

チャンネルのアップロード動画を取得する

この例では、特定のチャンネルにアップロードされた動画を取得します。この例には次の 2 つのステップがあります。

この例では、YouTube で最も人気のある動画のリストを取得する方法を示します。このリストは、さまざまなシグナルを組み合わせて全体的な人気度を判断するアルゴリズムを使用して選択されます。

人気動画のリストを取得するには、videos.list メソッドを呼び出し、chart パラメータの値を mostPopular に設定します。mostPopular チャートには、急上昇の音楽、映画、ゲームの動画が表示されます。

必要に応じて、次のパラメータを設定できます。

  • regionCode: 指定した地域で動画のリストを返すよう API に指示します。パラメータ値は ISO 3166-1 alpha-2 の国コードです。i18nRegions.list メソッドを使用すると、YouTube がサポートしているリージョン コードのリストを取得できます。
  • videoCategoryId: 最も人気のある動画を取得する動画カテゴリを指定します。videoCategories.list メソッドを使用すると、YouTube がサポートするカテゴリ ID のリストを取得できます。

たとえば、次のリクエストは、スペインで最も人気のあるスポーツ動画を取得します。

https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.videos.list?
        part=snippet
        &chart=mostPopular
        &regionCode=es
        &videoCategoryId=17
  

バッチ動画の統計情報を取得する

この例では、videos.batchGetStats メソッドを使用して、動画のリストの統計情報を取得します。

このメソッドを使用するには、リクエストの id パラメータを、統計情報を取得する YouTube 動画 ID のカンマ区切りのリストに設定します。part パラメータの値を、レスポンスに含める videoStat リソース パーツのカンマ区切りのリストに設定します。サポートされているパーツは、snippetstatisticscontentDetailsid です。

このメソッドを非公開動画に対して使用する場合は認証が必要ですが、公開動画に対して使用する場合は必要ありません。リクエストで非公開動画のデータを取得する場合は、適切に承認する必要があります。

次のリクエストでは、動画 ID VIDEO_ID_1VIDEO_ID_2 の統計情報を取得します。

https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.videos.batchGetStats?
        part=snippet,statistics
        &id=VIDEO_ID_1,VIDEO_ID_2

動画をアップロード

API Explorer ではファイルをアップロードできないため、この説明は実行可能な例にリンクしていません。次のリソースは、v3 API を使用して動画をアップロードできるようにアプリケーションを変更する際に役立ちます。

  • API の videos.insert メソッドのドキュメントには、さまざまなプログラミング言語を使用して動画をアップロードする方法を説明するコードサンプルがいくつか含まれています。

  • 再開可能なアップロード ガイドでは、再開可能なアップロード プロセスを使用して動画をアップロードする際にアプリケーションが使用する HTTP リクエストのシーケンスについて説明します。このガイドは主に、Google API クライアント ライブラリ(一部のライブラリでは再開可能なアップロードがネイティブでサポートされています)を使用できないデベロッパーを対象としています。

  • 動画のアップロードの JavaScript の例では、CORS(クロスオリジン リソース シェアリング)を使用して、ウェブページから動画ファイルをアップロードする方法を示しています。v3 API が使用する CORS アップロード ライブラリは、再開可能なアップロードをネイティブにサポートしています。また、この例では、video リソースの processingDetails 部分を取得してアップロードされた動画のステータスを確認する方法と、アップロードされた動画のステータス変更を処理する方法も示しています。

アップロードした動画のステータスを確認する

この例では、アップロードされた動画のステータスを確認する方法を示します。アップロードされた動画は、認証済みユーザーのアップロード済み動画フィードにすぐに表示されます。ただし、動画が処理されるまで YouTube には表示されません。

  • ステップ 1: 動画をアップロードする

    videos.insert メソッドを呼び出して動画をアップロードします。リクエストが成功すると、API レスポンスには、アップロードされた動画の一意の動画 ID を識別する video リソースが含まれます。

  • ステップ 2: 動画のステータスを確認する

    videos.list メソッドを呼び出して、動画のステータスを確認します。id パラメータの値をステップ 1 で取得した動画 ID に設定します。part パラメータの値を processingDetails に設定します。

    リクエストが正常に処理されると、API レスポンスに video リソースが含まれます。processingDetails.processingStatus プロパティの値を確認して、YouTube で動画の処理がまだ行われているかどうかを判断します。YouTube で動画の処理が完了すると、プロパティの値は processing 以外の値(succeededfailed など)に変わります。

    リクエスト本文は video リソースです。このリソースの id プロパティで、削除する動画の動画 ID を指定します。この例では、リソースに recordingDetails オブジェクトも含まれています。

    次のリクエストは、動画のステータスを確認します。APIs Explorer でリクエストを完了するには、id プロパティの値を設定する必要があります。

    https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.videos.list?
            part=snippet,processingDetails
            &id=VIDEO_ID

注: アプリケーションは API をポーリングして、新しくアップロードされた動画のステータスを定期的に確認できます。動画の処理が完了すると、アプリケーションは動画のステータスに応じて、掲示板を作成したり、他のアクションに進んだりできます。

動画の更新

この例では、動画を更新して、動画の撮影日時と場所に関する情報を追加する方法を示します。この例の手順は次のとおりです。

  • ステップ 1: 動画 ID を取得する

    上記の手順に沿って、現在認証されているユーザーのチャンネルのアップロードされた動画を取得します。このリストは、各動画の ID をキーとして使用して、動画のリストを表示するために使用できます。

    注: 検索結果を取得したり、再生リスト内のアイテムを一覧表示したりするなど、動画 ID を取得する方法は他にも多数あります。ただし、動画を更新できるのは所有者のみであるため、このプロセスの最初のステップとして、API リクエストを承認したユーザーが所有する動画のリストを取得することが考えられます。

  • ステップ 2: 動画を更新する

    videos.update メソッドを呼び出して、特定の動画を更新します。part パラメータの値を recordingDetails に設定します(パラメータの値は、更新する動画のメタデータ フィールドによって異なります)。

    リクエスト本文は video リソースです。このリソースの id プロパティで、更新する動画の動画 ID を指定します。この例では、リソースに recordingDetails オブジェクトも含まれています。

    次のリソースの例は、動画が 2013 年 10 月 30 日にボストンで録画されたことを示しています。

    {
      "id": "VIDEO_ID",
      "recordingDetails": {
        "location": {
          "latitude": "42.3464",
          "longitude": "-71.0975"
        }
        "recordingDate": "2013-10-30T23:15:00.000Z"
      }
    }

    API Explorer でリクエストを完了するには、id プロパティの値を設定する必要があります。

    https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.videos.update?
            part=snippet

カスタム サムネイル画像をアップロードして動画に設定する

v3 API の thumbnails.set メソッドを使用すると、カスタム サムネイル画像をアップロードして動画に設定できます。リクエストでは、videoId パラメータの値で、サムネイルが使用される動画を指定します。

このクエリは、API Explorer ではテストできません。API Explorer では、このメソッドの要件であるメディア ファイルのアップロードがサポートされていないためです。

関連するコードサンプル: PHPPython

動画の削除

この例では、動画を削除する方法を示します。この例の手順は次のとおりです。

  • ステップ 1: 動画 ID を取得する

    上記の手順に沿って、現在認証されているユーザーのチャンネルのアップロードされた動画を取得します。このリストは、各動画の ID をキーとして使用して、動画のリストを表示するために使用できます。

    注: 検索結果を取得したり、再生リスト内のアイテムを一覧表示したりするなど、動画 ID を取得する方法は他にも多数あります。ただし、動画は所有者しか削除できないため、このプロセスの最初のステップとして、API リクエストを承認したユーザーが所有する動画のリストを取得することが考えられます。

  • ステップ 2: 動画を削除する

    videos.delete メソッドを呼び出して、特定の動画を削除します。リクエストでは、id パラメータで削除する動画の動画 ID を指定します。リクエストは OAuth 2.0 を使用して承認する必要があります。API Explorer でこのクエリをテストする場合は、id パラメータの値に有効な動画 ID を代入する必要があります。

    https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.videos.delete?
            id=VIDEO_ID
    

嫌がらせ行為の動画を報告する

この例は、不適切なコンテンツを含む動画を報告する方法を示しています。この例では、次の手順を行います。

  • ステップ 1: 動画が報告された理由を説明する ID を取得する

    承認済みのリクエストを videoAbuseReportReasons.list メソッドに送信して、動画を報告する有効な理由のリストを取得します。以下の videoAbuseReportReason リソースのサンプルには、スパムや誤解を招くコンテンツを含む動画を報告するための情報が含まれています。

    {
      "kind": "youtube#videoAbuseReportReason",
      "etag": "\"tbWC5XrSXxe1WOAx6MK9z4hHSU8/Or2VqBIilpHU7j__oPzUFCvGVBw\"",
      "id": "S",
      "snippet": {
        "label": "Spam or misleading",
        "secondaryReasons": [
          {
            "id": "27",
            "label": "Spam or mass advertising"
          },
          {
            "id": "28",
            "label": "Misleading thumbnail"
          },
          {
            "id": "29",
            "label": "Malware or phishing"
          },
          {
            "id": "30",
            "label": "Pharmaceutical drugs for sale"
          },
          {
            "id": "31",
            "label": "Other misleading info"
          }
        ]
      }
    }

    リソースに示すように、この理由は二次的な理由のリストに関連付けられています。スパムが含まれている動画を報告する場合は、理由の ID を指定する必要があります。また、二次的な理由も指定することを強くおすすめします。

  • ステップ 2: 不適切なコンテンツとして動画を報告する

    videos.reportAbuse メソッドに承認済みリクエストを送信して、動画を実際に報告します。リクエスト本文は、フラグが付けられた動画とフラグが付けられた理由の両方を特定する JSON オブジェクトです。手順 1 で説明したように、理由の種類によっては、二次的な理由がサポートされており、強く推奨されています。

    JSON オブジェクトの videoId プロパティは、報告される動画を識別します。

    次の JSON オブジェクトの例では、スパムまたは誤解を招くコンテンツを含む動画、具体的には誤解を招くサムネイル画像を使用している動画にフラグを設定しています。上記の JSON オブジェクトの例に示すように、スパムまたは誤解を招くコンテンツの ID は S です。誤解を招くサムネイルの ID は 28 です。

    {
      "videoId": "VIDEO_ID",
      "reasonId": "S",
      "secondaryReasonId": "28",
      "comments": "Testing the video flagging feature.",
      "language": "en"
    }

    videos.reportAbuse リクエストは OAuth 2.0 を使用して承認する必要があります。次のリンクをクリックすると、上記の JSON オブジェクトが APIs Explorer に読み込まれます。クエリをテストするには、videoId プロパティの値を有効な動画 ID に置き換える必要があります。このリクエストを送信すると、実際に動画にフラグが付けられますのでご注意ください。

    https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.videos.reportAbuse