구현: 동영상

다음 예에서는 YouTube Data API (v3)를 사용하여 동영상과 관련된 함수를 실행하는 방법을 보여줍니다.

채널의 업로드된 동영상 가져오기

이 예에서는 특정 채널에 업로드된 동영상을 가져옵니다. 이 예에는 두 단계가 있습니다.

이 예에서는 여러 신호를 결합하여 전반적인 인기도를 결정하는 알고리즘을 사용하여 선택되는 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 리소스 파트의 쉼표로 구분된 목록으로 설정합니다. 지원되는 파트는 snippet, statistics, contentDetails, id입니다.

비공개 동영상에 대해 이 메서드를 사용하려면 인증이 필요하지만 공개 동영상에는 필요하지 않습니다. 요청이 비공개 동영상의 데이터를 가져오는 경우 적절하게 승인되어야 합니다.

아래 요청은 동영상 ID VIDEO_ID_1 및 VIDEO_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 탐색기는 파일 업로드 기능을 지원하지 않으므로 이 설명은 실행 가능한 예시로 연결되지 않습니다. 다음 리소스는 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이 아닌 succeeded 또는 failed와 같은 값으로 변경됩니다.

    요청 본문은 video 리소스이며, 여기서 id 속성은 삭제하려는 동영상의 동영상 ID를 지정합니다. 이 예에서 리소스에는 recordingDetails 객체도 포함되어 있습니다.

    아래 요청은 동영상의 상태를 확인합니다. API 탐색기에서 요청을 완료하려면 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 탐색기에서 요청을 완료하려면 id 속성의 값을 설정해야 합니다.

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

크리에이터 주도형 브랜드 파트너 액세스 (CI BPA)를 사용하면 동영상 소유자가 동영상에 대한 액세스 권한을 브랜드 파트너 채널과 공유할 수 있습니다. 그러려면 brandPartner 파트가 필요합니다.

액세스 설정 (삽입)

동영상을 업로드할 때 액세스를 설정하려면 part 매개변수에 brandPartner를 포함하고 요청 본문에 brandPartner 객체를 제공합니다. 브랜드 채널을 식별하려면 channelId('UC'로 시작하는 외부 채널 ID) 또는 channelHandle('@'로 시작)을 지정해야 합니다.

POST /youtube/v3/videos?part=snippet,status,brandPartner
{
  "snippet": {
    "title": "Video Title",
    "description": "Video Description",
    "categoryId": "22"
  },
  "status": {
    "privacyStatus": "private"
  },
  "brandPartner": {
    "channelHandle": "@brandchannel"
  }
}

해결된 channelId만 응답으로 반환됩니다.

액세스 업데이트 또는 삭제 (업데이트)

다른 브랜드 채널에 대한 액세스를 업데이트하거나 액세스를 삭제하려면 part 매개변수에 brandPartner를 사용하여 videos.update 메서드를 호출합니다.

액세스를 바꾸려면 요청 본문에 새 channelId 또는 channelHandle을 제공합니다.

PUT /youtube/v3/videos?part=brandPartner
{
  "id": "VIDEO_ID",
  "brandPartner": {
    "channelId": "UC_SOME_BRAND_CHANNEL_ID"
  }
}

액세스를 삭제하려면 part 매개변수에 brandPartner가 포함된 요청을 보내되 요청 본문에는 빈 brandPartner 객체를 포함합니다.

PUT /youtube/v3/videos?part=brandPartner
{
  "id": "VIDEO_ID",
  "brandPartner": {}
}

맞춤 썸네일 이미지를 업로드하고 동영상에 설정

v3 API의 thumbnails.set 메서드를 사용하여 맞춤 썸네일 이미지를 업로드하고 동영상에 설정할 수 있습니다. 요청에서 videoId 매개변수의 값은 썸네일이 사용될 동영상을 식별합니다.

API 탐색기는 이 메서드의 요구사항인 미디어 파일 업로드 기능을 지원하지 않으므로 이 쿼리는 API 탐색기를 사용하여 테스트할 수 없습니다.

관련 코드 샘플: PHP, Python

동영상 삭제

이 예에서는 동영상을 삭제하는 방법을 보여줍니다. 이 예에는 다음 단계가 있습니다.

  • 1단계: 동영상 ID 가져오기

    위의 단계에 따라 업로드된 동영상을 가져옵니다. 현재 인증된 사용자의 채널에 이 목록은 각 동영상의 ID를 키로 사용하여 동영상 목록을 표시하는 데 사용할 수 있습니다.

    참고: 검색 결과를 가져오거나 재생목록에서 항목을 나열하는 등 동영상 ID를 가져오는 방법은 다양합니다. 하지만 동영상은 소유자만 삭제할 수 있으므로 API 요청을 승인하는 사용자가 소유한 동영상 목록을 가져오는 것이 이 프로세스의 첫 번째 단계일 가능성이 높습니다.

  • 2단계: 동영상 삭제

    videos.delete 메서드를 호출하여 특정 동영상을 삭제합니다. 요청에서 id 매개변수는 삭제하려는 동영상의 동영상 ID를 지정합니다. OAuth 2.0을 사용하여 요청을 승인해야 합니다. API 탐색기에서 이 쿼리를 테스트하는 경우 유효한 동영상 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을 사용하여 승인해야 합니다. 아래 링크는 API 탐색기에서 위의 JSON 객체를 로드합니다. 쿼리를 테스트하려면 유효한 동영상 ID로 videoId 속성 값을 대체해야 합니다. 이 요청을 제출하면 실제로 동영상에 신고가 제기됩니다.

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