実装: 動画

次の例は、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
  

動画をアップロード

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 オブジェクトも含まれています。

    次のリクエストは、動画のステータスを確認します。API 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